Мне нужно запустить начальное воспроизведение звукового файла при ответе на вызов и обнаружить звуковой сигнал со стороны вызываемого абонента
Я попробовал:
- start avmd
- bridge call
- при ответе начать воспроизведение вступительного звукового сообщения с использованием bgapi
НО, когда начинается фоновое воспроизведение, avmd ставится на паузу и продолжается после
план набора номера шлюза:
<extension name="mytelco">
<condition field="destination_number" expression="^987(\d+)$">
<action application="set" data="effective_caller_id_number=46xxxxxxxx"/>
<param name="caller-id-in-from" value="true"/>
<action application="set" data="record_link=${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>
<action application="record_session" data="/var/www/html/freeswitch/recordings/${record_link}"/>
<action application="lua" data="/etc/freeswitch/scripts/beep_detection-from-call-v0.1.2.lua $1 ${record_link}"/>
<action application="hangup"/>
</condition>
</extension>
файл beep_detection-from-call-v0.1.2.lua
#!/usr/local/bin/lua
DNID = argv[1]
if session:ready() then
session:sleep(1000)
session:execute("avmd_start", "inbound_channel=1,outbound_channel=0,sample_n_continuous_streak=10,sample_n_to_skip=0,debug=1,report_status=1")
session:execute("bridge", "{execute_on_answer=lua /etc/freeswitch/scripts/on_answer-v0.3.lua " .. uuid .. "}sofia/gateway/mytelco/" .. DNID)
session:execute("avmd_stop","")
end --if
файл on_answer-v0.3.lua
#!/usr/bin/lua
uuid_original = argv[1]
api = freeswitch.API()
reply = api:executeString("bgapi uuid_broadcast " .. uuid_original .. " /usr/share/asterisk/sounds/en/dennis-ivan.gsm both")
freeswitch.consoleLog("INFO","==============================================")
freeswitch.consoleLog("INFO","API reply is:" .. reply)
freeswitch.consoleLog("INFO","==============================================")