Здравствуйте.
Asterisk 13.18.3.
PJPROJECT version currently running against: 2.7.2
Asterisk регистрируется на на SIP сервере (registrar) на нескольких учетных записях.
Проблема с приемом входящих звонков на Asterisk от SIP сервера.
Я не могу завести секцию identify и делать match по IP, т.к. asterisk имеет несколько регистраций на одном сервере (одном IP).
match по username тоже не проходит, т.к. он ищет в поле FROM а не в поле INVITE.
INVITE sip:fxs17@172.16.25.100:5060 SIP/2.0
Via: SIP/2.0/UDP 172.16.25.23:5060;branch=z9hG4bK-d8754z-7f5ac212c105db7b-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:12@172.16.25.23:5060>
To: <sip:11@172.16.25.23>
From: "PhonerLite12"<sip:12@172.16.25.23:5060>;tag=f237f91e
[Feb 14 16:15:10] DEBUG[18679] res_pjsip_endpoint_identifier_ip.c: No identify sections to match against
[Feb 14 16:15:10] DEBUG[18679] res_pjsip_endpoint_identifier_user.c: Attempting identify by From username '12' domain '172.16.25.23'
[Feb 14 16:15:10] DEBUG[18679] res_pjsip_endpoint_identifier_user.c: Endpoint not found for From username '12' domain '172.16.25.23'
[Feb 14 16:15:10] DEBUG[18679] res_pjsip_endpoint_identifier_user.c: Attempting identify by Authorization username '' realm 'asterisk'
[Feb 14 16:15:10] DEBUG[18679] res_pjsip_endpoint_identifier_user.c: Endpoint not found for Authentication username '' realm 'asterisk'
[Feb 14 16:15:10] NOTICE[18679] res_pjsip/pjsip_distributor.c: Request 'INVITE' from '"PhonerLite12" <sip:12@172.16.25.23>' failed for '172.16.25.23:5060' (callid: ZTNhZTQwZGU0Mjg2MzhhMmU5MDNmMjdiZGFjNGNhNWY.) - No matching endpoint found
Я могу конечно задать разные порты на Asterisk для разных регистраций (5060, 5061, ...), но проблему не решит, т.к. входящий INVITE пойдет по тем же identify модулям.
Можно добавить line=yes.
В REGISTER Asterisk в CONTACT добавит ";line=random" , во входящих INVITE asterisk найдет этот random, и найдет соответствующий ENDPOINT.
Одна проблема - при каждом новом запуске asterisk будет генерировать новый random.
Если registrar 3cx - будут плодиться записи contacts.
Если registrar FreePBX - все еще хуже.
Если не разрешен rewrite contact и указан max_contacts, то каждый перезапуск asterisk будет добавлять contact.
После max_contacts таких записей, FreePBX не будет принимать регистрации...
Не могу понять, либо я не понял где-то сути, и неправильно написал конфигурацию, либо архитектурно в asterisk+pjsip недоработка, не позволяющая принимать звонки от registrar сервера (на котором мы авторизовались).
Возможно можно использовать идентификатор res_pjsip_endpoint_identifier_header, но не уверен как.
identifier я могу и дописать или написать свой, но важно понять, как должно быть правильно.