Call processing method and device, storage medium, electronic equipment and program product

By disconnecting the agent session that was unsuccessful due to poor network quality in the call center system and assigning the second agent, combined with the advance connection of the preset auxiliary agent, the call connection failure problem caused by poor network environment is solved, and the system is improved Adaptability and user experience.

CN119155390APending Publication Date: 2024-12-17MASHANG CONSUMER FINANCE CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411238683.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-09-04
Publication Date
2024-12-17

AI Technical Summary

Technical Problem

In call center systems, when the network quality is poor, the call connection between the server and the agent is prone to failure, resulting in poor user experience and reducing the system's adaptability to different network environments.

Method used

After establishing a session between the server and the first agent, if the handshake message is not received within a certain period of time, the session is disconnected and the second agent is assigned to the call request to reduce the probability of the call connection failure and advance through the preset auxiliary agent Establish a call connection with the server to avoid failure of calls in a weak network environment.

Benefits of technology

It improves the successful reach rate of customer seat transfer, improves the adaptability of the call center system to different network quality environments, and ensures the stability and user experience of call connections.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119155390A_ABST
    Figure CN119155390A_ABST
Patent Text Reader

Abstract

The invention relates to a call processing method and device, a storage medium, electronic equipment and a program product. The method comprises the following steps: in response to a first call request, distributing a first seat for the first call request; establishing a session with the first seat; if a handshake message sent by the first seat is not received in a first time period, a session with the first seat is disconnected, and a starting moment of the first time period comprises a first moment when the session is successfully established or a second moment later than the first moment; and distributing a second seat for the first call request.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of communications, and in particular, to a call processing method, device, storage medium, electronic device, and program product. Background Art

[0002] As an important bridge between enterprises and customers, call centers accept inbound and outbound calls through multiple channels such as voice and text, providing users with a good service experience. Call centers are usually composed of call center systems, management personnel, human seats, call terminals, network equipment, etc., and provide services such as hotlines, telemarketing, and telephone return calls.

[0003] Call center calls are made by forwarding the voice of the customer and the agent to the other end through the server. There are many choices for the call terminal on the agent side, such as mobile phones, hardware IP phones, software IP phones, and web agents. Among them, web agents refer to web pages that implement call functions such as answering and making calls. Manual agents can use this web page to make calls. It is generally integrated into the business system, so that agents can complete business in one stop and improve work efficiency. Summary of the invention

[0004] The purpose of the present disclosure is to provide a call processing method, device, storage medium, electronic device and program product.

[0005] In a first aspect, a call processing method is provided, which is applied to a server, and the method includes: In response to a first call request, assigning a first seat to the first call request; Establishing a session with the first agent; If the handshake message sent by the first agent is not received within a first time period, the session with the first agent is disconnected, and the start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time; A second agent is allocated for the first call request.

[0006] In a second aspect, a call processing device is provided, the device comprising: A first seat allocation module, configured to allocate a first seat to the first call request in response to the first call request; A session establishing module, used to establish a session with the first agent; a session control module, configured to disconnect the session with the first agent if the handshake message sent by the first agent is not received within a first time period, wherein the start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time; The second seat allocation module is used to allocate a second seat to the first call request.

[0007] In a third aspect, a computer-readable storage medium is provided, on which a computer program is stored, and when the program is executed by a processor, the steps of the method described in the first aspect of the present disclosure are implemented.

[0008] In a fourth aspect, an electronic device is provided, including: a memory having a computer program stored thereon; A processor is used to execute the computer program in the memory to implement the steps of the method described in the first aspect of the present disclosure.

[0009] In a fifth aspect, a computer program product is provided, comprising a computer program, which, when executed by a processor, implements the steps of the method described in the first aspect of the present disclosure.

[0010] It can be seen that in an embodiment of the present disclosure, after a session is successfully established between the server and the first agent, if no handshake message sent by the first agent is received within a first time period, it indicates that the network quality between the server and the first agent is poor. In this case, if the call connection between the server and the first agent continues to be established, the call connection may fail. In this case, the present disclosure disconnects the session with the first agent and allocates a second agent to the first call request in order to establish a call connection with the second agent. This can reduce the probability of call connection failure between the server and the agent, improve the one-time successful contact rate of the customer transferring to the agent, and also improve the adaptability of the call center system to different network quality environments.

[0011] Other features and advantages of the present disclosure will be described in detail in the following detailed description. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The accompanying drawings are used to provide a further understanding of the present disclosure and constitute a part of the specification. Together with the following specific embodiments, they are used to explain the present disclosure but do not constitute a limitation of the present disclosure. In the accompanying drawings: Figure 1 It is a schematic diagram of a process of establishing a call connection between a media server and a web terminal provided in the related art.

[0013] Figure 2 The present invention is a flowchart of a call processing method according to an exemplary embodiment.

[0014] Figure 3 The figure is a flow chart of a DTLS handshake between an agent and a server according to an exemplary embodiment.

[0015] Figure 4 is based on Figure 2The illustrated embodiment shows a flow chart of a call processing method.

[0016] Figure 5 is based on Figure 4 The illustrated embodiment shows a flow chart of a call processing method.

[0017] Figure 6 The diagram is a call sequence diagram of an incoming call scenario according to an exemplary embodiment.

[0018] Figure 7 is based on Figure 2 The illustrated embodiment shows a flow chart of a call processing method.

[0019] Figure 8 The present invention is a block diagram of a call processing device according to an exemplary embodiment.

[0020] Fig. 9 is based on Figure 8 The illustrated embodiment shows a block diagram of a call processing device.

[0021] Fig.10 is based on Figure 8 The illustrated embodiment shows a block diagram of a call processing device.

[0022] Fig.11 It is a block diagram of an electronic device according to an exemplary embodiment. DETAILED DESCRIPTION

