В чем разница между уникальным идентификатором события и UUID вызова канала?

#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));
}