如何在目的地应答呼叫后从freeswitch拨打电话并播放文件?

时间:2017-04-25 18:19:10

标签: lua sip freeswitch

我想写一个连接到freeswitch的网络应用程序,并拨打某个目的地号码(固定电话或内部SIP设备的网关)并播放一些声音(可能在lua脚本中做一些逻辑)。

在阅读freeswitch wiki后,我找到了originate命令,但它对我不起作用(我只测试内部sip号 - sofia / internal / username @ ip)。 如果originate命令可以这样做,如何正确使用它? 如果还有其他方式请告诉我。

感谢。

5 个答案:

答案 0 :(得分:1)

我测试的一种方法是运行来自freeswitch控制台或ESL的lua脚本:( ex“luarun test.lua”)

https://freeswitch.org/confluence/display/FREESWITCH/Lua+API+Reference#LuaAPIReference-session:hangupCause

obSession = freeswitch.Session("sofia/192.168.0.4/1002")
 
   -- Check to see if the call was answered
   if obSession:ready() then
    -- Play file here
   else   
    -- This means the call was not answered ... Check for the reason
    local obCause = obSession:hangupCause()
    freeswitch.consoleLog("info", "obSession:hangupCause() = " .. obCause )
    if ( obCause == "USER_BUSY" ) then              -- SIP 486
       -- For BUSY you may reschedule the call for later
    elseif ( obCause == "NO_ANSWER" ) then
       -- Call them back in an hour
    elseif ( obCause == "ORIGINATOR_CANCEL" ) then   -- SIP 487
       -- May need to check for network congestion or problems
    else
       -- Log these issues
    end
    end

答案 1 :(得分:1)

您可以通过拨号计划轻松完成:

<action function="play-file" data="myfile.wav"/>

答案 2 :(得分:1)

当有人开始通话时,您可以播放wav,请按照以下步骤操作。

  1. 将wave放入freeswitch / conf文件夹。
  2. 将以下代码添加到您的freeswitch / conf / autoload_configs

  3. 运行接收POST请求的HTTP服务器并返回您的拨号方案(告诉freeswitch播放您的wav)。

  4. 确保您的freeswitch / conf / autoload_configs / xml_curl.conf.xml看起来像这样
  5.     <param name="gateway-url" value="http://yourIP:yourServerPort/dialplan.xml" bindings="dialplan"/>
    

    希望这有帮助。

答案 3 :(得分:1)

您可以通过使用套接字[ESL]应用程序来实现。

https://wiki.freeswitch.org/wiki/Event_Socket_Outbound

答案 4 :(得分:1)

Originate命令用于使调用和桥接命令用于桥接调用。您可以使用esl套接字从外部调用originate命令。

示例:

 originate {ignore_early_media=true,originate_timeout=60}sofia/gateway/name/number &playback(message)

将此参考用于 node.js 中的esl https://github.com/englercj/node-esl