[0023] The specific implementation of the present disclosure is described in detail below in conjunction with the accompanying drawings. It should be understood that the specific implementation described herein is only used to illustrate and explain the present disclosure, and is not used to limit the present disclosure.

[0024] The present disclosure is mainly used in scenarios where calls are made with users based on a call center system. In this scenario, it is necessary to forward the voices of the user and the agent to the other end through a media server for telephone communication. The related technology provides a call center web call solution based on a FreeSWITCH media server + WebRTC (Web Real-Time Communications) web terminal. For example, the call process of an agent outbound call scenario based on a FreeSWITCH media server + WebRTC web terminal is as follows: the media server first calls the web agent, then calls the customer, and then bridges the call between the two parties, and forwards the voice media streams of both parties to the other end. Among them, the process of the media server calling the web agent is the process of the media server establishing a call connection with the web terminal.

[0025] For example, Figure 11 is a schematic diagram of a process of establishing a call connection between a media server and a web terminal provided in the related art. The web terminal can be understood as the terminal where the web seat is located. Figure 1 As shown, in the process of establishing a call connection between the media server and the web terminal, the first step is: the media server and the web terminal exchange SDP (Session Description Protocol) to confirm the voice media session parameters of the two parties, including media type, media format, media address, etc. The second step: through the ICE (Interactive Connectivity Establishment) protocol, the media server and the web terminal perform reachability detection and confirm the communication address. The third step: the media server and the web terminal perform key exchange. Through DTLS (Datagram Transport Layer Security), the web terminal and the media server determine the voice media encryption algorithm and exchange voice media keys. The fourth step: the web terminal and the media server perform encrypted voice media data communication.

[0026] However, in the case of a poor network environment, the call connection between the media server and the web terminal will fail with a certain probability, resulting in a single call or even neither party being able to hear the other party's voice. In addition, even if the call connection between the media server and the web terminal is successful, the sound will be intermittent due to the poor network environment, which will also affect the communication between the agent and the customer, resulting in a poor user experience.

[0027] The present disclosure provides a call processing method, device, storage medium, electronic device and program product to solve the above technical problems. The specific implementation of the present disclosure is described in detail below in conjunction with the accompanying drawings.

[0028] Figure 2 FIG. 1 is a flowchart of a call processing method according to an exemplary embodiment. The method can be applied to a server of a call center system (such as a FreeSWITCH media server). Figure 2 As shown, the method comprises the following steps: In step S201, in response to a first call request, a first agent is allocated to the first call request.

[0029] In a possible embodiment, the first call request may include a call request initiated by a user. After receiving the first call request initiated by the user, the server may notify CTI (Computer Telephony Integration) to assign an agent to the first call request. For example, CTI may assign a first agent to the first call request based on a preset ACD (Automatic Call Distribution) strategy.

[0030] In another possible embodiment, the first call request may also include an outbound call request initiated by an agent. In this case, the first agent is the web agent who initiates the outbound call request.

[0031] In step S202, a session is established with the first agent.

[0032] The establishing of the session with the first agent may include establishing a SIP (Session Initiation Protocol) session with the first agent.

[0033] For example, after allocating the first agent to the first call request, the server can establish a session with the first agent in the following manner: the server sends an INVITE request to the first agent, and the INVITE request includes relevant information of the session, for example, exchanging SDP (Session Description Protocol) with the first agent through the INVITE request to confirm the voice media session parameters of both parties of the call, including media type, media format, media address, etc. If the first agent accepts the INVITE request, it can send a SIP 200OK response message to the server to agree to establish the session. Therefore, in this step, when the server receives the SIP 200OK response message sent by the first agent, it is deemed that the session with the first agent is successfully established.

[0034] In step S203, if the handshake message sent by the first agent is not received within the first time period, the session with the first agent is disconnected. The start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time.

[0035] If you want to establish a call connection between the server and the first seat, after the session is successfully established between the server and the first seat, you also need to establish a media data transmission channel between the server and the first seat. Among them, establishing a media data transmission channel includes confirming the communication address and exchanging secret keys. Figure 1As shown in the figure, the server and the first seat can perform reachability detection through the ICE protocol to confirm the communication address. In the key exchange process, the server can determine the voice media encryption algorithm with the first seat through DTLS and perform the voice media key exchange process (as shown in the figure). Figure 1 Step 3 shown).

[0036] The process of exchanging keys between the server and the first agent includes four handshakes. In a weak network, one or more of the four handshakes of DTLS may fail due to packet loss, which may further cause the call connection between the server and the first agent to fail. If packet loss occurs in the fourth handshake, a single connection will result.

[0037] In order to solve the problem of call connection failure between a server and a first agent due to poor network quality, the present invention discloses that during the process of exchanging keys with the first agent, if the server does not receive a handshake message sent by the first agent within a first time period, the session with the first agent can be disconnected, and a second agent is allocated to the first call request so as to establish a call connection with the second agent, thereby reducing the probability of call connection failure between the server and the agent.

[0038] In one embodiment of the present disclosure, the handshake message may include a first handshake message sent by the first agent to the server for the first time. In another embodiment, the handshake message includes a first response message, the first response message is a response message fed back by the first agent to the server in response to the second handshake message, and the second handshake message is a handshake message sent by the server to the first agent.

[0039] The first handshake message may be a handshake message corresponding to the first handshake in the four-way handshake process of DTLS. The first response message may include a handshake message corresponding to the third handshake in the four-way handshake process of DTLS, or include a response message of the first agent to the last handshake message sent by the server. The second handshake message may include a handshake message corresponding to the second handshake in the four-way handshake process of DTLS, or include a handshake message corresponding to the fourth (i.e., the last) handshake in the four-way handshake process of DTLS.

