2015-05-06 3 views
2

У меня есть код в Lua, который отвечает на звонок, и после выполнения ряда операций наводит мосты на новую ногу.Остановить воспроизведение в Freeswitch

Операции занимают от нескольких секунд до нескольких минут.

Чтобы сохранить клиента, мне нужно воспроизвести звук, который у меня есть, так это то, что воспроизведение все еще продолжается после моста вызова.

Конкретный вопрос: как остановить звук, вызванный воспроизведением?

Мой код выглядит

session:answer() 
session:execute("playback", '/some/file.wav') 
. 
. 
. 
local connectionString = '{bypass_media=true,origination_caller_id_number=555,destination_number=646}' 
connectionString = connectionString .. 'sofia/external/[email protected]' 
session:execute('bridge', connectionString) 

ответ

1

У меня была похожая задача, и решить ее, запустив новый сценарий для исходящей ноги. Когда ответ на исходящий ответ отвечает, я посылаю uuid_break на входящую ногу и позволяю каналам соединяться вместе. Это сделано в Perl, но Lua должно быть очень похоже: https://github.com/xlab1/freeswitch_secretary_bug (скрипты находятся в каталоге скриптов).

Но, в общем, гораздо проще реализовать такие сценарии через ESL: ваша программа может обрабатывать несколько каналов через ESL асинхронно и легко выполнять все необходимые воспроизведения и разрывы. Здесь я сделал простой прототип в Голанге, чтобы реализовать аналогичный сценарий через ESL: https://github.com/xlab1/go-fs-secretary-prototype (здесь я использовал синхронный исходящий ESL-сокет, но его также не сложно реализовать в асинхронном входящем режиме).

Я надеюсь, что это помогает :)

+0

действительно это правильное направление, спасибо за ответ – Gabriel

+0

Также здесь примеры и сценарии, я забыл дать эту ссылку https://github.com/voxserv –