我想写一个连接到freeswitch的网络应用程序,并拨打某个目的地号码(固定电话或内部SIP设备的网关)并播放一些声音(可能在lua脚本中做一些逻辑)。
在阅读freeswitch wiki后,我找到了originate命令,但它对我不起作用(我只测试内部sip号 - sofia / internal / username @ ip)。 如果originate命令可以这样做,如何正确使用它? 如果还有其他方式请告诉我。
感谢。
答案 0 :(得分:1)
我测试的一种方法是运行来自freeswitch控制台或ESL的lua脚本:( ex“luarun test.lua”)
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,请按照以下步骤操作。
将以下代码添加到您的freeswitch / conf / autoload_configs
运行接收POST请求的HTTP服务器并返回您的拨号方案(告诉freeswitch播放您的wav)。
<param name="gateway-url" value="http://yourIP:yourServerPort/dialplan.xml" bindings="dialplan"/>
希望这有帮助。
答案 3 :(得分:1)
您可以通过使用套接字[ESL]应用程序来实现。
答案 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