Asterisk, как можно воспроизвести аудио файл
Вот схема набора
[testInComingCalls]
exten => s,1,Answer
exten => 30953025,1,Dial(SIP/20000,20)
Я хотел бы воспроизвести аудиофайл, как только кто-нибудь ответит на звонок..
Пожалуйста, дайте мне некоторое представление о том, как вызвать php-файл, отправить входные данные и на основе выходных данных переслать вызов.
3 ответа
Поскольку большинство параметров набора номера действуют на вызываемого абонента, а не на вызывающего абонента, вам нужно проявить немного творческого подхода. Немного странно делать такие вещи с вызывающим абонентом, в отличие от вызываемой стороны, но эй, это Астериск: обычно есть способ сделать что угодно.
Один из подходов состоит в том, чтобы использовать менее известный (и несколько странный) вариант G. Цитирование из документации:
Если на вызов получен ответ, переведите вызывающую сторону с указанным приоритетом, а вызываемую сторону - с указанным приоритетом плюс один.
- контекст
- Экстен
- приоритет
По сути, опция G выбирает вызывающий / вызываемый канал и - вместо того, чтобы соединять их вместе, - направляет их обоих на план набора. Затем вы можете проявить немного творческого подхода к выполнению операции воспроизведения, прежде чем соединить их в Bridge. Следующий Dialplan должен работать (предостережение: я не проверял это, и я сижу на ноутбуке на диване, но это должно приблизить вас):
[default]
exten => 1000,1,NoOp()
same => n,Dial(SIP/alice,,G(default^bridge_and_play^1))
same => n,Hangup()
exten => bridge_and_play,1,Goto(jump_caller,1)
same => n,Goto(jump_called,1)
same => n,Hangup()
exten => jump_caller,1,NoOp()
same => n,Answer()
same => n,Playback(tt-monkeys)
same => n,Bridge(${bridge_this})
same => n,Hangup()
exten => jump_called,1,NoOp()
same => n,Set(MASTER_CHANNEL(bridge_this)=${CHANNEL})
same => n,Wait(1000)
same => n,Hangup()
Кому вы хотите воспроизвести аудио, абоненту или вызываемому абоненту?
Вы можете использовать флаг M для набора номера, чтобы запустить макрос для вызова прямо перед тем, как он соединится, он запускается на вызываемом SIP/200000. Пример:
[testInComingCalls]
exten => 30953025,1,Dial(SIP/20000,20,M(onanswer))
[macro-onanswer]
exten => s,1,Playback(hello-world)
Вам нужно прочитать информацию об интерфейсе AGI, который позволяет использовать php через phpagi для управления диалпланом.
http://www.voip-info.org/wiki/view/Asterisk+AGI
Для воспроизведения файла используйте команду AGRE STREAM FILE ($agi->stream_file в php)