在FreeSWITCH和会话管理器之间转移呼叫

时间:2014-11-28 19:07:02

标签: freeswitch

在FreeSWITCH和会话管理器之间转移呼叫

我们有一个Avaya Session Manager和一个FreeSWITCH作为与之相连的功能服务器。

  • 来自Avaya CM World的呼叫通过Avaya会话管理器路由到FreeSWITCH。
  • 在FreeSWITCH中,我们会进行一些处理(替换来电显示)和
  • 将其发回会话管理器

FreeSWITCH处理呼叫如下

来自SM 1.2.3.4的电话

  • 拨号方案调用lua脚本 ** dnis可能是19131913
  • 这个lua脚本进行处理(db lookup,等等......)
  • 最后调用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仍然可以使用两个通道保持呼叫。这会消耗会话管理器上的两个通道,价格昂贵。

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并在拨号方案上使用偏转。这也不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你只是使用了错误的工具。如果您只需要修改SIP标头,例如来电显示,您可以轻松使用Kamailio并将其配置为无状态处理,这样它就不需要了解正在进行的会话。

我可以在1月份提供一些咨询服务(目前在今年剩余时间内完全预订)

答案 1 :(得分:0)

您需要使用将执行SIP REFER的命令deflect of FreeSWITCH来完成转接呼叫,并且呼叫将离开FreeSWITCH。