Да, действительно получилось используя функцию в моем случае PJSIP_HEADER. Вначале нашел функцию sipgetheader(), но оказалось, что это что-то древнее, уже в актуальных asterisk'ах не существущее. В результате получилось так:
exten => s,1,Set(CALLNUM=${PJSIP_HEADER(read,To)})
exten => s,n,Set(CALLNUM=${CUT(CALLNUM,@,1)})
exten => s,n,Set(CALLNUM=${CUT(CALLNUM,:,2)})
exten => s,n,Goto(куда_надо,${CALLNUM},1)
А "на практике" экстеншн вышлядит так: pbx_sip_0
- так что от "s" не сильно отличается)
Потому это соединение двух АТС, виртуальной мегафона и офисной,
которое предполагает маршрутизацию с номеров на офисной АТС на "короткие" номера на ВАТС и обратно. И меня удивило, что на "короткие" номера на ВАТС вызовы с офисной АТС проходили сразу, а обратно все все вызовы отправллись на "s". И пришлось городить вот такую .. маршрутизацию)
При регистрации на мегафоновской ВАТС в строке регистрации указывается экстеншен, и никаких бубнов. Делал и под SIP, и под PJSIP.
tesak89 ( 2022-02-02 12:18:16 +0400 )редактироватьНу, указан там экстеншн. И что? - все звонки с ВАТС на подключенную АТС идут на этот эсктеншн. Не указан на s.
Все бубны на месте. Я же начал с цитаты из мегафоновской поддержки: берите номер из To, а не Request-URI. Если у вас вас в мегафоновской АТС подлкючен один екстеншн, то, конечно, проблем не будет, потому что все вызовы Вы будете ожидать на него. А если в мегафоновской ватс стоит маршрутизация , предположим _3XXX
на подключенную офисную АТС, то набирай хоть 3000, хоть 3999, вызов пойдет на pbx_sip_0
. И нужно из To нужный номер доставать, как выше показано, оказывается.
Речь идёт не о подключении к ватс мегафона с учетными данными юзера, что, вероятно Вы имеете в виду, а об их услуге "Подключение других АТС".
В цитате мегафона ключевое не "берите номер из To:", а "соответственно, наша платформа...". То есть, как запрос на регистрацию отправляется, то инвайты и летят. Как я писал выше, у меня почему-то регистрация идет без бубнов в виде выдирания DID из полей инвайта. Под SIP в sip.conf имею: register => <user>:<pass>@<host>.megapbx.ru/<did> При поступлении звонка извне выполняется <did>@<defaultcontext>. Разница между моим конфом и твоим -- поле Contact при исходящей регистрации, по ходу. Вот и надо понять, почему в Contact твоя PBX указывает s@XXX.XXX.XXX.XXX, а не <exten>@XXX.XXX.XXX.XXX
tesak89 ( 2022-02-04 14:06:15 +0400 )редактироватьУ меня PJSIP транк. Там есть специальный поле contact, в котрое ставишь "did" и инвайте летят на него. Этот did вышлядит так: sip_pbx_0
. Соответвенно все входящие вызовы идут на него. И приходится их так же "выдирать" из To. Поэтому я и написал, разницы никакой.
Хорошо, я на строю транк через chan_sip
, посмотрим, будет ли разница)
Попробуй chansip, с PJSIP я немного обманул, у меня регистрации в мультифоне на нем сделаны. PJSIP на реалтайме? Попробуй поле contactuser и clienturi заполни, на chansip успеется перейти). У меня в clienturi вбито sip:7XXXXXXXXXX@multifon.ru, в contactuser 7ХХХХХХХХХХ
tesak89 ( 2022-02-04 17:43:20 +0400 )редактироватьДа мне недолга настроить что угодно)
Я уже сделал тестовый транк на chan_sip
.
строк регистрации: pbx_sip_1@vatsxxxxxx.megapbx.ru:xxxxxxxxxxxx@vatsxxxxxx.megapbx.ru/pbx_sip_1
- как у них рекомендовано.
Интвайты прилетают на pbx_sip_1
, как и ожидалось.
Я же говорю, мы о разном. Вы о поключении мультфона. Там у вас есть один номер, на него Вы вызовы и ожидаете. Я же о соединении двух АТС, между которыми должны ходить звонки
с телефонов, подключенных к этим АТС. Например на ВАТС мегофана 7XX, а на офисной 4XXX. Соответсвенно, если звонишб из офиса с номера 4000 на 700 на ВАТС, то все ок, звонит 700. А если взонишь с 700 на 4000, то вызов на asterisk приходит на pbx_sip_1
. И приходится номер "выдирать" из To, хоть тресни.
А, я-то их подключаю ради одного экстеншена, входящие закинуть к себе. В моем случае достаточно pbxsip1@vatsxxxxxx.megapbx.ru:xxxxxxxxxxxx@vatsxxxxxx.megapbx.ru/7777777 прописать. А вообще странно, что их ВАТС не позволяет нормально состыковаться с другой АТС
tesak89 ( 2022-02-07 14:07:55 +0400 )редактировать