Помогите разрешить ситуацию.
Постановка задачи:
Есть asterisk 13.7.1.
Он подключен к Sip шлюзу за которым находятся: вызываемый номер конференц-комнаты - 2299 и остальные абоненты.
Необходимо: создавать через PHP .call-файл, который вызывает любого абонента (пусть это будет 8025), а затем перемешает выполнение в нужный контекст c целью подключения данного вызванного абонента к селектору, находящемуся по номеру 2299:
dialSelector, 2299, 1. Это я сделал, проблем нет.
Проблема дальше:
Если контекст выглядит так:
[dialSelector]
exten => 2299,1, Answer();
exten => 2299,n, SET(CALLERID(num)=8025);
exten => 2299,n, NoOp(${CALLERID(num)});
exten => 2299,n, Dial(SIP/ast-outgoing/${EXTEN});
exten => 2299,n, Hangup();
...
[/code]
то все работает. Абонент мгновенно залетает в комнату 2299.
А если я хочу добавить перед звонком в селектор приветствие (exten => 2299,n, Playback(blablabla)), то само приветствие отрабатывает нормально, а вот звонок на номер 2299 уже не идёт. И даже в консоли нет ничего. И Sip set debug on молчит. rtp set debug on показывает обрыв обоих потоков RTP сразу при обработке команды Dial(....) . Где ошибка? Можно ли вообще так вызывать абонента и подключать его в селектор? Или только через скрипт?
Остальные настройки. (Firewall отключен, NAT - нет (локальная сеть))
sip.conf
Код: Выделить всё
[ast-incoming]
host=10.48.105.5
type=peer
canreinvite=no
context=ast-incoming
port=5060
disallow = all
allow=alaw
language=ru
[ast-outgoing]
host=10.48.105.5
type=user
canreinvite=no
context=ast-outgoing
port=5060
disallow = all
allow=alaw
language=ru
Код: Выделить всё
...
[dialSelector]
exten => 2299,1, Answer();
exten => 2299,n, NoOp(${CALLERID(num)});
exten => 2299,n, SET(CALLERID(num)=8025);
exten => 2299,n, Playback(ru/General, noanswer); (!!!!)
exten => 2299,n, Dial(SIP/ast-outgoing/${EXTEN});
exten => 2299,n, Hangup();
...