Я работаю над сценарием для автоматических звонков через SIP и столкнулся с проблемой с Caller ID.
Скрипт работает довольно просто:
- Позвонит клиенту по его телефону (например, +1234567890) по методу INVITE
- Когда клиент отвечает на вызов, использует метод REFER для передачи вызова своему персональному менеджеру.
- Менеджер получает входящий звонок в диалоге, установленном с клиентом.
На шаге 2-3 менеджер всегда получает вызов от контакта с именем s@1.2.3.4 (где 1.2.3.4 - IP-адрес нашего SIP-сервера). Как я могу установить телефон клиента вместо s@1.2.3.4
?
Используемый мной запрос реферала выглядит следующим образом:
REFER sip:+1234567890@1.2.3.4:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.1:5100;rport;branch=z9hG4bK160892
From: <sip:100@192.168.1.1>;tag=29899
To: <sip:+1234567890@1.2.3.4:5060>
Call-ID: 28990ec994a682147cf87eda75f97664@192.168.1.1
CSeq: 22 REFER
Contact: <sip:100@192.168.1.1:5100>
Max-Forwards: 70
Refer-to: sip:111@1.2.3.4
Referred-By: <sip:+1234567890@1.2.3.4:5060>
Content-Length: 0
Здесь 100 - SIP ID робота вызова, 192.168.1.1 - IP-адрес робота, 111 - SIP ID менеджера.
Я пытался использовать Refer-To, как это:
Refer-to: <sip:111@1.2.3.4?Call-ID=28990ec994a682147cf87eda75f97664@192.168.1.1&From=%3Csip%3A%2B1234567890%401.2.3.4%3A5060%3E&Contact=%3Csip%3A%2B1234567890%401.2.3.4%3A5060%3E>
Refer-to: <sip:111@1.2.3.4?Call-ID="69ca6b4e1874aa07569ee234cf746a3c@192.168.1.1"&From="<sip:+1234567890@1.2.3.4:5060>"&Contact="<sip:+1234567890@1.2.3.4:5060>">
Refer-to: <sip:111@1.2.3.4;method=INVITE?Call-ID="d71d3cc87f88eb1522859296889d39fb@192.168.1.1"&From="sip:+1234567890@1.2.3.4:5060"&Contact="<sip:+1234567890@1.2.3.4:5060>">
Но ничего не получилось, как я ожидал, идентификатор звонящего по входящему звонку менеджера все еще был s@1.2.3.4
. Для получения записей о звонках нам необходим правильный номер вызывающего абонента.
Используется программное обеспечение SIP: Kerio Operator (на основе Asterisk).
Какие ссылки или другие заголовки можно использовать для отправки правильного идентификатора вызывающего абонента?