[0040] In addition, the starting time of the first time period may include the first time when the session is successfully established, for example, the first time may be the time when the server receives the SIP 200OK response message sent by the first agent. The starting time of the first time period may also be a second time later than the first time. For example, the second time may be the time when the server sends the handshake message to the first agent during the second handshake in the four-way handshake process of DTLS, or the second time may be the time when the server sends the handshake message to the first agent during the fourth handshake in the four-way handshake process of DTLS.

[0041] It should be noted that, in the present disclosure, for each handshake message sent by the first agent to the server, the server can determine whether the handshake message is received within the first time period. If it is determined that the handshake message is not received within the first time period, the session with the first agent can be disconnected, and the second agent can be assigned to the first call request. In addition, in the present disclosure, for a handshake message sent by the first agent to the server once or several times, the server can determine whether the handshake message is received within the first time period. If it is determined that the handshake message is not received within the first time period, the session with the first agent can be disconnected, and the second agent can be assigned to the first call request.

[0042] In step S204, a second agent is allocated to the first call request.

[0043] In the process of allocating the second seat for the first call request, the server may notify CTI to reallocate the seat for the first call request according to the traditional ACD strategy. Considering that in a weak network environment, if a conventional seat is still used, the possibility of call connection failure occurring again is high. Therefore, in one implementation of the present disclosure, an auxiliary seat (i.e., the "preset auxiliary seat" mentioned below) may be pre-set, and then the preset auxiliary seat may be directly allocated as the second seat for the first call request. It should be noted that in order to ensure that the call between the preset auxiliary seat and the server can be successfully connected, the seat sign-in method of the preset auxiliary seat may be modified. For example, after the preset auxiliary seat completes the same seat registration process as the conventional seat through the registration server, the CTI may actively dispatch the server to initiate an outbound call to the preset auxiliary seat, thereby realizing the call between the preset auxiliary seat and the server being connected in advance, thereby avoiding the situation in which the call connection with the server fails in a weak network environment due to the delayed operation of initiating a call when the traffic is allocated.

[0044] After establishing a call connection between the server and the agent (the first agent or the second agent), RTP (Real-time Transport Protocol) stream data can be transmitted between the server and the agent, so as to further realize telephone communication by forwarding the voice of the user and the agent to the other end through the server.

[0045] By adopting the above method, after a session is successfully established between the server and the first agent, if no handshake message sent by the first agent is received within the first time period, it indicates that the network quality between the server and the first agent is poor. In this case, if the call connection between the server and the first agent continues to be established, the call connection may fail. In this case, the present invention disconnects the session with the first agent and allocates a second agent to the first call request so as to establish a call connection with the second agent. This can reduce the probability of call connection failure between the server and the agent, improve the one-time successful contact rate of the customer transferring to the agent, and also improve the adaptability of the call center system to different network quality environments.

[0046] In a possible embodiment of the present disclosure, the handshake message includes a first handshake message sent by a first agent to a server for the first time, and the first handshake message includes at least one of the following: a data security protocol and a data processing algorithm supported by the first agent, and a first random number generated by the first agent, and the first random number is used to generate a data transmission key between the first agent and the server.

[0047] In another possible embodiment of the present disclosure, the handshake message includes a first response message, the first response message is a response message fed back by the first agent to the server in response to the second handshake message, the second handshake message is a handshake message sent by the server to the first agent; the second moment is the sending moment of the second handshake message.

[0048] Here, the handshake message (i.e., the second handshake message) sent by the server to the first seat may include a third response message, or the first message; wherein the third response message is a response message sent by the server to the first seat based on the first handshake message; the third response message includes at least one of the following: a data security protocol confirmed by the server, a data processing algorithm, a second random number generated by the server, and a public key certificate of the server, the second random number being used to generate a data transmission key between the first seat and the server; the first message being used to indicate the data transmission key used by the server. For example, in the second handshake in the DTLS handshake link, the server sends the third response message to the first seat; in the fourth handshake in the DTLS handshake link, the server sends the first message to the first seat.

[0049] In addition, for the handshake message sent by the server to the first agent, the response message fed back by the first agent may include a second message or a third message; wherein the second message includes the data transmission key used by the first agent; and the third message includes the first real-time transport protocol RTP data packet. For example, in the third handshake in the DTLS handshake link, the first agent sends the second message to the server. In response to receiving the first message sent by the server in the fourth handshake, the first agent sends the third message to the server.

[0050] Figure 3 is a schematic diagram of a process of performing a DTLS handshake between an agent and a server according to an exemplary embodiment, and the agent may include a first agent. Figure 3 Taking the DTLS handshake process and the messages transmitted during the DTLS handshake process as an example, the following will be specifically described. Figure 3 As shown, during the first handshake, the first agent sends a first handshake message to the server. The first handshake message can also be called a data encryption policy indication message (for example, it can be expressed as a "ClientHello message"). The message can be transmitted in plain text. The first handshake message specifically includes the protocol version of the data security protocol supported by the first agent, the encryption suite, the compression algorithm, and the first random number R1 generated by the first agent, the extension field, etc. Among them, the encryption suite can generally include an authentication algorithm (Au), a key exchange algorithm (KeyExchange), a symmetric encryption algorithm, and an information digest algorithm. In this way, the encryption suite and the compression algorithm can be sent to the server as a data processing algorithm.

