Возникла необходимость регистрировать часть телефонов из Интернет. У AcmePacket есть внешний интерфейс, на котором должны регистрироваться телефоны извне (в настройках телефона вводим именно внешний адрес). Но для Elastix подключаемые таким образом внешние телефоны видны с тем же локальным адресом (адрес внутреннего интерфейса Acme), что и группа AcmePacket (пусть это будет 192.168.1.35). Пока тестируем только на телефоне 3001, он подключается извне. Вот что показывает sip show peers. Соответственно если будет несколько внешних телефонов, они все будут иметь тот же адрес, что и Acme.
Код: Выделить всё
3001/3001-9kmd9m7ds1lu7 192.168.1.35 D No No A 5060 OK (91 ms)
Acme 192.168.1.35 No No 5060 OK (3 ms)
Для части предприятий средствами Acme обрезали префикс, т.е. сразу приходил внутренний номер. Сначала сделали так же. Т.е. в плане нумерации Elastix никакая дополнительная обработка входящих не производилась. Входящие приходили, но тогда телефон 3001 не мог звонить внутри Elastix без префикса, т.е. не мог позвонить 3000. Тогда сделали так, что Acme ничего не обрезает, а присылает номер с префиксом 995. Я в кастомном контексте удаляю префикс 995. На Acme (я пока не вникала, другой человек админит) прописали для этого в Realm два шаблона для звонков с префиксом и без префикса (внешние телефоны и сам Elastix в AcmePacket прописаны в разных realm). Теперь 3001 может звонить на другие внутренние номера Elastix набирая 3xxx.
Возникла следующая проблема. Периодически входящие вызовы то приходят, то короткие гудки. В консоли при verbose 3 во время неудачных вызовов вообще звонок не обрабатывается в плане нумерации, тишина. Включила дебаг SIP. Выяснилось, что при проблемных входящих звонках peer распознается как номер телефона 3001 (см. выше sip show peers), после чего ошибка 401:
Код: Выделить всё
<--- SIP read from UDP:192.168.1.35:5060 --->
INVITE sip:9953000@ip-адрес-Elastix:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.35:5060;branch=z9hG4bKegf2hq207od1ru4am-3.1
From: "Familiya Imya" <sip:1152057@ip-адрес-АТС-другого-предприятия>;tag=80ea55c88af7e61ec915888fd4000
To: sip:9953000@192.168.1.35
Call-ID: 80ea55c88af7e52ed915888fd4000
CSeq: 1 INVITE
.....
--- (20 headers 13 lines) ---
Sending to 192.168.1.35:5060 (no NAT)
Sending to 192.168.1.35:5060 (no NAT)
Using INVITE request as basis request - 80ea55c88af7e61ed915888fd4000
Found peer '3001' for '1152057' from 192.168.1.35:5060
<--- Reliably Transmitting (no NAT) to 192.168.1.35:5060 --->
SIP/2.0 401 Unauthorized
Код: Выделить всё
--- (20 headers 13 lines) ---
Sending to 192.168.1.35:5060 (no NAT)
Sending to 192.168.1.35:5060 (no NAT)
Using INVITE request as basis request - 09e742f8df7e618b925888fd4000
Found peer 'Acme' for '1152057' from 192.168.1.35:5060
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
Found RTP audio format 0
....
Также при исходящих выховах наблюдается следующее поведение: если в исходящих маршрутах настроены звонки без девятки, т.е. префикс и номер, например 115ХХХХ (как раз с такого был входящий звонок), телефон 3001 даже не пытается совершить звонок через Elastix, а сразу находит совпадение префикса в AcmePacket и звонит через него, соответсвенно Caller ID у него без префикса, а имя берется из того что прописано в веб-интерфейсе телефона, а не в настройках extension на Elastix. Телефон 3001 одновременно как бы абонент и на Acme, и на Elastix.
Если же настраиваю исходящий маршрут с дополнительной обрезаемой девяткой, звонок проходит через Elastix.