Есть Yate (172.27.0.123), на ней терминируются шлюзы, через нее выход на внешние линии. Решил сделать IVR-меню на астериске (10.160.1.149):
[menu]
exten => s,1,Wait(1)
;exten => s,n,Dial(SIP/1004@172.27.0.123) ; <- (1)
exten => s,n,Playback(welcome)
exten => s,n,WaitExten()
exten => 1,1,Playback(inet_connect)
exten => 1,2,Playback(inet_mts)
exten => 1,3,Playback(inet_infoteka)
exten => 1,4,Wait(3)
exten => 1,5,Dial(SIP/06606@172.27.0.123)
exten => 2,1,Playback(ul_alanov)
exten => 2,2,Playback(ul_infoteka)
exten => 2,3,Wait(3)
exten => 2,4,Dial(SIP/06606@172.27.0.123)
exten => _01X0X,1,Dial(SIP/${EXTEN:1}@172.27.0.123)
exten => t,1,Goto(s,1)
exten => i,1,Goto(s,1)
И все бы хорошо: прилетает звонок на ять, отправляется на ivr-меню, но когда звонок возвращается на ять с астериска, то звонящий не слышит снявшего трубку!
На уровне сети проблем, вроде бы, нету: пинги все летают, файерволлы отключал. Почитал форумы - подумал, что проблема в кодеках. Выставил на шлюзах
prefered: alaw mulaw
в яти ysipchan
[codecs]
alaw=enable
mulaw=enаble
в * в sip.conf прописал и в [general] и в аутгоинг пире до яти
disallow=all
allow=alaw
allow=ulaw
Если раскоментарить в ивр-меню строчку (1), то проблема исчезает. А если в первой строке Wait заменить на Answer - проблема возвращается...
Предположительно, проблема с тем, что звезда и ять не договорились о статусе звонка (180 - Ringing & 183 - Progress), поэтому ять и не транслирует ртп до звонящего абонента. Т.о. просмотрев форумы и выяснив, что у меня не получится проигрывать ивр без снятия трубки (т.к. дтмф от звонящего абонента не пройдут по операторскому каналу) - надо, чтобы * сообщила яте о том, что трубка снята... но как это сделать - не имею представления.