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

Возможна ли обработка SIP кодов в диалплане?

Проблемы Asterisk без вэб-оболочек и их решения

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

Sanek
Сообщения: 81
Зарегистрирован: 17 май 2012, 14:55

Возможна ли обработка SIP кодов в диалплане?

Сообщение Sanek »

Всех с прошедшими и наступающими праздниками!
Возник такой вопрос: возможно ли в диалплане астера "посмотреть" SIP-коды ответов и изменить поведение команды dial()?

Стоит такая задача: при исходящем звонке со * на SIP-GSM шлюз "обрезать" IVR моб. оператора и при "неудачном" дозвоне звонок либо отбить без открытия медиаканала либо завернуть в другой транк... но гугль внятного решения не подсказал, по этому обращаюсь к гуру-астерисковедам за подсказкой направления, в какую сторону копать.
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение gosha »

это не астериска задача. Поставьте камалио между астериском и шлюзом и проверяте на нем.
Sanek
Сообщения: 81
Зарегистрирован: 17 май 2012, 14:55

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение Sanek »

Т.е. на астере без дополнительных приблуд никак не получится? Просто не хочется городить несколько звеньев в каналах - надежность всего канала будет в надежности самого глючного звена...
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение Aven »

А как Вы собираетесь определять что там автоответчик оператора, а не живой голос?
Решения телефонии на базе Asterisk || http://it-need.ru
Sanek
Сообщения: 81
Зарегистрирован: 17 май 2012, 14:55

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение Sanek »

Во первых определить, какие SIP коды шлются на астериск и на основании этих кодов поступивший звонок обрабатывать стандартно либо нестандартно (отбивать или рероутить).
Если я не ошибаюсь (но надо еще перепроверить), при успешном звонке идет такая последовательность:
100 Trying
100 Trying
...
183 Ringing
183 Session progress
и открывается медиаканал

При неуспешном звонке (попали на IVR оператора):
100 Trying
100 Trying
...
183 Ringing
и открывается медиаканал

Т.е. при успешном звонке после Ringing получаем Session progress а при неуспешном Session progress не получаем...
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение tma »

Sanek писал(а):Т.е. при успешном звонке после Ringing получаем Session progress а при неуспешном Session progress не получаем...
Каким по Вашему будет вызов на выключенный мобильный телефон? Успешным или неуспешным?
Сообщение сети Вы получите как раз в Session Progress... А если номер не сущесвтует, то получите Trying, а затем Not found без Ringing/Progress.
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
Sanek
Сообщения: 81
Зарегистрирован: 17 май 2012, 14:55

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение Sanek »

Согласен. Но первоначальный вопрос стоит так: можно ли в астериске во время совершения звонка получить коды ответа и изменить работу команды dial?
Т.е. отправили звонок и принудительно не открываем медиаканал (или шлем подменный КПВ) в течение определенного времени... далее на основании кодов ответа открываем медиаканал и устанавливаем соединение, либо прерываем исполнение команды dial и со звонком совершаем какие-то другие действия.
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение tma »

Я такого вообще никогда не видел. Если честно - извращение какое-то и относительно не только asterisk'а.
Как вариант, можно сделать Dial с временем в несолько секунд, а затем - ${HASH(SIP_CAUSE,${CDR(dstchannel)})}.
Но этот SIP_CAUSE как-то мягко говоря странно работает - когда хочет (впрочем как и многое другое).
Если терминатор (GSM-шлюз) открывает медиа-канал, то очень мало софта умеет после этого осуществлять перемаршрутизацию.
Один такой softswitch я знаю - это VOS, его китайский телеком использует насколько я знаю, ну и сделан в Китае.
Он даже умеет в случае, если терминатор отвалится, повторно его вызвать и вновь установить соединение без отключения оригинатора.
Теоретически такой функционал можно замутить на asterisk'е через конференции, но это будет извращение и лишняя нагрузка.
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
Sanek
Сообщения: 81
Зарегистрирован: 17 май 2012, 14:55

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение Sanek »

я такого тоже не видел, но слышал... У двоих терминаторов работает, но они молчат как партизаны на допросе :(
Для понимания задачи набросал примерный план по обработке звонков: http://clip2net.com/s/6A6BH7
Как вариант, можно сделать Dial с временем в несолько секунд, а затем - ${HASH(SIP_CAUSE,${CDR(dstchannel)})}.
у меня вообще не работает - выдает пустое значение
и опять-же, если нарвемся на ИВР оператора - звонящий абонент его услышит (а нужно чтоб не слышал)

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

...
exten => _X.,n,Dial(${tech}/${endtrunk}/${prefixt}${EXTEN:${lenprefixp}})
exten => _X.,n,NoOp(**************  DIALSTATUS= ${DIALSTATUS}******)
exten => _X.,n,NoOp(CDR(dstchannel)=${CDR(dstchannel)})
exten => _X.,n,NoOp(CodeDial=${HASH(SIP_CAUSE,${CDR(dstchannel)})})
...
и в логах получаю:

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

[2014-01-13 08:58:25] VERBOSE[16536][C-00016978] pbx.c:     -- Executing [627#79202276798@pools:61] NoOp("OOH323/mera-78487", "CDR(dstchannel)=SIP/Voronezh-shatkov-81-02-00007dca") in new stack
[2014-01-13 08:58:25] VERBOSE[16536][C-00016978] pbx.c:     -- Executing [627#79202276798@pools:62] NoOp("OOH323/mera-78487", "CodeDial=") in new stack
tma
Сообщения: 1809
Зарегистрирован: 18 сен 2010, 20:50
Контактная информация:

Re: Возможна ли обработка SIP кодов в диалплане?

Сообщение tma »

Sanek писал(а):если нарвемся на ИВР оператора - звонящий абонент его услышит
'r' в Dial "забъет" сообщение и будет генерировать ringing.
SkyTel OU - облачная АТС, DID, SIP-транк с посекундной тарификаицей, мобильная связь
http://skytel24.com | Эстония: +372.333.55.10 | Россия: +7(495)4019900
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH