Как использовать идентификатор вызывающего абонента вместо "s" в методе ссылки SIP? - PullRequest
1 голос
/ 19 мая 2019

Я работаю над сценарием для автоматических звонков через SIP и столкнулся с проблемой с Caller ID.

Скрипт работает довольно просто:

  1. Позвонит клиенту по его телефону (например, +1234567890) по методу INVITE
  2. Когда клиент отвечает на вызов, использует метод REFER для передачи вызова своему персональному менеджеру.
  3. Менеджер получает входящий звонок в диалоге, установленном с клиентом.

На шаге 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).

Какие ссылки или другие заголовки можно использовать для отправки правильного идентификатора вызывающего абонента?

1 Ответ

0 голосов
/ 20 мая 2019

Сначала несколько замечаний относительно запроса REFER:

  • Заголовок Referred-By должен содержать SIP URI реферера, а не SIP URI рефери.
  • Запрос REFER должен быть отправленв существующем диалоге.Похоже, что вы отправляете запрос REFER вне какого-либо диалогового окна (тег не указан).

Из вашего описания я понял, что вы используете сервер SIP B2B.Это означает, что когда телефон клиента (+1234567890@1.2.3.4) получает запрос REFER, результирующий запрос INVITE будет отправлен на SIP-сервер (s@1.2.3.4).Сервер SIP создаст новый запрос INVITE и отправит его на телефон менеджера (111@1.2.3.4).

Запрос INVITE от сервера SIP на телефон менеджера будет содержать следующие значения:

  • к заголовку -> 111@1.2.3.4
  • от заголовка -> +1234567890@1.2.3.4
  • контактный заголовок -> s@1.2.3.4

В этом случае телефон менеджера должен использовать в качестве идентификатора абонента значение заголовка from, а не значение заголовка контакта.

Возможно, вы захотите проверить

  • , еслиЗапрос INVITE содержит правильные значения заголовка
  • , если телефон менеджера использует правильный заголовок для определения идентификатора вызывающего абонента.

Надеюсь, это поможет.

...