事件的Unique-ID和Channel-Call-UUID之间有什么区别?

Ant*_*nto 3 freeswitch

Freeswitch事件包含两个变量(Unique-IDChannel-Call-UUID),似乎总是设置为完全相同的值:leg的唯一标识符.

我没有看到这个的目的,虽然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
[...]
Run Code Online (Sandbox Code Playgroud)

我需要能够清楚地识别代码中的一条腿,所以我想知道

  • 哪一个是最准确的
  • 另一个的目的是什么?

Rob*_*b W 6

  • " Unique-ID"标识当前频道的分支(此值似乎始终与" Caller-Unique-ID" 相同,记 "此频道的uuid").
  • " Channel-Call-UUID"是可用于识别已应答/桥接频道的ID.它似乎源于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));
}
Run Code Online (Sandbox Code Playgroud)