[0051] like Figure 3As shown, in response to receiving the first handshake initiated by the first seat, the server initiates a second handshake and sends a third response message to the first seat during the second handshake. The third response message can be transmitted in plain text and includes the version of the data security protocol confirmed by the server, the encryption suite confirmed by the server, the compression algorithm, and the second random number R2 generated by the server. Among them, the encryption suite and the compression algorithm are the data processing algorithms confirmed by the server. The encryption suite here is consistent with the encryption suite transmitted during the first handshake, and will not be repeated here. During the second handshake, the server can also send its own public key certificate (i.e., "Certificate") to the first seat. In addition, during the second handshake, the server can also selectively send the server's secret key exchange algorithm and a request message for obtaining the first seat's public key certificate to the first seat. For example, in a scenario with high security requirements, the server can authenticate the identity of the first seat, so it initiates a request to obtain the first seat's public key certificate. Since the second handshake may contain some optional options, the server can send a Server Hello Done message to notify the first seat that the second handshake process initiated by the server is over.

[0052] In the actual call establishment scenario, after receiving Server Hello Done, the first agent does not immediately initiate the third handshake. Instead, it first verifies the validity and authenticity of the public key certificate sent by the server. If the verification fails during this process, a corresponding error is thrown; if the verification passes, a random number Pre-master (which can be called the "third random number") is generated.

[0053] Continue with Figure 3 For example, the first agent initiates the third handshake. During the third handshake, the first agent sends a second message to the server. The second message is used to indicate the data transmission key used by the first agent. The second message may include the PreMaster Key encrypted with the server public key. In this way, after the first agent sends the encrypted PreMaster Key to the server, the server can use its own private key to decrypt and obtain the random number Pre-master. At this point, the first agent and the server both have three random numbers R1, R2 and Pre-master. The first agent and the server use the same key generation algorithm to generate a data transmission key based on the three random numbers R1, R2 and Pre-master. The data transmission key is used for symmetric encryption of data transmitted between the first agent and the server after the handshake is completed.

[0054] The second message may also include a first key usage notification message and a first handshake data encryption message, wherein the first key usage notification message is used to notify the server that all subsequent messages sent to the server will be encrypted using the data transmission key negotiated by the two parties. The first handshake data encryption message is obtained by the first agent generating a summary of the previous handshake message using a negotiated summary algorithm, and then encrypting the summary with the negotiated data transmission key. The first agent transmits the first handshake data encryption message as the first encrypted message to the server, and the server uses the negotiated data transmission key for decryption. If the decryption is successful, it means that the negotiated keys are consistent.

[0055] In addition, if during the second handshake, the server sends a request message to the first agent for obtaining the first agent's public key certificate, during the third handshake, the first agent can also send the first agent's public key certificate to the server, and the server will also verify the validity and authenticity of the certificate after receiving the public key certificate.

[0056] like Figure 3 As shown, when performing the fourth handshake, the server sends a first message to the first agent, and the first message is used to indicate the data transmission key used by the server. For example, the first message may include a second key usage notification message and a second handshake data encryption message, wherein the second key usage notification message is used to notify the first agent that subsequent messages sent to the first agent will be encrypted using the data transmission key negotiated by the two. The second handshake data encryption message is similar to the first handshake data encryption message mentioned above, except that the second handshake data encryption message is a message generated by the server to confirm that the data transmission keys negotiated by the two are consistent. At this point, the four-way handshake of DTLS is completed, and then when the server receives the first RTP data packet sent by the first agent, it confirms that the call connection between the first agent and the server is successful.

[0057] In the case where the handshake message is the first handshake message sent by the first agent to the server for the first time, the starting time of the first time period is the first time when the session is successfully established. In this way, the server starts timing when it determines that the session with the first agent is successfully established (i.e., the first time). If the first handshake message is not received within the first time period, it indicates that the communication network quality between the server and the first agent is not good at this time, and the session with the first agent can be disconnected, and the second agent can be allocated for the first call request to establish a call connection with the second agent. The first time may include, for example, the time when the server receives the SIP 200OK response message sent by the first agent.

[0058] In the case where the handshake message is the first response message, the starting time of the first time period is the time when the second handshake message is sent (i.e., the second time). In this way, the server can start timing from the time when the second handshake message is sent to the first agent. If the first response message is not received within the first time period, it indicates that the communication network quality between the server and the first agent is not good at this time. The session with the first agent can be disconnected, and a second agent can be assigned to the first call request in order to establish a call connection with the second agent.

[0059] It should be noted that in the second handshake in the DTLS handshake link, the server sends the third response message to the first seat. Therefore, if the second handshake message is the third response message, the first response message is the second message that the first seat feeds back to the server in response to the third response message during the third handshake in the DTLS handshake link. In the fourth handshake in the DTLS handshake link, the server sends the first message to the first seat. Therefore, if the second handshake message is the first message, the first response message is the third message that the first seat sends to the server in response to receiving the first message sent by the server during the fourth handshake, and the third message includes the first RTP data packet.

[0060] For example, Figure 3 As shown, in response to receiving the first handshake message sent by the first seat, the server initiates the second handshake and sends the third response message to the first seat during the second handshake. In the case of good network quality, the first seat can normally receive the third response message, and in response to receiving the third response message, the first seat initiates the third handshake and sends the second message to the server. Therefore, the timing can be started when the server sends the third response message to the first seat through the second handshake. If the second message fed back by the first seat in response to the third response message is not received within the first time period, it is considered that the network quality between the server and the first seat is not good, and the SIP session with the first seat can be disconnected; in addition, if the second message fed back by the first seat in response to the third response message is received within the first time period, it is determined that the first three handshakes between the server and the first seat are successful. In response to receiving the second message, the server initiates the fourth handshake to the first seat, and through the fourth handshake, the server sends the first message to the first seat. Similarly, the first agent can start timing when the server sends the first message to the first agent. When the network quality is good, the server can receive the first RTP data packet sent by the first agent to the server within the first time period when the timing starts. Therefore, the timing starts when the server sends the first message to the first agent through the fourth handshake. If the first RTP data packet fed back by the first agent for the first message is not received in the first time period, it is regarded that the network quality between the server and the first agent is poor, and the SIP session with the first agent can be disconnected.

[0061] In addition, during the process of disconnecting the session with the first agent, the server may directly hang up the first agent by sending a sip bye message to the first agent, and notify the CTI to reassign an agent for the first call request, so as to establish a call connection with the server based on the reassigned second agent. The sip bye message is used to indicate disconnection of the session with the first agent.

[0062] It should be noted that the “first time period” in the present disclosure and the “second time period” in the following text are both in millisecond level, or smaller unit level.

[0063] Figure 4 is based on Figure 2 The embodiment shown is a flowchart of a call processing method, such as Figure 4 As shown, in the case where the handshake message includes the first response message, in the process of disconnecting the session with the first agent in step S203, the following sub-steps may be performed: In step S2031, a third handshake message is sent to the first agent.

[0064] like Figure 3 As shown, the third handshake message may be the third response message fed back by the server to the first agent through the second handshake; or, it may be the first message fed back by the server to the first agent through the fourth handshake.

[0065] In step S2032, if no second response message is received from the first agent in response to the third handshake message within the second time period, and the number of times the server sends handshake messages to the first agent is greater than or equal to the preset number, the session with the first agent is disconnected, and the start time of the second time period is the time when the third handshake message is sent.

[0066] Taking into account that a weak network or network jitter generally does not last too long or is only a momentary state, therefore, for the case where the handshake message is the first response message (the first response message is the response message that the first agent feeds back to the server in response to the second handshake message, and the second handshake message is the handshake message sent by the server to the first agent), after the server sends the second handshake message to the first agent, if the first response message of the first agent to the second handshake message is not received within the first time period starting from the second moment, the server can send a handshake message to the first agent again (i.e., the third handshake message), and wait again for the second response message of the first agent to the third handshake message. The time is counted from the time when the third handshake message is sent. If the second response message is received within the second time period, it indicates that the network corresponding to the first agent has returned to normal, and the first agent can continue to be used to establish a call connection with the server. If the second response message is not received within the second time period, and the number of times the server sends handshake messages to the first agent is greater than or equal to the preset number of times, it indicates that the network quality between the first agent and the server continues to be poor. In order to avoid the failure of establishing the call connection, it is necessary to disconnect the session with the first agent and re-assign the second agent to the first call request in order to establish a call connection with the second agent. Among them, the preset number of times can be greater than or equal to 2, for example, the preset number of times can be 2 or 3, and the specific value of the preset number of times can be set based on actual business needs, and the present disclosure does not limit this.

[0067] In one implementation, after the server sends the second handshake message to the first agent (corresponding to the messages sent during the second handshake and the fourth handshake, respectively), the second handshake message can be cached. In this way, if the first response message of the first agent to the second handshake message is not received during the second time period, the third handshake message can be sent to the first agent again based on the cache.

[0068] In addition, if the second response message is not received within the second time period, and the number of times the server sends handshake messages to the first agent is less than the preset number, the step of sending a third handshake message to the first agent may be performed again (ie, step S2031).

[0069] Figure 5 is based on Figure 4 The embodiment shown is a flowchart of a call processing method, such as Figure 5 As shown, the method further comprises the following steps: In step S205, if a second response message fed back by the first agent to the third handshake message is received within the second time period, a call connection with the first agent is established.

[0070] If the second response message is received within the second time period, it indicates that the network corresponding to the first agent has returned to normal, and the server can establish a call connection with the first agent.

[0071] In step S206, in response to the completion of the call between the first agent and the user, the call between the first agent and the server is controlled to continue for a first preset time period.

[0072] It is understandable that although the second response message of the first seat to the third handshake message is received within the second time period, the server receives the second response message only after the server re-sends the handshake message to the first seat (retransmits once or multiple times). Therefore, the network quality corresponding to the first seat still has the risk of instability. In this case, in order to avoid the DTLS handshake process between the first seat and the server from being unsuccessful when another call request is connected to the first seat, the call between the first seat and the server can be controlled to continue for the first preset duration starting from the moment the call between the first seat and the user is completed.

[0073] For example, after the first agent completes the call with the user, only the call between the server and the user can be disconnected, and the call between the server and the first agent is not disconnected. Instead, the first agent is transferred to a specific dialing plan of the server to listen to the hold music, etc. In this way, when a new call request is subsequently assigned to the first agent, the first agent can be directly bridged with the user terminal of the new call request through the server to avoid the call connection failure caused by network instability. This mode can last for a first preset time, which can be set according to actual needs and is not limited by the present disclosure. For example, the first preset time can be 15 minutes.

[0074] The specific implementation of step S204 is introduced below.

[0075] In one implementation of the present disclosure, when allocating a second seat to a first call request, a preset auxiliary seat may be allocated to the first call request. That is, the second seat includes a preset auxiliary seat, wherein the preset auxiliary seat is a seat that has established a call connection with the server before being allocated the first call request.

[0076] Different from regular seats, the preset auxiliary seat does not participate in the traditional ACD seat allocation strategy. The preset auxiliary seat is an agent that has established a call connection with the server before being assigned the first call request. After the preset auxiliary seat is assigned to the first call request, the first call request can be directly placed in the waiting queue of the preset auxiliary seat.

[0077] In a possible implementation, when the need to transfer to the preset auxiliary agent is triggered, a preset flag can be set in the seat allocation indication message sent by the server to the CTI. The preset flag is used to instruct the CTI to no longer follow the traditional ACD strategy when allocating an agent for the first call request, but to directly put the first call request into the waiting queue of the preset auxiliary agent.

