【发布时间】:2017-06-20 10:27:38
【问题描述】:
在 FreeSWITCH 和 Session Manager 之间转移呼叫
我们有一个 Avaya Session Manager 和一个 FreeSWITCH 作为与其连接的功能服务器。
- 来自 Avaya CM World 的呼叫通过 Avaya Session Manager 路由到 FreeSWITCH。
- 在 FreeSWITCH 中,我们进行了一些处理(替换呼叫者 ID)并
- 将其发送回会话管理器
FreeSWITCH 处理调用如下
调用来自 SM 1.2.3.4
- 拨号方案调用 lua 脚本 ** dnis 可能是 19131913
- 此 lua 脚本执行处理(数据库查找等...)
- 最后调用
session:transfer("tosm" .. dnis, "XML", "AS5850");转接电话 - 与 tosm19131913 匹配的拨号方案会桥接回 SM 1.2.3.4
<extension name="AVAYA SM">
<condition field="destination_number" expression="^tosm(\d*)$">
<action application="bridge" data="sofia/AS5850/0*$1@1.2.3.4"/>
</condition>
</extension>
这工作得比较好,但问题是只要呼叫存在,FS 仍然使用两个通道保持呼叫。这会消耗 Session Manager 上的两个通道,非常昂贵。
可以在 FreeSWITCH 命令行上删除通道,以便呼叫完全离开 FS。执行此操作的命令是 uuid_simplify。
我尝试使用 lua 脚本执行该命令
my_fs_api = freeswitch.API()
my_exec_result = my_fs_api:executeString("sofia status")
my_exec_result = my_fs_api:executeString("uuid_simplify " .. my_ssession_uuid)
freeswitch.consoleLog("notice","\n\n[1c] result " .. my_exec_result .. "\n\n")
但它不起作用。
我尝试从会话传输中删除session:tranfer 并在拨号方案上使用偏转。这也不起作用。
有什么想法吗?
【问题讨论】:
标签: freeswitch