Страница 1 из 2

Переадресация с аппарата наружу через SIP-T

Добавлено: 15 ноя 2016, 16:40
DanilovAF
Добрый день!

Помогите решить мою задачку...

Есть 13 астериск с каналом PJSIP.
Подключен SIP-T на Ростелеком.
Два внутренних номера. Звонки ходят наружу внутри и т.д...

На аппарате GRANDSTREAM GXP1625 ставлю переадресацию при неответе. Классно - может настроить пользователь из меню аппарата.

Делаю вызов снаружи на входящий номер, добираю добавочный - попадаю на GXP1625 - через 10 секунд он пытается переадресовать на мобильный номер.

Соответственно аппарат кидает в Астериск такой пакетик
SIP/2.0 302 Moved Temporarily
и добавляет строку:
Diversion :<sip:777@192.168.100.177:5060>;reason=unconditional
В поле From идет внешний номер, на который сделана переадресация (все гут).

Астериск начинает делать вызов в SIP-T
Request-Line: INVITE sip:внешний номер@10.10.10.22:5060 SIP/2.0
Ну и добавляет поле:
Diversion: <sip:777@qwerty.qw.ru>;reason=unconditional
Поля FROM и TO - все красиво

Ростелеком говорит, что в Diversion должен быть номер который изначально пришел на астериск или вообще убрать поле Diversion.
И вот чтобы я ни делал я не могу:
Убрать Diversion
Изменить поле Diversion
Прочитать поле Diversion

Пытался это делать я с помощью PJSIP_HEADER.
Более того, PJSIP_HEADER даже не может ничего прочитать из заголовка, при этом ошибок в консоли нет...

В других случаях PJSIP_HEADER работает исправно, только для Invite после Moved Temporarily не работает.

У кого какие идеи как подправить/удалить поле Diversion из Invite или как-то иначе выйти из положения?
Спасибо...

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 15 ноя 2016, 17:47
DanilovAF
Добавление.

На канале SIP и астериске 1.8 данная штука полечилась добавлением оператора:
SIPAddHeader(Diversion:222333;reason=no-answer);

При этом в SIP-T улетало два поля Diversion.
Попытки удалить строку Diversion от телефона в диалплане не увенчались успехом...

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 15 ноя 2016, 18:29
ded
1) Обоснуйте необходимость использования PJSIP ?

2) Манипулировать SIP заголовками можно и нужно, не только через SIPAddHeader

exten => s,n,Set(DIV=${CUT(CUT(SIP_HEADER(Diversion), ,2),:,1))})
exten => s,n,NoOp(Diversion header is --- ${DIV})

3) лучше бы переадресацию делать средствами станции, сервисный код
Call Forward All Activate *72
и там много ещё
Call Forward
Call Forward All Activate
Call Forward All Deactivate
Call Forward All Prompting Activate
Call Forward All Prompting Deactivate
Call Forward Busy Activate
Call Forward Busy Deactivate
Call Forward Busy Prompting Activate
Call Forward Busy Prompting Deactivate
Call Forward No Answer/Unavailable Activate
Call Forward No Answer/Unavailable Deactivate
Call Forward No Answer/Unavailable Prompting Activate
Call Forward Toggle

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 08:32
DanilovAF
Добрый день!

1) Необходимость использования PJSIP:

- PJSIP считается наиболее правильной реализацией SIP (надеюсь исчезнут проблемы с периодической потерей регистрации Yealink).
- Можно хоть каждого SIP клиента посадить на свой порт, особенно актуально когда много удаленных офисов, хотя можно обойтись и каналом SIP.
- Сообщество движется в сторону PJSIP и скорее всего переход произойдет.

2) Даже при использовании канала SIP, он не может удалить Diversion, прилетающий с телефона (только доьавить еще один). При использовании PJSIP функции SIP_HEADER нет. К тому же SIP_HEADER не может изменить заголовок.

3) Да зайца можно убить мнигими способами, но как даже если натренировать пользователей применять сервисные коды, как конкретный человек поймет, что у него включена переадресация, на телефоне же нет никакого признака, что станция переадресует все вызовы с его номера? Считаю меню на телефоне более дружелюбным способом.

Спасибо за рассмотрение других вариантов, но тем не менее остается, что функциия PJSIP_HEADER в разных ситуациях работает непредсказуемо..

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 09:31
awsswa
- PJSIP считается наиболее правильной реализацией SIP (надеюсь исчезнут проблемы с периодической потерей регистрации Yealink).
- Можно хоть каждого SIP клиента посадить на свой порт, особенно актуально когда много удаленных офисов, хотя можно обойтись и каналом SIP.
- Сообщество движется в сторону PJSIP и скорее всего переход произойдет.

Я честно не знаю что у вас за проблема с Yealink и пропаданием регистрации но ...
У меня была сеть собранная на бытовых роутерах (tp-link, D-link, Asus) прошитых по openwrt по всей стране (больше 20 филиалов)
И всё работало .. и не падала регистрация и asterisk 11 версии ... более 100 телефонов (panasonic, D-link, grandstream, cisco, Yealink, addpac)

PS Зачем каждого клиента садить на отдельный порт я вообще не понимаю. У вас ведь не 1500 клиентов ... ddos от регистраций не грозит

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 11:00
DanilovAF
Вот и печаль-то...
Приходим к выводу, что если хочется использовать такую переадресацию - надо возвращаться на канал SIP.

ЗЫ: интересно, считается это багом и куда его можно заявить?

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 11:17
gosha
DanilovAF писал(а): 2) Даже при использовании канала SIP, он не может удалить Diversion, прилетающий с телефона (только доьавить еще один).

send_diversion=no

в sip.conf конечно же стоит ?

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 11:38
ded
DanilovAF писал(а):- Сообщество движется в сторону PJSIP и скорее всего переход произойдет..
За всё сообщество расписываетесь? Сообщество разработчиков, или пользователей? Это разные сообщества.
У меня другие наблюдения кто куда движется.

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 14:38
DanilovAF
Уф решено! Мир стоит!

В 1.8 send_diversion ни как не влияло.
В итоге функция PJSIP_HEADER работает исправно во всех случаях. Влияла опция send_diversion на канале SIP-T.
Если ее не поставить в send_diversion=no, то поле diversion перезаписывается независимо от бубнов с PJSIP_HEADER.

Спасибо за диалог!!!

Re: Переадресация с аппарата наружу через SIP-T

Добавлено: 16 ноя 2016, 16:04
Wapo
1) Необходимость использования PJSIP:

- PJSIP считается наиболее правильной реализацией SIP (надеюсь исчезнут проблемы с периодической потерей регистрации Yealink).
Дилетантизм + реклама ПРОЦВЕТАЕТ. Жаль, что СВЯЗЬ не выигрывает :(