[0078] It should be noted that the call connection between the preset auxiliary seat and the server can be successfully guaranteed by modifying the seat sign-in method of the preset auxiliary seat. Specifically, after the preset auxiliary seat completes the same seat registration process as the regular seat through the registration server, CTI can actively dispatch the server to initiate an outbound call to the preset auxiliary seat, thereby realizing the early establishment of the call connection between the preset auxiliary seat and the server. For example, the SIP session negotiation, STUN (Session Traversal Utilities for NAT) detection and DTLS key exchange between the preset auxiliary seat and the server can be completed in advance before the preset auxiliary seat is assigned traffic, thereby avoiding the failure of the call connection with the server in a weak network environment caused by the delayed operation of initiating a call when the traffic is assigned.

[0079] That is, before the preset auxiliary seat is assigned to the first call request, the preset auxiliary seat can be called through the server, so that the preset auxiliary seat can establish a call with the server before the call is assigned. In this way, when the preset auxiliary seat is assigned to the first call request, the server and the preset auxiliary seat have successfully established a call connection, thereby avoiding the situation where the call establishment with the server fails in a weak network environment.

[0080] It should also be noted that the seat types of the first seat, the regular seat and the preset auxiliary seat in the present disclosure may be WebRTC type seats. In another possible implementation, the preset auxiliary seat may also be a SIP type seat.

