FreeSWITCH中文网,电话机器人开发网 ,微信订阅号:

FreeSWITCH及VOIP,Openser,电话机器人等产品中文技术资讯、交流、沟通、培训、咨询、服务一体化网络。QQ群:293697898

有关FreeSwitch Event socket library使用简介(一)


tags:FreeSwitch ESL Event socket library 创建时间:2017-12-10 08:48:06

在和FreeSwitch进行通信的机制中,有以下若干:

   1. 按FreeSwitch core library ,再按照对应的interface定义实现module用于完成某些特定功能,如转解码,会议,日志,语音识别或tts,路由,账号等。

   2. 使用xml_curl等模块采用http协议进行交互。

   3. 使用Event socket library模块把一些消息与FreeSwitch的内核进行数据交互和命令控制。

   今天我们就简单讲讲Event socket library(简称ESL)与FreeSwitch间的交互及对应的关系。

   首先,ESL它采用socket tcp连接,可以保持长连接,那么没有每次连接、释放等消耗,所以它的性能是优于xml_curl等模式。如fs_cli这个很棒的FreeSwitch的控制台就是采用ESL开发的,它的代码在 %fs_sorce%/libs/esl/fs_cli.c。

   其次,ESL库支持SWIG转向其它开发语言的库,如在: %fs_sorce%/libs/esl/ 下,  make pymod 生成python对应库,以及perlmod、phpmod、luamod、rubymod、javamod、managedmod等。

   再次,ESL意味着和FS Core松耦合,那么不会因为我们的代码造成FS的直接宕机,这样尽可能地保证呼叫可靠性,即小内核,大业务模型。

   在传统的socket应用中,有个交互词叫C/S即client server模型,而在FS采用ESL交互过程中脱离不了C/S这个词,也基于它引申出了INBOUND、OUTBOUND这两个词,在编程中,INBOUND是以socket client去连接FS的server,OUTBOUND则是让FS以socket client连接业务的server。

    在这里,按我的理解把我们外部操作FS的逻辑的方式分为三种,一种是监、一种是控、还有一种是"恶意"控。 监好理解,就是监视,监视FS通过ESL送过来的消息,典型的为来电时告知业务层做来电弹屏;控则是控制,用于控制有相关呼叫进入后的后续业务逻辑;“恶意”控,并不是真的恶意,而是有点类似于警察干预到邻里间的纠纷,如由FS发起呼叫、由领导到当前某人的话务进行监听或强拆等。那么整体的意思就是,建议监和“恶意”控由INBOUND模式来完成,控由OUTBOUND模式来完成。当然这不是百分百的,在OUTBOUND中也可以监,在INBOUND中也可以控,一切以自己的应用需求去评估。


上海老李,QQ:1354608370,FreeSWITCH QQ群: