Как определить две ноги звонка?

Я разрабатываю приложение для отслеживания звонков. Я использовал поля идентификатора тега для соединения двух ножек вызова
 вызова. Но иногда идентификаторы тегов не будут одинаковыми.

Что я сделал -

Идентификаторы тегов связаны с соответствующим идентификатором вызова.

Есть ли какое-либо другое поле, которое мне нужно учитывать для идентификации ног (диалогов) вызова.

enter image description here The above one is an exmple for 1 call with tag ids. Different colors used for two legs. And the only similarity i have got a number 3568450037 in tag id's. 10.10.10.120 is the server ip.

Я должен найти прочную связь между ногами вызова. Пожалуйста, помогите мне...  И, пожалуйста, предложите мне несколько ссылок для решения этой проблемы.

Спасибо...

0
nl ja de

2 ответы

Тег Call-ID, From tag и To - это все, что используется для идентификации диалога. Из главы SIP RFC по диалогам . Единственный трюк - это сопоставление локальных и удаленных тегов, т. Е. Тег заголовка To на одном конце вызова соответствует тегу заголовка From на другом конце вызова и наоборот.

Диалоговое окно идентифицируется у каждого UA с идентификатором диалога, который состоит из      значение Call-ID, локальный тег и удаленный тег. Идентификатор диалога на каждом      UA, участвующий в диалоговом окне, не то же самое. В частности, местные      тег на одном UA идентичен удаленному тегу в одноранговом UA.      теги - непрозрачные жетоны, которые облегчают создание уникальных      диалоговые идентификаторы.

<Сильный> Update:

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

На самом деле нет ничего в заголовках SIP, которые вы можете использовать для сопоставления двух независимых диалогов SIP, чтобы знать, что вызовы были соединены вместе. Я предполагаю, что вы работаете с B2BUA, поскольку это единственный общий SIP-элемент, который соединяет вызовы. Одним из способов сопоставления диалогов является просмотр SDP, выполняемого в запросах и ответах INVITE. По крайней мере, вы можете получить номер порта, который каждая нога отправляет и получает, и сопоставляет их таким образом.

2
добавлено
Теги never предназначены для повторного использования. Кроме того, я подозреваю, что, если B2BUA прекратит медиаплан, не будет никакого общего способа идентифицировать обе ноги, не сравнивая содержимое каждого медиапотока, проходящего через B2BUA.
добавлено автор Frank Shearar, источник
Идентификатор тегов должен быть уникальным. Стек SIP не должен повторно использовать идентификаторы тегов при разных вызовах. Это было бы ошибкой. Однако даже если идентификатор тега совпадает с другим вызовом, если теги Call-ID и/или From отличаются друг от друга, у вас есть что отличить разные вызовы.
добавлено автор sipwiz, источник
Но у меня есть ситуация, что общий идентификатор тега найден при разных вызовах. Поэтому я не могу определить фактический звонок.
добавлено автор Mask, источник
Я редактировал вопрос с примера ...
добавлено автор Mask, источник
Я работаю с Sip B2BUA сервером. Я думаю, что, рассматривая информацию sdp, я могу группировать ножки вызова. Спасибо вам всем...
добавлено автор Mask, источник

Немного поздно ответить, но в случае, если это поможет кому-то еще:

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

There is an informational IETF document that proposed just that: http://tools.ietf.org/html/draft-kaplan-dispatch-session-id-03

0
добавлено