#freeswitch
#freeswitch
Вопрос:
События Freeswitch содержат две переменные ( Unique-ID
и Channel-Call-UUID
), которые, похоже, всегда имеют одинаковое значение: уникальный идентификатор элемента.
Я не вижу цели этого, и хотя в Unique-ID
вики FS есть однострочная документация («uuid этапа вызова этого канала»), Channel-Call-UUID
нет.
Еще хуже: я наткнулся на два примера, где их значения были разными:
[...]
Channel-Call-UUID: c9bbde8b-379b-45d4-b193-3f761a44f3e2
Unique-ID: 81273088-c31f-4469-85a6-c878e42210e5
[...]
[...]
Channel-Call-UUID: ada7f3de-2374-4144-9b1d-eade29df0779
Unique-ID: f3ebca6c-d9cd-4f89-ae12-748e6c479dda
[...]
Мне нужно иметь возможность четко идентифицировать элемент в моем коде, поэтому я хотел бы знать
- какой из них является наиболее точным и
- какова цель другого
Комментарии:
1. 1 Это было так полезно! Только что нашел ошибку в своем коде, где я использовал неправильный!
Ответ №1:
- «
Unique-ID
» идентифицирует сегмент текущего канала (это значение, похоже, всегда идентично «Caller-Unique-ID
«, задокументированному как «uuid этого канала»). - «
Channel-Call-UUID
» — это идентификатор, который можно использовать для идентификации ответивших / подключенных каналов. Похоже, оно получено из «Unique-ID
» создателя канала.
Значение «Channel-Call-UUID
» b-ветви (вызываемого абонента) отличается от его «Unique-ID
«, но оно идентично значению заголовка «Other-Leg-Unique-ID
«.
Исходный код ( src/switch_channel.c
) поддерживает мои предыдущие утверждения:
if ((v = switch_channel_get_variable(channel, "call_uuid"))) {
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-UUID", v);
} else {
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-UUID", switch_core_session_get_uuid(channel->session));
}