2014-01-31 5 views
4

Вот план набораЗвездочка, Как я могу играть звуковой файл

[testInComingCalls] 

exten => s,1,Answer 

exten => 30953025,1,Dial(SIP/20000,20) 

Я хотел бы играть звуковой файл, как только кто-то ответил на звонок ..

Пожалуйста, дайте мне некоторое представление как вызвать php-файл, отправить вход и на выходе переслать вызов.

ответ

3

Поскольку большинство Dial options действуют на вызываемой стороне, а не вызывающего абонента, вы должны получить мало творческих. Это немного странно, чтобы делать такие вещи вызывающему, а не вызываемой стороне, но, эй, это Asterisk: обычно есть способ сделать то, что вы хотите.

Один из подходов заключается в использовании менее известного (и несколько странного) G. Цитирование из документации:

Если на вызов отвечает, передайте вызывающему абоненту указанный приоритет, а вызываемый - указанному приоритету плюс один.

  • контекст
  • Экстен
  • приоритет

В принципе, вариант G принимает вызывающего/вызываемого канала и - вместо мостов их вместе - отскакивает оба из них к диалплан. Затем вы можете сделать небольшое творческое упражнение для выполнения операции воспроизведения, прежде чем объединять их в Bridge. Следующий Диалплан должен работать (предостережение: я не проверял это, и я сижу на ноутбук на диване, но это должно закрыть):

[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() 
2

Кому вы хотите воспроизвести аудио, вызывающего или вызываемого абонента?

Вы можете использовать флаг M для вызова макроса при вызове прямо перед его мостом, он запускается на вызываемом SIP/200000. Пример:

[testInComingCalls] 
exten => 30953025,1,Dial(SIP/20000,20,M(onanswer)) 

[macro-onanswer] 
exten => s,1,Playback(hello-world) 
+0

Я хотел бы играть записанное приветственное сообщение вызывающего абонента. –

0

Вам необходимо прочитать информацию об интерфейсе AGI, который позволяет использовать php через phpagi для управления диалпланом.

http://www.voip-info.org/wiki/view/Asterisk+AGI

Для воспроизведения файлов используйте STREAM FILE команды AGI ($ agi-> stream_file в PHP)