VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Вызов абонента через .call файл и переадресация

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Ответить
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Вызов абонента через .call файл и переадресация

Сообщение shader »

Здравствуйте.
Помогите разрешить ситуацию.
Постановка задачи:
Есть 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
Extensions.conf (нерабочий)

Код: Выделить всё

...
[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();
...
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Вызов абонента через .call файл и переадресация

Сообщение Wapo »

exten => 2299,n, Playback(ru/General, noanswer); (!!!!)
У вас ПЕРВОЙ строкой стоит Answer ну и для чего тогда при проигрывании noanswer
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: Вызов абонента через .call файл и переадресация

Сообщение shader »

аааа это не принципиально. Я всякие варианты пробовал. При любом варианте добавления Playback Dial перестаёт работать.
Заменил 2299 на локального абонента Asterisk. Результат тот же.
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Вызов абонента через .call файл и переадресация

Сообщение Wapo »

Странно - я сам недавно делал такое - там просто не Dial стоял, а ConfBridge перед которым Playback с сообщением - все работает. Версия была 11-я.

Попробуйте поставить еще и directmedia=no в настройках
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: Вызов абонента через .call файл и переадресация

Сообщение shader »

Не помогло. Как только выполнение диалплана доходит до строки Dial ()
RTP потоки перестают бегать (в обе стороны), в трубке тишина... SIP debug молчит. А после того, как кладёшь трубку выдаёт попытку вызова и отменой.
SIP/2.0 487 Request Terminated.
Последний раз редактировалось shader 08 фев 2016, 16:03, всего редактировалось 1 раз.
whoim
Сообщения: 766
Зарегистрирован: 26 ноя 2013, 23:25
Откуда: Краснодар
Контактная информация:

Re: Вызов абонента через .call файл и переадресация

Сообщение whoim »

Лог?
И не очень понятно, куда должно звонить по exten.
облачные и локальные сервера asterisk/freepbx/a2billing/crm с полной техподдержкой. skype: whoim2, sipuri: whoim@asterisk.ru
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: Вызов абонента через .call файл и переадресация

Сообщение shader »

Чучуть модифицировал схему, заменив номер селектора на локального абонента этого Asterisk (поставил Sip=клиента на ноут) с номером 6002 для простоты дебаггинга. Т. е. при создании Call файла сначала вызывается абонент 8025, после снятия трубки абонентом 8025, запускается контекст dialtest (где теоритически должен происходить вызов на 6002):

Код: Выделить всё

[dialtest]

exten => s,1, Answer();
exten => s,n, NoOp(${CALLERID(num)});
exten => s,n, Playback(ru/General);
exten => s,n, Set(CALLERID(num)=8025);
exten => s,n, Dial(SIP/6002, ,Tt);
exten => s,n, Hangup();

.

Код: Выделить всё

---
    -- SIP/ast-outgoing-00000088 answered
    -- Executing [s@dialtest:1] Answer("SIP/ast-outgoing-00000088", "") in new stack
    -- Executing [s@dialtest:2] NoOp("SIP/ast-outgoing-00000088", "2299") in new stack
    -- Executing [s@dialtest:3] Playback("SIP/ast-outgoing-00000088", "ru/General") in new stack
    -- <SIP/ast-outgoing-00000088> Playing 'ru/General.slin' (language 'ru')
    -- Executing [s@dialtest:4] Set("SIP/ast-outgoing-00000088", "CALLERID(num)=8025") in new stack
    -- Executing [s@dialtest:5] Dial("SIP/ast-outgoing-00000088", "SIP/6002, ,Tt") in new stack
  == Using SIP RTP CoS mark 5

<--- SIP read from UDP:10.48.48.17:5060 --->


<------------->
Asterisk*CLI> 

Asterisk голый, не FreePBX. Вчера поставил.
shader
Сообщения: 117
Зарегистрирован: 09 авг 2013, 10:33

Re: Вызов абонента через .call файл и переадресация

Сообщение shader »

разобрался, заработало. Нужно было после Playback(...) добавить Wait(1). так работает.
Аватара пользователя
Wapo
Сообщения: 795
Зарегистрирован: 02 мар 2011, 17:53

Re: Вызов абонента через .call файл и переадресация

Сообщение Wapo »

А попробуйте иначе: поставить Wait(1) после команды Answer - даже интересно что произойдет. Кстати, я Wait(1) всегда ставлю в таких случаях, дабы не было проглатывания сообщения.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH