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



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

我们有一个Avaya会话管理器和一个FreeSWITCH作为与之连接的功能服务器。

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

FreeSWITCH处理调用如下

来自SM 1.2.3.4的呼叫

  • 拨号计划调用 Lua 脚本** 可能会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 仍然使用两个通道保留呼叫。这会消耗会话管理器上的两个通道,这很昂贵。

在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","nn[1c]   result " .. my_exec_result .. "nn")

但它不起作用。

我试图从会话传输中删除session:tranfer并在拨号计划上使用偏转。这也行不通。

有什么想法吗?

你只是使用了错误的工具。如果您只需要修改 SIP 标头(例如呼叫方 ID(,则可以轻松地使用 Kamailio 并将其配置为无状态处理,这样它就不需要知道正在进行的会话。

我可以在一月份帮助一些咨询(目前今年剩余时间已满(

您需要使用 FreeSWITCH 的命令 deflect 来执行 SIP REFERENCE 来完成呼叫转移,呼叫将离开 FreeSWITCH。

最新更新