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)

Другие вопросы по тегам