[0081] For example, Figure 6 FIG. 1 is a call sequence diagram of an incoming call scenario according to an exemplary embodiment. Figure 6As shown, the user initiates a call, and after receiving the call request initiated by the user, the FreeSwitch server notifies CTI to allocate seats in the WebRTC regular seats based on ACD. Before this, both the WebRTC regular seats and the WebRTC auxiliary seats need to complete SIP registration on the registration server. The FreeSwitch server usually notifies CTI by default to allocate seats for the current call request in the WebRTC regular seats according to the traditional ACD strategy. Based on the description of the above embodiment, when the need to access the preset auxiliary seat (i.e. Figure 6 When a WebRTC auxiliary agent is assigned to a call request, the CTI can be notified to assign the WebRTC auxiliary agent to the call request. If a seat is assigned to a call request from a regular WebRTC agent, the FreeSwitch server and the WebRTC auxiliary agent need to perform SIP session negotiation, STUN detection, and DTLS key exchange to establish a call between the FreeSwitch server and the assigned WebRTC auxiliary agent. Since the WebRTC auxiliary agent has already completed the call establishment between the FreeSwitch server and the WebRTC auxiliary agent based on the outbound call initiated by the FreeSwitch server after completing the registration, if a WebRTC auxiliary agent is assigned to a call request, the call request can be directly placed in the waiting queue of the WebRTC auxiliary agent. Figure 6 As shown, after establishing a call with the assigned seat, the FreeSwitch server can bridge the two-way call between the assigned seat (WebRTC regular seat or WebRTC auxiliary seat) and the user, forward the voice media streams of both parties to the other end, and ensure that the call between the user and the seat can be correctly established. The above example is only for illustration and the present disclosure is not limited to this.

[0082] In another implementation of the present disclosure, in the process of allocating the second seat for the first call request, the server may also send an agent allocation indication message to the CTI, where the agent allocation indication message is used to instruct the CTI to allocate the second seat for the first call request.

[0083] The CTI may reallocate the second agent to the first call request through the automatic call distribution ACD according to the agent allocation indication message.

[0084] The present disclosure can also mark seats corresponding to situations where the DTLS handshake process is not smooth, so as to provide assistance and call supervision for the marked seats in the future. In other words, the marked seats can be regarded as seats where the DTLS handshake with the server is not smooth. The network environment where the seat is located may be in a weak network or network jitter. Therefore, in order to avoid the failure of call establishment between the server and the marked seat, the marked seat needs to be focused on supervision and assistance.

[0085] Among them, the unsuccessful situations during the DTLS handshake process may include the following: Case 1: within a first period of time after the server determines that the session with the first agent is successfully established, the server does not receive a first handshake message sent by the first agent.

[0086] Case 2: within a first period of time after the server sends the second handshake message to the first agent, the server does not receive a first response message to the second handshake message from the first agent.

[0087] Case 3: within the second period after the server sends the third handshake message to the first agent, the server does not receive a third response message from the first agent in response to the third handshake message, and the number of times the server sends handshake messages to the first agent is greater than or equal to the preset number.

[0088] In response to any of the above three situations, the server may mark the first agent so as to focus on supervising and assisting the marked agent.

[0089] Figure 7 is based on Figure 2 The embodiment shown is a flowchart of a call processing method, such as Figure 7 As shown, after completing step S203, the method further includes the following steps: In step S207, in response to the second call request, a first agent is allocated to the second call request.

[0090] The second call request is another call request received by the server except the first call request.

[0091] In step S208, if a call connection between the first agent and the server is successfully established based on the second call request, then if the call between the first agent and the user meets the preset low-quality call condition, the second agent replaces the first agent to talk to the user.

[0092] As described above, the present disclosure can mark seats corresponding to situations where the DTLS handshake process is not smooth. If the handshake message sent by the first seat is not received within the first time period, the server disconnects the session with the first seat, which indicates that the first seat is a seat that does not smoothly perform the DTLS handshake with the server. The first seat can be marked so that the marked first seat can be focused on supervision and assistance.

[0093] In this embodiment, the server responds to receiving the second call request and assigns the second call request to the first agent. However, before that, due to the poor network quality between the server and the first agent, the server has disconnected the session with the first agent, and the first agent is still at risk of network instability. Therefore, after the second call request is assigned to the first agent, if a call connection between the first agent and the server is successfully established based on the second call request, the call process between the marked first agent and the user needs to be supervised. That is, if a call connection between the first agent and the server is successfully established based on the second call request, then if the call between the first agent and the user meets the preset low-quality call condition, the second agent replaces the first agent to talk to the user.

[0094] The preset low-quality call condition may correspond to a scenario where the other party's voice cannot be heard clearly, such as a noise during the call or a discontinuous call.

[0095] In one implementation, a call supervision service may be established, and based on the call supervision service, a second agent may supervise the call process between the marked first agent and the user. The second agent may be a preset auxiliary agent.

[0096] The call supervision service may be established in the following manner: a seat supervision instruction message is sent to a preset auxiliary seat, so as to instruct the preset auxiliary seat to supervise the call process between the marked first seat and the user through the seat supervision instruction message, and the seat supervision instruction message includes identification information of the marked first seat.

[0097] For example, the call supervision service may include a conference format with the first seat, a preset auxiliary seat and a user as members. In the process of using the preset auxiliary seat to supervise the call process between the marked first seat and the user, the preset auxiliary seat may be muted. When it is determined that the call between the marked first seat and the user meets the preset low-quality call condition, the preset auxiliary seat replaces the marked first seat to talk to the user. In the process of the preset auxiliary seat replacing the marked first seat to talk to the user, the first seat may be disconnected, and after the preset auxiliary seat is unmuted, the preset auxiliary seat replaces the first seat to talk to the user.

[0098] In addition, after the second seat replaces the first seat to talk to the user, considering that if the first seat is assigned to a new call request, the possibility of failure in establishing the call between the first seat and the user is relatively high, the present disclosure can automatically deregister the first seat after the second seat replaces the first seat to talk to the user, so as to avoid assigning the first seat to a new call request. Further, considering that a weak network or network jitter generally does not last too long, the present disclosure can re-register the first seat when the duration of the first seat being deregistered is greater than or equal to a second preset time (such as 15 minutes), so that the first seat can continue to be used for call services.

[0099] By adopting the above method, in the process of realizing the call connection between the server and the agent based on the call center system, by making certain technical modifications to the key key exchange link between the server and the agent, in the case of a weak network or network jitter, if the handshake message sent by the first agent is not received, the session with the first agent is disconnected, and the agent is reallocated for the call request so as to establish a call connection with the reallocated agent. In this way, the probability of call connection failure between the server and the agent can be reduced, the successful contact rate of the customer transferring to the agent can be improved, and the adaptability of the call center system to different network quality environments can be improved.

[0100] In addition, in the case of a weak network, even if the call is successfully established, the call quality of both parties is not good. This situation can be supervised by a second seat (such as a preset auxiliary seat). When this situation is determined to have occurred, the second seat can be used to replace the marked first seat to talk to the user, thereby ensuring that the call between the user and the seat can be correctly established and the call quality can be guaranteed, thereby improving the user experience.

[0101] Figure 8 is a block diagram of a call processing device according to an exemplary embodiment, which is applied to a server, such as Figure 8 As shown, the device comprises: A first seat allocation module 801, configured to allocate a first seat to the first call request in response to the first call request; A session establishing module 802, configured to establish a session with the first agent; The session control module 803 is configured to disconnect the session with the first agent if the handshake message sent by the first agent is not received within a first time period, and the start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time; The second seat allocation module 804 is configured to allocate a second seat to the first call request.

[0102] Optionally, the handshake message includes a first handshake message sent by the first agent to the server for the first time, and the first handshake message includes at least one of the following: a data security protocol and a data processing algorithm supported by the first agent, and a first random number generated by the first agent, and the first random number is used to generate a data transmission key between the first agent and the server.

[0103] Optionally, the handshake message includes a first response message, where the first response message is a response message fed back by the first agent to the server in response to the second handshake message, and the second handshake message is a handshake message sent by the server to the first agent; The second time is the time at which the second handshake message is sent.

[0104] Optionally, the session control module 803 is used to send a third handshake message to the first agent; if no second response message is received from the first agent in response to the third handshake message within a second time period, and the number of times the server sends handshake messages to the first agent is greater than or equal to a preset number, the session with the first agent is disconnected, and the starting time of the second time period is the time when the third handshake message is sent.

[0105] Optionally, the session control module 803 is further configured to execute the step of sending a third handshake message to the first agent if the second response message is not received within the second time period and the number of times the server sends handshake messages to the first agent is less than the preset number.

[0106] Optionally, the handshake message sent by the server to the first agent includes: a third response message, or the first message; The third response message is a response message sent by the server to the first agent based on the first handshake message; the third response message includes at least one of the following: a data security protocol and a data processing algorithm confirmed by the server, a second random number generated by the server, and a public key certificate of the server, wherein the second random number is used to generate a data transmission key between the first agent and the server; The first message is used to indicate the data transmission key used by the server.

[0107] Optionally, in response to the handshake message sent by the server to the first agent, the response message fed back by the first agent includes: The second message, or the third message; The second message includes the data transmission key used by the first agent; The third message includes a first real-time transport protocol RTP data packet.

[0108] Optionally, Fig. 9 is based on Figure 8 The block diagram of a call processing device shown in the embodiment shown in FIG. Fig. 9 As shown, the device also includes: The call connection module 805 is configured to establish a call connection with the first agent if a second response message fed back by the first agent to the third handshake message is received within a second time period; The call holding module 806 is used to control the call between the first agent and the server to continue to hold for a first preset time period in response to the call between the first agent and the user being completed.

[0109] Optionally, the second seat includes a preset auxiliary seat, and the preset auxiliary seat is a seat that has established a call connection with the server before being assigned the first call request.

[0110] Optionally, the second agent allocation module 804 is used to send an agent allocation indication message to the computer telephony integration (CTI), where the agent allocation indication message is used to instruct the CTI to allocate the second agent to the first call request.

[0111] Optionally, Fig.10 is based on Figure 8 The block diagram of a call processing device shown in the illustrated embodiment. The first seat allocation module 801 is further used to respond to a second call request and allocate the first seat to the second call request; like Fig.10 As shown, the device also includes: a quality supervision module 807, which is used to replace the first agent with the second agent to talk to the user if a call connection between the first agent and the server is successfully established based on the second call request, and if the call between the first agent and the user meets a preset low-quality call condition, the second agent is used to replace the first agent to talk to the user.

[0112] Alternatively, if Fig.10 As shown, the device also includes: The seat management module 808 is used to deregister the first seat after the second seat replaces the first seat to talk with the user.

[0113] Optionally, the seat management module 808 is further configured to re-register the first seat when the duration of the first seat being deregistered is greater than or equal to a second preset duration.

[0114] Regarding the device in the above embodiment, the specific manner in which each module performs operations has been described in detail in the embodiment of the method, and will not be elaborated here.

[0115] Fig.111 is a block diagram of an electronic device according to an exemplary embodiment. For example, the electronic device 1100 may be provided as a server. Fig.11 The electronic device 1100 includes a processor 1122, which may be one or more, and a memory 1132 for storing a computer program executable by the processor 1122. The computer program stored in the memory 1132 may include one or more modules each corresponding to a set of instructions. In addition, the processor 1122 may be configured to execute the computer program to perform the above-mentioned call processing method.

[0116] In addition, the electronic device 1100 may further include a power supply component 1126 and a communication component 1150, wherein the power supply component 1126 may be configured to perform power management of the electronic device 1100, and the communication component 1150 may be configured to implement communication of the electronic device 1100, for example, wired or wireless communication. In addition, the electronic device 1100 may further include an input / output (I / O) interface 1158. The electronic device 1100 may operate based on an operating system stored in the memory 1132, such as Windows Server™, Mac OS X™, Unix™, Linux™, etc.

[0117] In another exemplary embodiment, a computer-readable storage medium including program instructions is also provided, and when the program instructions are executed by a processor, the steps of the above-mentioned call processing method are implemented. For example, the computer-readable storage medium can be the above-mentioned memory 1132 including program instructions, and the above-mentioned program instructions can be executed by the processor 1122 of the electronic device 1100 to complete the above-mentioned call processing method.

[0118] In another exemplary embodiment, a computer program product is also provided. The computer program product includes a computer program executable by a programmable device, and the computer program has a code portion for executing the above-mentioned call processing method when executed by the programmable device.

[0119] The preferred embodiments of the present disclosure are described in detail above in conjunction with the accompanying drawings; however, the present disclosure is not limited to the specific details in the above embodiments. Within the technical concept of the present disclosure, a variety of simple modifications can be made to the technical solution of the present disclosure, and these simple modifications all fall within the protection scope of the present disclosure.

[0120] It should also be noted that the various specific technical features described in the above specific embodiments can be combined in any suitable manner without contradiction. In order to avoid unnecessary repetition, the present disclosure will not further describe various possible combinations.

[0121] In addition, various embodiments of the present disclosure may be arbitrarily combined, and as long as they do not violate the concept of the present disclosure, they should also be regarded as the contents disclosed by the present disclosure.

Claims

1. A call processing method, characterized in that: Applied to a server, the method comprises: In response to a first call request, assigning a first seat to the first call request; Establishing a conversation with the first agent; If the handshake message sent by the first agent is not received within a first time period, the session with the first agent is disconnected, and the start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time; A second agent is allocated for the first call request.

2. The method according to claim 1, characterized in that The handshake message includes a first handshake message sent by the first agent to the server for the first time, and the first handshake message includes at least one of the following: a data security protocol and a data processing algorithm supported by the first agent, and a first random number generated by the first agent, and the first random number is used to generate a data transmission key between the first agent and the server.

3. The method according to claim 1, characterized in that The handshake message includes a first response message, where the first response message is a response message fed back by the first agent to the server in response to the second handshake message, and the second handshake message is a handshake message sent by the server to the first agent; The second time is the time at which the second handshake message is sent.

4. The method according to claim 3, characterized in that The disconnecting the session with the first agent includes: Sending a third handshake message to the first agent; If no second response message is received from the first agent in response to the third handshake message within the second time period, and the number of times the server sends handshake messages to the first agent is greater than or equal to a preset number, the session with the first agent is disconnected, and the starting time of the second time period is the time when the third handshake message is sent.

5. The method according to claim 4, characterized in that The handshake message sent by the server to the first agent includes: a third response message, or the first message; The third response message is a response message sent by the server to the first agent based on the first handshake message; the third response message includes at least one of the following: a data security protocol confirmed by the server, a data processing algorithm, a second random number generated by the server, and a public key certificate of the server, wherein the second random number is used to generate a data transmission key between the first agent and the server; The first message is used to indicate the data transmission key used by the server.

6. The method according to any one of claims 1 to 5, characterized in that: After disconnecting the session with the first agent, the method further includes: In response to a second call request, allocating the first agent to the second call request; If a call connection between the first agent and the server is successfully established based on the second call request, then if the call between the first agent and the user meets a preset low-quality call condition, the second agent will talk to the user.

7. A call processing device, characterized in that: The device comprises: A first seat allocation module, configured to allocate a first seat to the first call request in response to the first call request; A session establishing module, used to establish a session with the first agent; a session control module, configured to disconnect the session with the first agent if the handshake message sent by the first agent is not received within a first time period, wherein the start time of the first time period includes the first time when the session is successfully established, or a second time later than the first time; The second seat allocation module is used to allocate a second seat to the first call request.

8. A computer-readable storage medium having a computer program stored thereon, characterized in that: When the program is executed by a processor, the steps of the method described in any one of claims 1 to 6 are implemented.

9. An electronic device, characterized in that: include: a memory having a computer program stored thereon; A processor, configured to execute the computer program in the memory to implement the steps of the method according to any one of claims 1 to 6.

10. A computer program product, comprising a computer program, characterized in that When the computer program is executed by a processor, the steps of the method according to any one of claims 1 to 6 are implemented.