CN107959761A - 基于FreeSWITCH的收发双链路实现方法及装置 - Google Patents
基于FreeSWITCH的收发双链路实现方法及装置 Download PDFInfo
- Publication number
- CN107959761A CN107959761A CN201610900068.4A CN201610900068A CN107959761A CN 107959761 A CN107959761 A CN 107959761A CN 201610900068 A CN201610900068 A CN 201610900068A CN 107959761 A CN107959761 A CN 107959761A
- Authority
- CN
- China
- Prior art keywords
- esl
- freeswitch
- chains
- send
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/50—Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
- H04M3/51—Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
- H04M3/5175—Call or contact centers supervision arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/42314—Systems providing special services or facilities to subscribers in private branch exchanges
- H04M3/42323—PBX's with CTI arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/50—Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
- H04M3/51—Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
- H04M3/5183—Call or contact centers with computer-telephony arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/50—Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
- H04M3/51—Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing
- H04M3/523—Centralised call answering arrangements requiring operator intervention, e.g. call or contact centers for telemarketing with call distribution or queueing
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开是关于一种基于FreeSWITCH的收发双链路实现方法及装置。所述基于FreeSWITCH的收发双链路实现方法应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH;所述方法包括:根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接;使用所述ESL接收链接收所述FreeSWITCH发送的话路事件;使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。本公开可以使得通过ESL连接FreeSWITCH的第三方***服务能力有效提升。
Description
技术领域
本公开涉及计算机和电信技术领域,具体而言,涉及一种基于FreeSWITCH的收发双链路实现方法及装置。
背景技术
CTI,被称为计算机电话,是用计算机来管理电话呼叫的。CTI技术是从传统的计算机电话集成(computer telephony integration)技术发展而来的,最初是想将计算机技术应用到电话***中,能够自动地对电话中的信令信息进行识别处理,并通过建立有关的话路连接,而向用户传送预定的录音文件、转接来话等。而到现在,CTI技术已经发展成“计算机电信集成”技术(Computer Telecommunication Integration),即其中的“T”已经发展成“Telecommunication”,这意味着目前的CTI技术不仅要处理传统的电话语音,而且要处理包括传真、电子邮件等其它形式的信息媒体。
CTI技术跨越计算机技术和电信技术两大领域,提供的一些典型业务主要有基于用户终端设备(Customer Premise Equipment,CPE)的消息***、交互语音应答、呼叫中心***、增值业务、IP电话等。
下面以呼叫中心业务为例进行说明。为了使电话***为用户提供更好的服务,最初是由专门的话务员,根据自己的经验和记忆力,为打入电话的顾客进行咨询服务,由于是凭人工记忆,信息容量有限,服务能力也无法提高。可以将与各种服务有关的数据存入计算机中,这样,顾客需要哪方面的服务,只需调出相应的数据库即可,而不必非由该方面的专家完成,提高了服务质量和效率。
CTI技术的C端源于市场的需求,其目标也是为了给用户提供高效和高质量的电信服务,根据具体业务的不同,C的内涵也有差别,例如增值业务的C部分主要实现数据、采集、计费、批价等业务逻辑,而呼叫中心的C部分则是呼叫场景的建立和维护、根据特定原则实现呼叫的自动分配等。
应用CTI技术的呼叫中心***有三个不可或缺的要素:一是电话交换***,即呼叫中心内部使用的电话网络,网络内的分机分享一定数量的外线接入。呼叫中心电话交换***可以基于PBX(private branch exchange,用户级交换机,俗称程控交换机、程控用户交换机、电话交换机、集团电话等,使电话管理者可集团性管理外线来电与内线呼出),利用电路交换的原理,在模拟线路上实现,也可以基于IP PBX,利用包交换的原理,在以太网上实现。无论是PBX还是IP PBX,都是根据寻址信息和网控指令进行链路连接或信号导向,建立内部分机间或内部分机与外线间的电话通路(以下简称话路)、进行语音交换的***。
二是CTI-Link,电话交换***提供的应用服务接口,CTI服务和电话交换***间的通信桥梁。PBX的CTI-Link需要依赖特殊的通信协议,如CSTA(computer supportedtelecommunication application)、TAPI(telephony API)、TSAPI(telephony servicesAPI)、JTAPI(Java telephony API)等,以一路为主,多路冗余的方式在CTI服务和PBX间组织通信链路;IP PBX由于电话交换***和CTI服务是以太网上的两个端,所以IP PBX通常采用Socket通信方式,基于特定的消息格式,实现应用服务接口并提供电话事件报告。
三是CTI中间件或者CTI服务,对于PBX或IP PBX而言,属于外部应用服务,通常是通过私有协议实现或者汇接呼叫中心的电话业务逻辑(以下简称话务逻辑),如ACD(Automatic Call Distribution,自动呼叫分配,俗称排队机,更确切地说它是呼叫中心整个前台接入***逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前)、call control(呼叫控制)、IVR(自动语音应答实际上是一个自动的业务代理,通过IVR***,客户可以利用音频按键,从该***中获得预先录制的数字语音信息或***通过TTS(Text to speech,文本自动转成语音)技术动态合成的语音信息。本功能可以实现全天候自助式服务。通过CTI***的电脑交互式应答服务,客户可以很容易地通过电话机键盘输入选择,从而得到24小时的服务)等,通过CTI-Link收集话路相关的事件报告,发送话路控制指令并处理指令执行的结果反馈。
现有技术中,CTI服务是通过一个ESL长连接来订阅freeswitch的话路事件,同时CTI服务通过建立ESL短连接来向freeswitch发送控制指令。这样,当需要向freeswitch发送控制指令时,按照创建连接-发送指令数据-处理指令执行结果-关闭连接的步骤通过短连接来进行。用短连接处理指令发送,每次连接都需要三步握手,这需要时间。如果每次发送指令都是先连接再操作,那么处理速度会降低很多。
实际项目实践中,也有沿用PBX的CTI-Link通信机制来处理ESL链路消息的,如图1所示,包括以下步骤:步骤S110,初始化一条ESL链路;步骤S120,接收ESL事件消息;步骤S130,处理接收内容;步骤S140,发送控制指令;步骤S150,接收指令执行结果;步骤S160,处理执行结果并返回至步骤S120继续接收ESL事件消息。这样方式是建立一个ESL长连接同时处理消息的接收和发送:建立连接,订阅CTI服务需要处理的电话事件等,然后启动ESL链路处理流程(接收并处理订阅的电话事件),发送指令后,需等待指令执行结果的返回,然后再继续事件接收。而单一链路上同时处理收发操作,控制指令发送时的同步处理会影响话路事件的接收,而导致通信的阻塞和话路事件的时序混乱。
综上可知,现有技术的上述两种方式都不适合大并发情况下,操作频繁的场景。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
针对现有技术中的部分问题或者全部问题,本公开提供一种基于FreeSWITCH的收发双链路实现方法及装置。
根据本公开的一个方面,提供一种基于FreeSWITCH的收发双链路实现方法,应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH,所述方法包括:
根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接;
使用所述ESL接收链接收所述FreeSWITCH发送的话路事件;
使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
在本公开的一种示例性实施例中,还包括:
当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或
当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
在本公开的一种示例性实施例中,所述使用所述ESL接收链接收所述FreeSWITCH发送的话路事件包括:
调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;
调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
在本公开的一种示例性实施例中,所述使用所述ESL发送链向所述FreeSWITCH发送话路控制指令包括:
建立命令缓冲区;
使所述话路控制指令预先进入所述命令缓冲区;
对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
在本公开的一种示例性实施例中,所述根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链包括:
根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;
选择所述收连接池中的至少一长连接作为所述ESL接收链;
选择所述发连接池中的至少一长连接作为所述ESL发送链。
在本公开的一种示例性实施例中,所述第三方***包括CTI服务。
根据本公开的一个方面,提供一种基于FreeSWITCH的收发双链路实现装置,应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH,所述装置包括:
双链路建立模块,用于根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接;
事件接收模块,用于使用所述ESL接收链接收所述FreeSWITCH发送的话路事件;
指令发送模块,用于使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
在本公开的一种示例性实施例中,还包括:待处理事件加入模块,用于当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
在本公开的一种示例性实施例中,所述事件接收模块包括:
事件订阅单元,用于调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;
事件侦听单元,用于调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
在本公开的一种示例性实施例中,所述指令发送模块包括:
缓冲区建立单元,用于建立命令缓冲区;
命令存储单元,用于使所述话路控制指令预先进入所述命令缓冲区;
扫描单元,用于对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
在本公开的一种示例性实施例中,所述双链路建立模块包括:
收发连接池创建单元,用于根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;
ESL接收链生成单元,用于选择所述收连接池中的至少一长连接作为所述ESL接收链;
ESL发送链生成单元,用于选择所述发连接池中的至少一长连接作为所述ESL发送链。
本公开的一种实施例中的基于FreeSWITCH的收发双链路实现方法及装置,可以使得通过ESL连接FreeSWITCH的第三方***实现收发分离,有效提升第三方***的处理能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出现有的一种收发单链路实现方法的流程图。
图2示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现方法的流程图。
图3示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现方法的流程图。
图4示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图2示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现方法的流程图。
如图2所示,该方法包括以下步骤。
在步骤S210中,根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接。
FreeSWITCH是一个跨平台的开源电话软交换***,提供语音、视频等媒体处理和交换的产品驱动,可作为呼叫中心***三要素中电话交换***的承载。根据不同的组网要求,既可和语音网关一起实现公共电话交换网(PSTN)的呼叫落地,代替传统的PBX硬件,也可以直接接受SIP Trunk接入,实现IP PBX的功能。本实施例中,FreeSWITCH是PBX/IP PBX的具体实现。
在示例性实施例中,所述配置信息可以包括FreeSWITCH运行主机的IP地址、服务端口和鉴权信息等其中的一种或者多种。在一实施例中,所述ESL接收链和所述ESL发送链均可以通过以下方式建立:取得FreeSWITCH运行主机的IP地址、服务端口和鉴权信息,调用ESL的连接API创建所述ESL接收链和所述ESL发送链。
本发明实施例中的所述ESL接收链和所述ESL发送链都采用长连接方式。需要说明的是,这里的长连接是相对短连接而言的一个概念,是指建立一个事件循环,而短连接方式下,执行一次指令发送并得到返回结果后即断开连接。
在示例性实施例中,所述第三方***包括CTI服务。本发明一些实施例可以归属于CTI技术在呼叫中心***中的应用场景。但实际上本发明可应用于使用FreeSWITCH作为软交换,并且第三方***通过ESL连接操控FreeSWITCH的任意业务***。下面的实施例中均以CTI服务为例进行说明。
本实施例中,CTI服务和电话交换***间的通信可以通过ESL实现。其中ESL(EventSocket Library)是CTI-Link的具体实现。
ESL是FreeSWITCH自带的网络套接字(socket)连接协议。CTI服务作为外部应用可通过ESL订阅FreeSWITCH的话路事件报告,调用FreeSWITCH提供的API、APP等函数(ESL的应用程序接口)向其发送话路控制指令,在此基础上实现呼叫中心***的话务逻辑。在基于FreeSWITCH构建的呼叫中心***中,ESL作为CTI服务和FreeSWITCH间的通信链路(以下简称ESL链路),实际上承载了CTI-Link的功能。
在示例性实施例中,所述根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链包括:根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;选择所述收连接池中的至少一长连接作为所述ESL接收链;选择所述发连接池中的至少一长连接作为所述ESL发送链。
在上述实施例中收发各创建了一条ESL长连接,实际上收发均可以创建多条长连接,以收或发连接池的方式复用这些长连接。
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。这种连接“汇集”起来的技术基于这样的一个事实:对于大多数应用程序,当它们正在处理通常需要数毫秒完成的事务时,仅需要能够访问连接的1个线程。当不处理事务时,这个连接就会闲置。相反,连接池允许闲置的连接被其它需要的线程使用。
事实上,当一个线程需要进行操作时,它从池中请求一个连接。当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用。
当连接从池中“借出”,它被请求它的线程专有地使用。从编程的角度来看,采用连接池技术,可通过使用新的或已有的连接结束线程。
连接池可以极大的改善用户的应用程序的性能,同时减少全部资源的使用。采用连接池主要的优点包括:减少连接创建时间,创建新的连接会招致网络和驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免;简化的编程模式,当使用连接池时,每一个单独的线程能够像创建了一个自己的连接一样操作;受控的资源使用,如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,如果超过该水平,应用程序将崩溃而不仅仅是变慢。
在步骤S220中,使用所述ESL接收链接收所述FreeSWITCH发送的话路事件。
在示例性实施例中,所述使用所述ESL接收链接收所述FreeSWITCH发送的话路事件包括:调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
在一实施例中,所述第一函数可以为esl_events,即CTI服务可以调用esl_events实现对FreeSWITCH话路事件的订阅,建立事件循环。
在一实施例中,所述第二函数可以为esl_recv_event_timed,即可以调用esl_recv_event_timed在所述ESL接收链上实现事件侦听。
在步骤S230中,使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
在示例性实施例中,所述使用所述ESL发送链向所述FreeSWITCH发送话路控制指令包括:建立命令缓冲区;使所述话路控制指令预先进入所述命令缓冲区;对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
在本实施例中,CTI服务通过通信链路ESL接收链收集电话交换***的话路事件,同时通过通信链路ESL发送链向电话交换***发送话路控制指令并接收电话交换***执行该话路控制指令后的执行结果。
ESL链路上传输的数据可分为两类:一类由CTI服务发出,并要求FreeSWITCH予以响应的请求或指令;另一类由FreeSWITCH发布,CTI服务订阅的话路状态事件通知类。前者在发出请求或指令后,会等待FreeSWITCH的响应,在等待的过程中,逻辑流程被挂起,链路资源被占用。CTI服务的Link逻辑无论是多线程还是单线程方式实现,在只有一条ESL链路的情况下,数据的接收都会被发送过程所干扰。在本实施例中,以CTI服务为参照,将采用同步或异步方式与FreeSWITCH通信的数据分开到发送和接收两条ESL链路上(即所述ESL发送链和ESL接收链),解除前述的耦合关系。
这里的同步方式在发送所述话路控制指令完毕后,会挂起当前的处理线程,等待对端(FreeSWITCH)的数据返回后再继续执行;而异步方式发送完毕后无需等待。
在示例性实施例中,所述方法还可以包括:当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
本示例实施方式中的基于FreeSWITCH的收发双链路实现方法,不仅通过一个ESL长连接来订阅freeswitch的话路事件,同时CTI服务通过建立另一个ESL长连接来向freeswitch发送控制指令,可以提升通过ESL连接FreeSWITCH的第三方***的并发处理能力。一方面,可以避免ESL短连接方式发送指令造成额外的时间消耗和资源消耗。另一方面可以解决ESL单一链路上消息接收对于指令发送同步处理的逻辑依赖。
图3示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现方法的流程图。
如图3所示,本示例实施方式该方法包括以下步骤。
在步骤S310中,初始化两条ESL链路,其中一条为ESL接收链,一条维ESL发送链。
CTI服务根据FreeSWITCH的配置信息:IP地址、服务端口、鉴权信息等,初始化两条ESL链路,其中所述ESL接收链用以订阅FreeSWITCH的话路事件报告,所述ESL发送链用来向FreeSWITCH发送话路控制指令并接收该话路控制指令执行的结果反馈。
在步骤S320中,调用第一函数实现对话路事件的订阅。
在步骤S330中,调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
图3的实施例中,左侧分支为数据接收的流程逻辑,CTI服务调用esl_events实现对FreeSWITCH话路事件的订阅,建立事件循环,调用esl_recv_event_timed在ESL接收链上实现事件侦听。如果收到话路事件,将接收结果加入至待处理事件队列,由CTI服务的Link逻辑负责处理。之后,继续在ESL接收链上侦听事件。
在步骤S340中,建立命令缓冲区。
在步骤S350中,使所述话路控制指令进入所述命令缓冲区。
在步骤S360中,对所述命令缓冲区进行扫描,将所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
图3的实施例中,右侧分支为数据发送的流程逻辑,与接收流程不同,发送流程不会订阅FreeSWITCH的话路事件,但是会建立一个队列作为命令缓冲区,CTI服务向FreeSWITCH发送的话路控制指令都会预先进入该队列。在发送流程的事件循环中会对该命令缓冲区进行扫描;摘取指令,将其中的内容通过ESL发送链发送至FreeSWITCH,等待结果响应的到达,并将指令的执行结果加入至所述待处理事件队列,由CTI服务的Link逻辑负责处理。之后,继续发送该命令缓冲区中的下一条话路控制指令。
在步骤S370中,将所述话路事件和/或将执行结果加入至待处理事件队列。当将所述话路事件加入至所述待处理事件队列后,继续跳回到步骤S330继续侦听下一话路事件。当将所述执行结果加入至所述待处理事件队列后,继续跳回到步骤S360继续扫描下一话路控制指令。
CTI服务的Link逻辑从所述待处理事件队列中得到话路状态、话路控制指令的执行结果等,为CTI服务实现话务逻辑提供事件驱动。
本示例实施方式中的基于FreeSWITCH的收发双链路实现方法,通过发送控制指令时采取长连接代替短连接,并将指令发送和事件接收的处理逻辑解耦到两条ESL链路上,能够实现通过ESL连接FreeSWITCH的CTI服务处理能力有效提升,单点可支持1000话路并发。
图4示意性示出本公开示例性实施例中一种基于FreeSWITCH的收发双链路实现装置的框图。
如图4所示,该装置100应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH。该装置100包括双链路建立模块110、事件接收模块120以及指令发送模块130。
其中双链路建立模块110用于根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接。
在示例性实施例中,所述双链路建立模块110包括:收发连接池创建单元,用于根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;ESL接收链生成单元,用于选择所述收连接池中的至少一长连接作为所述ESL接收链;ESL发送链生成单元,用于选择所述发连接池中的至少一长连接作为所述ESL发送链。
其中事件接收模块120用于使用所述ESL接收链接收所述FreeSWITCH发送的话路事件。
在示例性实施例中,所述事件接收模块120可以包括:事件订阅单元,用于调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;事件侦听单元,用于调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
其中指令发送模块130用于使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
在示例性实施例中,所述指令发送模块130可以包括:缓冲区建立单元,用于建立命令缓冲区;命令存储单元,用于使所述话路控制指令预先进入所述命令缓冲区;扫描单元,用于对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
在示例性实施例中,该装置100还可以包括:待处理事件加入模块,用于当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
上述基于FreeSWITCH的收发双链路实现装置中各模块的具体细节已经在对应的基于FreeSWITCH的收发双链路实现方法中进行了详细想描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (11)
1.一种基于FreeSWITCH的收发双链路实现方法,应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH;其特征在于,所述方法包括:
根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接;
使用所述ESL接收链接收所述FreeSWITCH发送的话路事件;
使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或
当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
3.根据权利要求1所述的方法,其特征在于,所述使用所述ESL接收链接收所述FreeSWITCH发送的话路事件包括:
调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;
调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
4.根据权利要求1所述的方法,其特征在于,所述使用所述ESL发送链向所述FreeSWITCH发送话路控制指令包括:
建立命令缓冲区;
使所述话路控制指令预先进入所述命令缓冲区;
对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
5.根据权利要求1所述的方法,其特征在于,所述根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链包括:
根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;
选择所述收连接池中的至少一长连接作为所述ESL接收链;
选择所述发连接池中的至少一长连接作为所述ESL发送链。
6.根据权利要求1所述的方法,其特征在于,所述第三方***包括CTI服务。
7.一种基于FreeSWITCH的收发双链路实现装置,应用于一第三方***,所述第三方***通过ESL连接所述FreeSWITCH;其特征在于,所述装置包括:
双链路建立模块,用于根据所述FreeSWITCH的配置信息建立至少一ESL接收链和至少一ESL发送链,其中所述ESL接收链和所述ESL发送链为长连接;
事件接收模块,用于使用所述ESL接收链接收所述FreeSWITCH发送的话路事件;
指令发送模块,用于使用所述ESL发送链向所述FreeSWITCH发送话路控制指令。
8.根据权利要求7所述的装置,其特征在于,还包括:待处理事件加入模块,用于当所述ESL接收链接收到所述话路事件时,将所述话路事件加入至待处理事件队列;和/或当所述ESL发送链接收到所述FreeSWITCH返回的响应于所述话路控制指令的执行结果时,将所述执行结果加入至所述待处理事件队列。
9.根据权利要求7所述的装置,其特征在于,所述事件接收模块包括:
事件订阅单元,用于调用第一函数实现对所述FreeSWITCH发送的话路事件的订阅;
事件侦听单元,用于调用第二函数在所述ESL接收链上实现所述话路事件的侦听。
10.根据权利要求7所述的装置,其特征在于,所述指令发送模块包括:
缓冲区建立单元,用于建立命令缓冲区;
命令存储单元,用于使所述话路控制指令预先进入所述命令缓冲区;
扫描单元,用于对所述命令缓冲区进行扫描,将所述命令缓冲区中的所述话路控制指令通过所述ESL发送链发送至所述FreeSWITCH。
11.根据权利要求7所述的装置,其特征在于,所述双链路建立模块包括:
收发连接池创建单元,用于根据所述FreeSWITCH的配置信息创建包括多条长连接的收连接池和包括多条长连接的发连接池;
ESL接收链生成单元,用于选择所述收连接池中的至少一长连接作为所述ESL接收链;
ESL发送链生成单元,用于选择所述发连接池中的至少一长连接作为所述ESL发送链。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900068.4A CN107959761B (zh) | 2016-10-14 | 2016-10-14 | 基于开源电话软交换***的收发双链路实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900068.4A CN107959761B (zh) | 2016-10-14 | 2016-10-14 | 基于开源电话软交换***的收发双链路实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107959761A true CN107959761A (zh) | 2018-04-24 |
CN107959761B CN107959761B (zh) | 2020-06-30 |
Family
ID=61953662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610900068.4A Active CN107959761B (zh) | 2016-10-14 | 2016-10-14 | 基于开源电话软交换***的收发双链路实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107959761B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110958281A (zh) * | 2018-09-26 | 2020-04-03 | 华为技术有限公司 | 基于物联网的数据传输方法及通信装置 |
CN112468667A (zh) * | 2020-12-14 | 2021-03-09 | 招商局金融科技有限公司 | 电话业务处理方法、装置、电子设备及存储介质 |
WO2023211744A1 (en) * | 2022-04-25 | 2023-11-02 | Zoom Video Communications, Inc. | Third party application control of a client |
US11916979B2 (en) | 2021-10-25 | 2024-02-27 | Zoom Video Communications, Inc. | Shared control of a remote client |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11889028B2 (en) | 2021-04-26 | 2024-01-30 | Zoom Video Communications, Inc. | System and method for one-touch split-mode conference access |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095936A (zh) * | 2011-11-02 | 2013-05-08 | 中兴通讯股份有限公司 | 坐席呼叫的控制方法、装置及呼叫*** |
CN203120008U (zh) * | 2012-12-25 | 2013-08-07 | 深圳市天维尔通讯技术有限公司 | 一种兼容多品牌的程控交换机的cti接口平台*** |
US9118763B1 (en) * | 2014-12-09 | 2015-08-25 | Five9, Inc. | Real time feedback proxy |
CN105262913A (zh) * | 2015-09-08 | 2016-01-20 | 广东亿迅科技有限公司 | 基于数据挖掘的cti***及自动化控制方法 |
CN105827709A (zh) * | 2016-03-31 | 2016-08-03 | 广东亿迅科技有限公司 | 一种web语音话务***实时话务状态的实现方法 |
-
2016
- 2016-10-14 CN CN201610900068.4A patent/CN107959761B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095936A (zh) * | 2011-11-02 | 2013-05-08 | 中兴通讯股份有限公司 | 坐席呼叫的控制方法、装置及呼叫*** |
CN203120008U (zh) * | 2012-12-25 | 2013-08-07 | 深圳市天维尔通讯技术有限公司 | 一种兼容多品牌的程控交换机的cti接口平台*** |
US9118763B1 (en) * | 2014-12-09 | 2015-08-25 | Five9, Inc. | Real time feedback proxy |
CN105262913A (zh) * | 2015-09-08 | 2016-01-20 | 广东亿迅科技有限公司 | 基于数据挖掘的cti***及自动化控制方法 |
CN105827709A (zh) * | 2016-03-31 | 2016-08-03 | 广东亿迅科技有限公司 | 一种web语音话务***实时话务状态的实现方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110958281A (zh) * | 2018-09-26 | 2020-04-03 | 华为技术有限公司 | 基于物联网的数据传输方法及通信装置 |
CN110958281B (zh) * | 2018-09-26 | 2021-07-09 | 华为技术有限公司 | 基于物联网的数据传输方法及通信装置 |
CN112468667A (zh) * | 2020-12-14 | 2021-03-09 | 招商局金融科技有限公司 | 电话业务处理方法、装置、电子设备及存储介质 |
US11916979B2 (en) | 2021-10-25 | 2024-02-27 | Zoom Video Communications, Inc. | Shared control of a remote client |
WO2023211744A1 (en) * | 2022-04-25 | 2023-11-02 | Zoom Video Communications, Inc. | Third party application control of a client |
Also Published As
Publication number | Publication date |
---|---|
CN107959761B (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8346942B2 (en) | Call centers for providing customer services in a telecommunications network | |
CN101150419B (zh) | 一种新一代呼叫中心***及自动业务实现方法 | |
AU736449B2 (en) | Improved call center apparatus and functionality in telephony | |
US9553755B2 (en) | Method for implementing and executing communication center routing strategies represented in extensible markup language | |
US8199899B2 (en) | Call management system with call control from user workstation computers | |
US7136475B1 (en) | Call Management system with call control from user workstation computers | |
US6785379B1 (en) | Call management system with call control form user workstation computers | |
CN107959761A (zh) | 基于FreeSWITCH的收发双链路实现方法及装置 | |
WO2004102987A2 (en) | Universal state-aware communications | |
JP2002503903A (ja) | 優先順位を用いた呼の分配およびオーバライドの方法および装置 | |
CA2357394C (en) | Methods and apparatus for using ain techniques to facilitate servicing of calls by a group of users | |
US6785741B1 (en) | Call director system and method | |
WO2013028682A1 (en) | Method for automated handling of outbound contacts requiring assured connection to a live agent | |
CN100568898C (zh) | 一种基于ParlayAPI的多媒体呼叫中心*** | |
CN109151232A (zh) | 重复来电处理方法以及装置 | |
US6882720B2 (en) | Computer telephony integration | |
US20040052350A1 (en) | System and method for delivering enhanced voice and data services in parallel with an incumbent phone company | |
KR20030060077A (ko) | 콘택트 센터 제어 방법 및 장치 및 컴퓨터 판독 가능 매체 | |
KR100640289B1 (ko) | 통화 서비스를 제공 받기 위한 ip 단말기의 동작 방법및 그 ip 단말기 | |
CN208369682U (zh) | 语音应答*** | |
CN117675726A (zh) | 多业务的通信*** | |
CN102572137A (zh) | 呼叫***及方法 | |
JP2005295592A (ja) | コールセンタ運用方法及び装置 | |
WO2012021947A1 (en) | Method for communication of mobile subscribers through a virtual private branch exchange a system for its implementation | |
JP2009177809A (ja) | 通信接続を設定する方法およびその方法を実行するための構内交換機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |