Opened 10 years ago

Closed 5 years ago

#11 closed улучшение (fixed)

Формировать и обрабатывать заголовок Remote-Party-ID

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: any Keywords:
Cc:

Description (last modified by alx)

Для улучшения совместимости с существующим оборудованием/софтом предлагается добавить глобальную настройку, определяющую, куда шлюз помещает информацию о вызывающем абоненте (например Caller-ID, принятый канальным окончанием FXO из абонентской линии) при исходящем вызове в сторону сети IP. В настройке должно быть (для начала) два варианта:

  • в поле From - вариант по умолчанию, как все работает в настоящий момент;
  • в поле Remote-Party-ID - имя/номер вызывающего помещается в поле Remote-Party-ID, при этом в поле From должен быть URI, указанный в конфигурации канального окончания.

Позже выбор может быть дополнен другими вариантами (например P-Asserted-Identity).

Также предлагается добавить глобальную настройку, определяющую, откуда может/должна браться информация о вызывающем абоненте при получении входящего INVITE. Предлагаемые варианты:

  • RPID-PAI-FROM: поле Remote-Party-ID, если нет, то поле P-Asserted-Identity, если нет то поле From. Вариант по умолчанию.
  • PAI-RPID-FROM: поле P-Asserted-Identity, если нет, то поле Remote-Party-ID, если нет то поле From.
  • RPID-FROM: поле Remote-Party-ID, если нет то поле From.
  • PAI-FROM: поле P-Asserted-Identity, если нет то поле From.
  • FROM: только из поля From.

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

  • использовать глобальную настройку (вариант по умолчанию);
  • поле From;
  • поле Remote-Party-ID;
  • поле P-Asserted-Identity.

Change History (7)

comment:1 by alx, 10 years ago

Priority: низкийсредний

Также опционально при трансляции вызова из соединительной линии в SIP помещать имя/номер вызывающего абонента не в поле From:, а в Remote-Caller-ID:, оставляя в поле From: URL шлюза.

comment:2 by alx, 5 years ago

Description: modified (diff)
Summary: Обрабатывать заголовок Remote-Caller-IDОбрабатывать заголовок Remote-Party-ID

Добавил в описание тикета поле P-Asserted-Identity как потенциальный источник Caller-ID. Сейчас оно используется при получении ответа на вызов, позволяя в CDR видеть, кто реально ответил на вызов (при сложных сценариях вызова, когда вызывается сразу группа абонентов или выполняется переадресация).

Предлагается добавить настройку, определяющую, из какого поля брать caller-id со следующими вариантами:

  • From;
  • P-Asserted-Identity, From;
  • Remote-Party-ID, From;
  • P-Asserted-Identity, Remote-Party-ID, From;
  • Remote-Party-ID, P-Asserted-Identity, From.

Не знаю пока, где такую настройку сделать. Вариант сделать глобальную настройку мне не очень нравится, так как не позволяет сделать разные настройки разным канальным окончаниям. В случае же настройки в каждом канальном окончании возникает вопрос, как быть с CDR, ибо на момент обработки SIP-сообщений и формирования CDR еще неизвестно, какое канальное окончание получит сообщение (и вообще получит ли его шлюз)... Так что пока склоняюсь к глобальной настройке.

Также канальным окончаниям предлагается сделать настройку, определяющую способ передачи Caller-ID при вызове в направлении сети IP:

  • From;
  • P-Asserted-Identity;
  • Remote-Party-ID.

Использование P-Asserted-Identity или Remote-Party-ID позволит при формировании INVITE оставлять поле Fromn таким, какие оно сконфигурировано, избежав таким образом проблем типа #324, когда сервер требует совпадения имени пользователя в поле From с именем аутентификации.

comment:3 by alx, 5 years ago

Milestone: 1 очередь

comment:4 by alx, 5 years ago

Description: modified (diff)
Summary: Обрабатывать заголовок Remote-Party-IDОбрабатывать заголовок P-Asserted-Identity

Так как P-Asserted-Identity - стандарт, а Remote-Party-ID - draft, основным вариантом принят P-Asserted-Identity.

comment:5 by alx, 5 years ago

Хм... Так просто достичь желаемого не получается: при получении входящего вызова от внешнего SIP-пользователя repro заменяет P-Asserted-Identity на URI аутентифицированного пользователя, в данном случае шлюза. Таким образом, caller-id теряется...

Попробуем применить Remote-Party-ID...

comment:6 by alx, 5 years ago

Description: modified (diff)
Summary: Обрабатывать заголовок P-Asserted-IdentityФормировать и обрабатывать заголовок Remote-Party-ID

Эксперименты показали, что Remote-Party-ID успешно решает проблему, описанную в #324: прокси успешно аутентифицирует клиента, так как имя в поле From не меняется, при этом телефоны отображают реальные имя/номер вызывающего абонента, помещенные в поле Remote-Party-ID. Описание тикета очередной раз скорректировано.

comment:7 by alx, 5 years ago

Resolution: fixed
Status: newclosed

In 1618/sip_ua:

Добавлены глобальные флаги, определяющие, в каком заголовке канальное окончание отправляет Caller-ID:

  • From;
  • Remote-Party-ID;
  • P-Asserted-Identity.

Добавлены глобальные флаги, определяющие, из какого поля брать Caller-ID и в каком порядке.
Closes #11.

Note: See TracTickets for help on using tickets.