Проблема следующая: на сервере имеем имена пиров соответствующие номерам мобильных (79998887766). Такой формат связан с системой авторизации в информационной системе компании, которая появилась задолго до Астериска и менять ее будет сложно.
Пользуемся сервисом облачной телефонии от Ростелекома. До недавнего времени на входящих из внешнего мира было достаточно логики, которую предоставляет в рамках услуги РТК. Соответственно, офисные телефоны (у которых имена стандартные, ну там 101, 102 и т.п.) наравне с сервером регались напрямую в РТК, проблем со входящими в рамках офиса не было.
Сейчас захотели CRM, связки с оповещалкой whatspp и т.п., все входящие пришлось заворачивать на asterisk. И вот тут появилась проблема со входящими с мобильных номеров, которые уже зарегистрированы в системе с качестве пиров.
Вот звонок извне (со стороны Ростелекома) с мобильного телефона +79998887766 ( 74212332211 - городской внешний номер). Одновременно на сервере есть такой SIP-пир (79998887766).
- Код: выделить все
<--- SIP read from UDP:x.x.x.x:5060 --->
INVITE sip:74212332211@y.y.y.y:5060 SIP/2.0
Via: SIP/2.0/UDP x.x.x.x:5060;branch=z9hG4bK3mbntg202op565gksaq0.1
From: "79998887766" <sip:79998887766@999999.35.rt.ru>;tag=ziYR38bE
To: <sip:asterisk@999999.35.rt.ru>
Call-ID: 04e3-HXDMnXY3i0o4@10.243.214.134
CSeq: 1 INVITE
Contact: <sip:79998887766@x.x.x.x:5060;transport=udp>
Content-Type: application/sdp
Max-Forwards: 66
Supported: replaces
User-Agent: RTC CallManager 7.8-37
X-SID: 04e3-qzkuOuMqENkq
Content-Length: 197
v=0
o=- 045047 45047 IN IP4 x.x.x.x
s=-
c=IN IP4 x.x.x.x
t=0 0
m=audio 9778 RTP/AVP 8 18 0 97
a=rtpmap:18 G729/8000
a=rtpmap:97 telephone-event/8000
a=fmtp:97 0-15
a=sendrecv
<------------->
--- (13 headers 10 lines) ---
Sending to x.x.x.x:5060 (no NAT)
Sending to x.x.x.x:5060 (no NAT)
Using INVITE request as basis request - 04e3-HXDMnXY3i0o4@10.243.214.134
Found peer '79998887766' for '79998887766' from x.x.x.x:5060
<--- Reliably Transmitting (NAT) to x.x.x.x:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP x.x.x.x:5060;branch=z9hG4bK3mbntg202op565gksaq0.1;received=212.122.2.180;rport=5060
From: "79998887766" <sip:79998887766@999999.35.rt.ru>;tag=ziYR38bE
To: <sip:asterisk@999999.35.rt.ru>;tag=as3fd55650
Call-ID: 04e3-HXDMnXY3i0o4@10.243.214.134
CSeq: 1 INVITE
Server: Asterisk PBX 16.1.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="5fd07baf"
Content-Length: 0
В дебаге видно, что звонок отрубается уже на INVITE по unauthorized. Сервер хочет, чтобы пир зарегистрировался. Нужно как-то сменить caller id, но как это сделать, если до диалплана вызов не доходит.
Может кто-нибудь сталкивался?
Настройки пира (если будет полезно). Да, пиры в realtime из mysql:
- Код: выделить все
MariaDB [asterisk]> select name, host, type, context, dtmfmode, nat, disallow, allow, qualify from sippeers where name = '7999888776';
+-------------+---------+--------+-------------+---------------+---------------------+----------+----------------+---------+
| name | host | type | context | dtmfmode | nat | disallow | allow | qualify |
+-------------+---------+--------+---------+------------------------------+----------+---------------------+----------+----------------+---------+
| 7999888776 | dynamic | friend | mobile | rfc2833 | force_rport,comedia | all | alaw;ulaw;h264 | no |
+-------------+---------+--------+---------+------------------------------+----------+---------------------+----------+----------------+---------+
Настройки транка на Ростелеком:
- Код: выделить все
[general]
register => asterisk:yyyyyyy@999999.35.rt.ru/7421233221
[new-rt]
username=asterisk
type=friend
secret=yyyyyyy
qualify=yes
nat=no
insecure=invite
host=999999.35.rt.ru
fromuser=asterisk
fromdomain=999999.35.rt.ru
dtmfmode=rfc2833
defaultuser=asterisk
canreinvite=no
context=call-in
disallow=all
allow=alaw
allow=ulaw