freeswitch 之ESL开发
发布日期:2021-09-16 04:36:14 浏览次数:19 分类:技术文章

本文共 665 字,大约阅读时间需要 2 分钟。

 一般来说,其他客户端都是通过ESL与fs进行连接的,连接方式分为内联:inbond 以及外联outbond 2种方式。

Inbound内联:简单说就是客户端主动通过socket的连接方式向FS进行连接,开启了一个“通道”,通过这个通道客户端不仅可以订阅监听一些时间,也可以通过这个通道进行命令的发送。fs_cli 其实就是一个fs的客户端。

Outbond外联:外联是FS主动朝外发送连接请求,每一个通话进入在拨号计划设置后都可以进行外联,这个外连接的存活周期就是这通通话的session存活周期,当然有时候FS状态推送慢,session挂断了,外联通道还没监听到这个事件,但是fs中有预留一个api进行这个的控制:linger,linger可以告诉freeswitch当一个通道挂机时不要关闭socket连接,直到收取相关通道的最后一个事件。这样就可以让我们去处理很多依赖状态的事件,比如状态推送,如果我们不是特别需要的话,就可以不增加这个参数。

在API开发中,有2种命令发送方式朝FS发送命令。一种是api,一种是bgapi,两种api的区别就是一个是同步发送命令,一个是异步发送命令。使用api发送命令,是一个阻塞的状态,无论在fs_cli 还是在 其他工程中,使用这个命令进行发送,在执行成功前都收不到任何消息,多条命令也会被阻塞(阻塞模式),只会按顺序执行,所以我们再开发以及使用中都使用bgapi。当执行bgapi的时候,后台会产生一个Job-UUID,我们也可以通过订阅BACKGROUND_JOB来获取回调结果。

 

 

转载地址:https://blog.csdn.net/wlg9527/article/details/106247758 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:freeswitch callcenter
下一篇:freeswitch 与TTS asr对接

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年05月04日 20时57分11秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章