> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coze.cn/llms.txt
> Use this file to discover all available pages before exploring further.

本文介绍扣子编程智能语音信令事件中的下行事件。
## 房间配置成功 {#2a980f88}

* **事件类型**：`session.created`
* **事件说明**：用户成功进房后会发送此事件。
* **事件结构**：
   <!-- @cols-width: 104,100,100,411 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`session.created`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含对话的详细信息。 |
   | | | | | \
   |data.voice_id |String |必选 |音色 ID。 |
   | | | | | \
   |data.log_id |String |必选 |服务端日志 ID，用于查找问题。 |

* **事件示例**：
   ```JSON
   {
       "id": "7446668538246561800",
       "event_type": "session.created",
       "data": {
           "voice_id": "134",
           "log_id":"xxx"
       }
   }
   ```


## 房间配置更新成功 {#5c7c0c03}

* **事件类型**：`session.updated`
* **事件说明**：房间内的配置更新成功，返回房间内最新的配置。
* **事件结构**：

<!-- @cols-width: 186,115,100,453 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |String |必选 |服务端生成的唯一 ID。 |
| | | | | \
|event_type |String |必选 |固定为`session.updated`。 |
| | | | | \
|data |Object |必选 |事件数据，包含对话的详细信息。 |
| | | | | \
|data.voice_id |String |必选 |音色 ID。 |
| | | | | \
|data.speech_rate |Integer |必选 |模型回复的语速，取值范围 [-50, 100]，默认为 0。-50 表示 0.5 倍速，100 表示 2 倍速。 |
| | | | | \
|data.loudness_rate |Integer |可选 |输出音频的音量，取值范围 [-50, 100]，默认为 0。-50 表示 0.5 倍音量，100 表示 2 倍音量。 |
| | | | | \
|data.longest_silence_ms |Integer |可选 |当智能体处于长时间沉默状态时，房间将自动解散。此时间以毫秒（ms）为单位计量，默认时长为 180,000 毫秒。 |
| | | | | \
|data.event_subscriptions |Array<String> |可选 |订阅的下行事件的事件类型列表。 |
| | | | | \
|data.chat_config |Object |必选 |聊天配置信息。 |
| | | | | \
|data.chat_config.meta_data |Map<String, String> |必选 |附加信息，通常用于封装一些业务相关的字段。查看对话消息详情时，系统会透传此附加信息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
| | | | | \
|data.chat_config.custom_variables |Map<String, String> |必选 |智能体中定义的变量。在智能体 prompt 中设置变量 {{key}} 后，可以通过该参数传入变量值，同时支持 Jinja2 语法。变量名只支持英文字母和下划线。 |
| | | | | \
|data.chat_config.extra_params |Map<String, String> |必选 |附加参数，通常用于特殊场景下指定一些必要参数供模型判断，例如指定经纬度，并询问智能体此位置的天气。自定义键值对格式，其中键（key）仅支持设置为： |\
| | | | |\
| | | |* latitude（纬度，值为纬度值，例如 39.9800718） |\
| | | |* longitude（经度，值为经度值，例如 116.309314）。 |
| | | | | \
|data.chat_config.plugin_interrupt_mode |String |必选 |端插件执行模式，可选值有 `blocking` / `nonblocking`，默认为 `nonblocking`。 |\
| | | | |\
| | | |* `blocking` 模式下，遇到端插件执行后，会阻塞后续的对话，直到提交端插件结果。 |\
| | | |* `nonblocking` 模式下，遇到端插件执行后，若未提交端插件结果继续对话，则端插件请求会被丢弃。 |
| | | | | \
|data.chat_config.allow_voice_interrupt |Boolean |可选 |是否打开语音打断功能，默认为 `true`。 |
| | | | | \
|data.chat_config.interrupt_config |Object |可选 |语音打断配置，仅在 allow_voice_interrupt 为`true`时生效 |
| | | | | \
|data.chat_config.interrupt_config.mode |String |必选 |语音打断模式，可选值有`all` / `keyword_contains` / `keyword_prefix`，默认为`all`。 |\
| | | | |\
| | | |* `all`模式下，任意内容都可以打断模型回复。 |\
| | | |* `keyword_contains`模式下，说话内容**包含**关键词才会打断模型回复。 |\
| | | |* `keyword_prefix`模式下，说话内容**前缀匹配**关键词才会打断模型回复。 |
| | | | | \
|data.chat_config.interrupt_config.keywords |Array<String> |可选 |关键词列表，每个关键词长度不超过8个字，最多10个关键词，仅在`keyword_contains`/`keyword_prefix`模式下生效。 |
| | | | | \
|data.turn_detection |Object |可选 |声音检测配置。 |
| | | | | \
|data.turn_detection.type |String |可选 |语音检测模式，默认为 `server_vad`，可选项包括： |\
| | | | |\
| | | |* `server_vad`：语音活动检测由扣子编程服务端完成，客户端将音频流持续发送到服务端，服务端在接收到音频后，通过服务端 VAD 检测语音的开始和结束。 |\
| | | |* `client_vad`：客户端使用自己的 VAD 检测语音的开始和结束，并将检测到的语音片段发送到服务器进行识别。 |\
| | | |* `semantic_vad`：采用语义判停的自由对话模式（**此功能仅对企业旗舰版用户开放**），由服务端识别语义来判断是否停止说话。 |\
| | | | |\
| | | |详细的检测逻辑请参见[如何设置扣子的语音检测模式？](/dev_how_to_guides/realtime_faq#044b8bcc)。 |
| | | | | \
|data.turn_detection.silence_duration_ms |Integer |可选 |`server_vad` 模式下，检测语音停止的静音持续时间，单位为 ms。默认为 500ms。 |
| | | | | \
|data.turn_detection.semantic_vad_config |Object |可选 |`semantic_vad` 模式下，配置判定语音停止的语义检测策略。 |
| | | | | \
|data.turn_detection.semantic_vad_config.silence_threshold_ms |Integer |可选 |当用户暂停说话时，持续静音多久后，触发语义判停检测。单位为 ms。默认为 300ms。 |
| | | | | \
|data.turn_detection.semantic_vad_config.semantic_unfinished_wait_time_ms |Integer |可选 |当语义检测判断该语句未结束时，持续静音多久后，扣子编程认定语音结束。单位为 ms。默认为 500ms。 |
| | | | | \
|data.asr_config.enable_itn |Boolean |可选 |将语音转为文本时，是否开启文本规范化（ITN）处理，将识别结果转换为更符合书面表达习惯的格式以提升可读性。默认为 `true`。 |\
| | | |开启后，会将口语化数字转换为标准数字格式，示例： |\
| | | | |\
| | | |* 将`两点十五分`转换为 `14:15`。 |\
| | | |* 将`一百美元`转换为 `$100`。 |
| | | | | \
|data.asr_config.enable_punc |Boolean |可选 |将语音转为文本时，是否给文本加上标点符号。默认为 `true`。 |
| | | | | \
|data.asr_config.enable_ddc |Boolean |可选 |将语音转为文本时，是否启用顺滑，默认为 `true`。 |\
| | | | |\
| | | |* `true`：系统在进行语音处理时，会去掉识别结果中诸如 “啊”“嗯” 等语气词，使得输出的文本语义更加流畅自然，符合正常的语言表达习惯，尤其适用于对文本质量要求较高的场景，如正式的会议记录、新闻稿件生成等。 |\
| | | |* `false`：系统不会对识别结果中的语气词进行处理，识别结果会保留原始的语气词。 |
| | | | | \
|data.asr_config.enable_nostream |Boolean |可选 |当前是否开启**二次识别模式**，枚举值： |\
| | | | |\
| | | |* `true`：已开启二次识别模式。会实时返回逐字识别的文本；当一句话结束时，会结合整句音频进行上下文分析并重新识别，生成优化后的识别结果并返回。这种机制既能满足客户实时上屏的需求，又能确保最终结果的识别准确率。 |\
| | | |* `false`：未开启二次识别模式。仅进行一次实时识别，逐字返回文本，不会在一句话结束时重新识别分句，可能存在一定的识别误差。 |
| | | | | \
|data.asr_config.enable_emotion |Boolean |可选 |当前是否开启说话人情绪识别功能，枚举值： |\
| | | | |\
| | | |* `true`：已开启情绪识别，会返回说话人的情绪标签，仅在 `data.asr_config.stream_mode` 为 `output_no_stream` 时生效。 |\
| | | |* `false`：未开启情绪识别。 |\
| | | | |\
| | | |支持的情绪标签包括： |\
| | | | |\
| | | |* `angry`：表示情绪为生气 |\
| | | |* `happy`：表示情绪为开心 |\
| | | |* `neutral`：表示情绪为平静或中性 |\
| | | |* `sad`：表示情绪为悲伤 |\
| | | |* `surprise`：表示情绪为惊讶 |
| | | | | \
|data.asr_config.enable_gender |Boolean |可选 |当前是否开启说话人性别识别功能，枚举值： |\
| | | | |\
| | | |* `true`：已开启性别识别，会返回说话人性别（`male`/`female`），仅在 `data.asr_config.stream_mode` 为 `output_no_stream` 时生效。 |\
| | | |* `false`：未开启性别识别。 |
| | | | | \
|data.asr_config.sensitive_words_filter |Object |可选 |当前敏感词过滤功能的配置状态，支持以下 3 种过滤方式： |\
| | | | |\
| | | |* 过滤系统敏感词，并替换为`*`。 |\
| | | |* 过滤自定义敏感词，并替换为空。 |\
| | | |* 过滤自定义敏感词，并替换为`*`。 |
| | | | | \
|data.asr_config.sensitive_words_filter.system_reserved_filter |Boolean |可选 |当前是否启用系统自带敏感词过滤（匹配到的敏感词替换为`*`），枚举值： |\
| | | | |\
| | | |* `true`：已启用，系统会过滤系统自带敏感词（主要包含限制级词汇）并替换为`*`。 |\
| | | |* `false`：未启用系统自带敏感词的过滤。 |
| | | | | \
|data.asr_config.sensitive_words_filter.filter_with_empty |Array<string> |可选 |自定义的需替换为空的敏感词列表。 |
| | | | | \
|data.asr_config.sensitive_words_filter.filter_with_signed |Array<string> |可选 |自定义的需替换为 `*` 的敏感词列表。 |
| | | | | \
|data.voice_print_config |Array<String> |可选 |声纹识别配置。 |
| | | | | \
|data.voice_print_config.group_id |String |可选 |声纹组 ID。语音通话时，扣子编程会在该声纹组内进行查找匹配对应的声纹，当声纹匹配度高于 `score` 阈值，则认为是同一个人的声音。 |
| | | | | \
|data.voice_print_config.score |Integer |可选 |声纹匹配的命中阈值，即声音匹配度的最低标准。当声音匹配度达到或超过该阈值时，扣子编程才会认定声纹匹配成功。你可以根据应用的安全性要求进行自定义设置。如果匹配了多轮声纹，扣子编程会取相似度最高的一个。 |\
| | | |取值范围：0~100，默认值：40。 |
| | | | | \
|data.voice_print_config.reuse_voice_info |Boolean |可选 |当本轮对话未命中任何声纹时，是否沿用历史声纹信息。默认为 `false`。 |\
| | | | |\
| | | |* `true`：未命中声纹时，智能体将返回上一次命中的声纹。适用于连续对话场景，当收音不好等情况导致声纹没能正确被识别时，保障对话的连贯性。 |\
| | | |* `false`：未命中声纹时，智能体返回空的声纹信息。 |
| | | | | \
|data.voice_processing_config |Object |可选 |语音降噪配置。默认不启用降噪。 |\
| | | |:::tip 说明 |\
| | | |仅扣子企业旗舰版支持该配置。 |\
| | | |::: |
| | | | | \
|data.voice_processing_config.enable_ans |Boolean |可选 |主动噪声抑制。自动识别并过滤掉背景环境中的各种噪音（如键盘声、空调声、街道嘈杂声），让说话者的声音更清晰。 |\
| | | |此功能与下面的 `enable_pdns`（声纹降噪）只能**二选一开启**，不能同时使用。 |
| | | | | \
|data.voice_processing_config.enable_pdns |Boolean |可选 |声纹降噪。专门针对**特定说话人**的声音进行优化，能更精准地保留目标人声。 |\
| | | |此功能与上面的 `enable_ans`只能**二选一开启**，不能同时使用。 |\
| | | |提供两种模式，你可以根据需要选择： |\
| | | | |\
| | | |* 自动提取：设置简单，开箱即用。默认为该模式。**降噪生效稍微有延迟**，服务端需要先听你说一会儿话才能提取出你的声纹特征，在此期间降噪效果可能不佳。另外，提取声纹会受到用户说话场景影响，准确性上可能会弱于主动设置。 |\
| | | |* 主动设置：**降噪效果更精准、更快速**，在对话开始时就立即生效。不过需要提前录制声纹并在 `voice_print_feature_id` 中设置声纹 ID。 |
| | | | | \
|data.voice_print_config.feature_id |String |可选 |目标说话人的声纹 ID。当你选择开启 `enable_pdns`（声纹降噪）并希望使用**主动设置**模式时，需要在此处填入你提前录制好的声纹 ID。 |


* **事件示例**：
   ```JSON
   {
       "id": "7446668538246561890",
       "event_type": "session.update",
       "data": {
           "voice_id": "123", // 音色 ID
           "speech_rate": 0, // [-50, 100]
           "longest_silence_ms": 180000,
           "event_subscriptions": [],
           "chat_config": {
               "meta_data": {
                   "a": "123"
               },
               "custom_variables": {
                   "a": "123"
               },
               "extra_params": {
                   "a": "123"
               },
               "allow_voice_interrupt": true,
               "interrupt_config": {
                   "mode": "keyword_prefix",
                   "keyword": ["扣子"]
               },
               "plugin_interrupt_mode": "nonblocking" // 控制收到端插件执行中断信号后，没有提交端执行请求时的模型
               // 端插件的执行模型，默认不阻塞，blocking/nonblocking，阻塞的场景如果不提交端执行请求就会让语音链路一直block住
           },
           "turn_detection": {
               "type": "server_vad" // server_vad/client_vad
           },
           "asr_config": {
               "hot_words": ["扣子"],
               "enable_itn": true,
               "enable_punc": true,
               "enable_ddc": true
           } 
       }
   }
   ```


## 会话创建成功 {#0a12551c}

* **事件类型**：`conversation.created`
* **事件说明**：用户成功进房后会发送此事件，收到此事件即表明**房间初始化完成。**
* **事件结构**：
   <!-- @cols-width: 160,100,100,441 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`conversation.created`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含对话的详细信息。 |
   | | | | | \
   |data.conversation_id |String |必选 |会话 ID，整个房间的交互都会发生在此会话下。 |
   | | | | | \
   |data.prologue |String |必选 |智能体的开场白。 |

* **事件示例**：
   ```JSON
   {
       "id": "7446668538246561891",
       "event_type": "conversation.created",
       "data": {
           "conversation_id": "123",
           "prologue": ""
       }
   }
   ```


## 对话开始 {#b5369292}

* **事件类型**：`conversation.chat.created`
* **事件说明**：创建对话的事件，表示对话开始。
* **事件结构**：
   <!-- @cols-width: 185,111,100,500 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为conversation.chat.created。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含对话的详细信息。 |
   | | | | | \
   |data.id |String |必选 |对话 ID，即对话的唯一标识。 |
   | | | | | \
   |data.conversation_id |String |必选 |会话 ID，即会话的唯一标识。 |
   | | | | | \
   |data.bot_id |String |必选 |要进行会话聊天的智能体 ID。 |
   | | | | | \
   |data.created_at |Integer |可选 |对话创建的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
   | | | | | \
   |data.last_error |Object |可选 |对话运行异常时，此字段中返回详细的错误信息，包括： |\
   | | | | |\
   | | | |* Code：错误码。Integer 类型。0 表示成功，其他值表示失败。 |\
   | | | |* Msg：错误信息。String 类型。 |
   | | | | | \
   |data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，用于传入使用方的自定义数据，获取消息时也会返回此附加消息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
   | | | | | \
   |data.status |String |可选 |对话的运行状态。取值为 created，即对话已创建。 |
   | | | | | \
   |data.usage |Object |可选 |对话的 Token 使用情况。 |
   | | | | | \
   |data.usage.token_count |Integer |可选 |本次对话消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
   | | | | | \
   |data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
   | | | | | \
   |data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |

* **事件示例**：
   ```JSON
   {
     "id": "7446668538246561892",
     "event_type": "conversation.chat.created",
     "data": {
         "id": "123",
         "conversation_id": "123",
         "bot_id": "222",
         "created_at": 1710348675,
         "completed_at": null,
         "last_error": null,
         "meta_data": {},
         "status": "created",
         "usage": null
     }    
   }
   ```


## 对话处理中 {#1f5f6f91}

* **事件类型**：`conversation.chat.in_progress`
* **事件说明**：服务端正在处理对话。
* **事件结构**：
   <!-- @cols-width: 184,152,100,404 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为conversation.chat.in_progress。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含对话的详细信息。 |
   | | | | | \
   |data.id |String |必选 |对话 ID，即对话的唯一标识。 |
   | | | | | \
   |data.conversation_id |String |必选 |会话 ID，即会话的唯一标识。 |
   | | | | | \
   |data.bot_id |String |必选 |要进行会话聊天的智能体 ID。 |
   | | | | | \
   |data.created_at |Integer |可选 |对话创建的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
   | | | | | \
   |data.last_error |Object |可选 |对话运行异常时，此字段中返回详细的错误信息，包括： |\
   | | | | |\
   | | | |* Code：错误码。Integer 类型。0 表示成功，其他值表示失败。 |\
   | | | |* Msg：错误信息。String 类型。 |
   | | | | | \
   |data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，用于传入使用方的自定义数据，获取消息时也会返回此附加消息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
   | | | | | \
   |data.status |String |可选 |对话的运行状态。取值为 in_progress，即智能体正在处理中。 |
   | | | | | \
   |data.usage |Object |可选 |对话的 Token 使用情况。 |
   | | | | | \
   |data.usage.token_count |Integer |可选 |本次对话消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
   | | | | | \
   |data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
   | | | | | \
   |data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |

* **事件示例**：
   ```JSON
   {
     "id": "7446668538246561892",
     "event_type": "conversation.chat.in_progress",
     "data": {
         "id": "123",
         "conversation_id": "123",
         "bot_id": "222",
         "created_at": 1710348675,
         "completed_at": null,
         "last_error": null,
         "meta_data": {},
         "status": "in_progress",
         "usage": null
     }
   }
   ```


## 增量消息 {#17fc454e}

* **事件类型**：`conversation.message.delta`
* **事件说明**：增量消息，通常是 `type=answer` 时的增量消息。
* **事件结构**：
   <!-- @cols-width: 160,152,100,500 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`conversation.message.delta`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含消息的详细信息。 |
   | | | | | \
   |data.id |String |必选 |Message ID，即消息的唯一标识。 |
   | | | | | \
   |data.conversation_id |String |必选 |此消息所在的会话 ID。 |
   | | | | | \
   |data.bot_id |String |必选 |编写此消息的智能体 ID。此参数仅在对话产生的消息中返回。 |
   | | | | | \
   |data.chat_id |String |必选 |Chat ID。此参数仅在对话产生的消息中返回。 |
   | | | | | \
   |data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，获取消息时也会返回此附加消息。 |
   | | | | | \
   |data.role |String |必选 |发送这条消息的实体。取值：`user`（代表该条消息内容是用户发送的）、`assistant`（代表该条消息内容是智能体发送的）。 |
   | | | | | \
   |data.content |String |必选 |消息的内容，支持纯文本、多模态（文本、图片、文件混合输入）、卡片等多种类型的内容。 |
   | | | | | \
   |data.content_type |String |必选 |消息内容的类型，取值包括： |\
   | | | | |\
   | | | |* text：文本。  |\
   | | | |* object_string：多模态内容，即文本和文件的组合、文本和图片的组合。  |\
   | | | |* card：卡片。此枚举值仅在接口响应中出现，不支持作为入参。 |
   | | | | | \
   |data.type |String |必选 |消息类型。 |\
   | | | | |\
   | | | |* **question**：用户输入内容。  |\
   | | | |* **answer**：智能体返回给用户的消息内容，支持增量返回。如果工作流绑定了 messge 节点，可能会存在多 answer 场景，此时可以用流式返回的结束标志来判断所有 answer 完成。  |\
   | | | |* **function_call**：智能体对话过程中调用函数（function call）的中间结果。  |\
   | | | |* **tool_output**：调用工具 （function call）后返回的结果。  |\
   | | | |* **tool_response**：调用工具 （function call）后返回的结果。  |\
   | | | |* **follow_up**：如果在智能体上配置打开了用户问题建议开关，则会返回推荐问题相关的回复内容。  |\
   | | | |* **verbose**：多 answer 场景下，服务端会返回一个 verbose 包，对应的 content 为 JSON 格式，content.msg_type =generate_answer_finish 代表全部 answer 回复完成。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "conversation.message.delta",
     "data": {
         "id": "msg_006",
         "role": "assistant",
         "type": "answer",
         "content": "你好你好",
         "content_type": "text",
         "chat_id": "123",
         "conversation_id": "123",
         "bot_id": "222"
     }
   }
   ```


## 消息已完成 {#aa18a150}

* **事件类型**：`conversation.message.completed`
* **事件说明**：消息已完成（用户或智能体）。此时事件中带有所有 `message.delta` 的拼接结果，且每个消息均为 `completed` 状态。
* **事件结构**：

<!-- @cols-width: 160,152,100,500 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |string |必选 |服务端生成的唯一 ID |
| | | | | \
|event_type |string |必选 |固定为`conversation.message.completed` |
| | | | | \
|data |Object |必选 |事件数据，包含消息的详细信息 |
| | | | | \
|data.id |string |必选 |Message ID，即消息的唯一标识 |
| | | | | \
|data.conversation_id |string |必选 |此消息所在的会话 ID |
| | | | | \
|data.bot_id |string |必选 |编写此消息的智能体ID。此参数仅在对话产生的消息中返回 |
| | | | | \
|data.chat_id |string |必选 |Chat ID。此参数仅在对话产生的消息中返回 |
| | | | | \
|data.meta_data |map<string,string> |必选 |创建消息时的附加消息，获取消息时也会返回此附加消息 |
| | | | | \
|data.role |string |必选 |发送这条消息的实体。取值：`user`（代表该条消息内容是用户发送的）、`assistant`（代表该条消息内容是智能体发送的） |
| | | | | \
|data.content |string |必选 |消息的内容，支持纯文本、多模态（文本、图片、文件混合输入）、卡片等多种类型的内容 |
| | | | | \
|data.content_type |String |必选 |消息内容的类型，取值包括： |\
| | | | |\
| | | |* text：文本。  |\
| | | |* object_string：多模态内容，即文本和文件的组合、文本和图片的组合。  |\
| | | |* card：卡片。此枚举值仅在接口响应中出现，不支持作为入参。 |
| | | | | \
|data.type |String |必选 |消息类型。 |\
| | | | |\
| | | |* **question**：用户输入内容。  |\
| | | |* **answer**：智能体返回给用户的消息内容，支持增量返回。如果工作流绑定了 messge 节点，可能会存在多 answer 场景，此时可以用流式返回的结束标志来判断所有 answer 完成。  |\
| | | |* **function_call**：智能体对话过程中调用函数（function call）的中间结果。  |\
| | | |* **tool_output**：调用工具 （function call）后返回的结果。  |\
| | | |* **tool_response**：调用工具 （function call）后返回的结果。  |\
| | | |* **follow_up**：如果在智能体上配置打开了用户问题建议开关，则会返回推荐问题相关的回复内容。  |\
| | | |* **verbose**：多 answer 场景下，服务端会返回一个 verbose 包，对应的 content 为 JSON 格式，content.msg_type =generate_answer_finish 代表全部 answer 回复完成。 |


* 事件示例：

```JSON
{
  "id": "event_1",
  "event_type": "conversation.message.completed",
  "data": {
    "id": "msg_002",
    "role": "assistant",
    "type": "function_call",
    "content": "{\"name\":\"toutiaosousuo-search\",\"arguments\":{\"cursor\":0,\"input_query\":\"今天的体育新闻\",\"plugin_id\":7281192623887548473,\"api_id\":7288907006982012986,\"plugin_type\":1}}",
    "content_type": "text",
    "chat_id": "123",
    "conversation_id": "123",
    "bot_id": "222"
  }
}
```

## 对话完成 {#79fd1eaf}

* **事件类型**：`conversation.chat.completed`
* **事件说明**：表示对话已完成。
* **事件结构**：

<!-- @cols-width: 184,152,100,500 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |String |必选 |服务端生成的唯一 ID。 |
| | | | | \
|event_type |String |必选 |固定为`conversation.chat.completed`。 |
| | | | | \
|data |Object |必选 |事件数据，包含对话的详细信息。 |
| | | | | \
|data.id |String |必选 |对话 ID，即对话的唯一标识。 |
| | | | | \
|data.conversation_id |String |必选 |会话 ID，即会话的唯一标识。 |
| | | | | \
|data.bot_id |String |必选 |要进行会话聊天的智能体 ID。 |
| | | | | \
|data.created_at |Integer |可选 |对话创建的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.completed_at |Integer |可选 |对话结束的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.last_error |Object |可选 |对话运行异常时，此字段中返回详细的错误信息，包括： |\
| | | | |\
| | | |* Code：错误码。Integer 类型。0 表示成功，其他值表示失败。 |\
| | | |* Msg：错误信息。String 类型。 |
| | | | | \
|data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，用于传入使用方的自定义数据，获取消息时也会返回此附加消息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
| | | | | \
|data.status |String |可选 |对话的运行状态。取值为 `completed`，即智能体已完成处理，本次对话结束。 |
| | | | | \
|data.usage |Object |可选 |对话的 Token 使用情况。 |
| | | | | \
|data.usage.token_count |Integer |可选 |本次对话消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
| | | | | \
|data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
| | | | | \
|data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |


* **事件示例**：

```JSON
{
  "id": "event_1",
  "event_type": "conversation.chat.completed",
  "data": {
      "id": "123",
      "chat_id": "123",
      "conversation_id": "123",
      "bot_id": "222",
      "created_at": 1710348675,
      "completed_at": 1710348675,
      "last_error": null,
      "meta_data": {},
      "status": "completed",
      "usage": {
          "token_count": 3397,
          "output_tokens": 1173,
          "input_tokens": 2224
      }
  }   
}
```

## 端插件请求 {#1575c709}

* **事件类型**：conversation.chat.requires_action
* **事件说明**：对话中断，需要使用方上报工具的执行结果。
* **事件结构**：

<!-- @cols-width: 157,111,100,500 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |String |必选 |服务端生成的唯一 ID。 |
| | | | | \
|event_type |String |必选 |固定为`conversation.chat.requires_action`。 |
| | | | | \
|data |Object |必选 |事件数据，包含对话的详细信息。 |
| | | | | \
|data.id |String |必选 |对话 ID，即对话的唯一标识。 |
| | | | | \
|data.conversation_id |String |必选 |会话 ID，即会话的唯一标识。 |
| | | | | \
|data.bot_id |String |必选 |要进行会话聊天的智能体 ID。 |
| | | | | \
|data.created_at |Integer |可选 |对话创建的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.completed_at |Integer |可选 |对话完成的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.last_error |Object |可选 |对话运行异常时，此字段中返回详细的错误信息，包括： |\
| | | | |\
| | | |* Code：错误码。Integer 类型。0 表示成功，其他值表示失败。 |\
| | | |* Msg：错误信息。String 类型。 |
| | | | | \
|data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，用于传入使用方的自定义数据，获取消息时也会返回此附加消息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
| | | | | \
|data.status |String |可选 |对话的运行状态。取值为 `created`，即对话已创建。 |
| | | | | \
|data.usage |Object |可选 |对话的 Token 使用情况。 |
| | | | | \
|data.usage.token_count |Integer |可选 |本次对话消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
| | | | | \
|data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
| | | | | \
|data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |
| | | | | \
|data.required_action |Object |可选 |需要执行的额外操作。 |
| | | | | \
|data.required_action.type |String |可选 |额外操作的类型，枚举值为 `submit_tool_outputs`。 |
| | | | | \
|data.required_action.submit_tool_outputs |Object |可选 |需要提交的结果详情，通过提交接口上传，并可以继续聊天。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs |Array |可选 |具体上报信息详情。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs[].id |String |可选 |上报运行结果的 ID。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs[].type |String |可选 |工具类型，枚举值包括： |\
| | | | |\
| | | |* **function**: 端插件中断，需要通过上行事件[提交端插件执行结果](/developer_guides/signaling_uplink_event#99e14cb2)信令来提交执行结果。 |\
| | | |* **reply_message**: 问答中断，只需要继续正常对话。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs[].function |Object |可选 |执行方法 function 的定义。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs[].function.name |String |可选 |方法名。 |
| | | | | \
|data.required_action.submit_tool_outputs.tool_outputs[].function.arguments |String |可选 |方法参数。 |


* **事件示例**：
   ```JSON
   {
       "id": "7446668538246561821",
       "event_type": "conversation.chat.requires_action",
       "data": {
           "id": "7434369946098090003",
           "conversation_id": "7434368393420996671",
           "bot_id": "7379165428687536166",
           "created_at": 1730949143,
           "completed_at": 1730949146,
           "last_error": {
               "code": 0,
               "msg": ""
           },
           "status": "requires_action",
           "usage": {
               "token_count": 0,
               "output_count": 0,
               "input_count": 0
           },
           "required_action": {
               "type": "submit_tool_outputs",
               "submit_tool_outputs": {
                   "tool_calls": [
                       {
                           "id": "BUJJS0JKQ0dHR0VeFkNCQF5HEEZBXhJFEUJeEhFCRkESSktDREISSUI=",
                           "type": "function",
                           "function": {
                               "name": "get_current_temperature",
                               "arguments":"{\'location\":\'深圳\'}"
                           },
                           "require_info": null
                       }
                   ]
               }
           },
           "section_id": "7434368393420996671"
       }
   } 
   ```


## 对话失败 {#bca97e88}

* **事件类型**：`conversation.chat.failed`
* **事件说明**：此事件用于标识对话失败。
* **事件结构**：

<!-- @cols-width: 184,152,100,500 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |String |必选 |服务端生成的唯一 ID。 |
| | | | | \
|event_type |String |必选 |固定为`conversation.chat.failed`。 |
| | | | | \
|data |Object |必选 |事件数据，包含对话的详细信息。 |
| | | | | \
|data.id |String |必选 |对话 ID，即对话的唯一标识。 |
| | | | | \
|data.conversation_id |String |必选 |会话 ID，即会话的唯一标识。 |
| | | | | \
|data.bot_id |String |必选 |要进行会话聊天的智能体 ID。 |
| | | | | \
|data.created_at |Integer |可选 |对话创建的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.failed_at |Integer |可选 |对话失败的时间。格式为 10 位的 Unixtime 时间戳，单位为秒。 |
| | | | | \
|data.last_error |Object |可选 |对话运行异常时，此字段中返回详细的错误信息，包括：Code：错误码。Integer 类型。0 表示成功，其他值表示失败。Msg：错误信息。String 类型。 |
| | | | | \
|data.meta_data |Map<String, String> |可选 |创建消息时的附加消息，用于传入使用方的自定义数据，获取消息时也会返回此附加消息。自定义键值对，应指定为 Map 对象格式。长度为 16 对键值对，其中键（key）的长度范围为 1～64 个字符，值（value）的长度范围为 1～512 个字符。 |
| | | | | \
|data.status |String |可选 |对话的运行状态。取值为 `failed`，即对话失败。 |
| | | | | \
|data.usage |Object |可选 |对话的 Token 使用情况。 |
| | | | | \
|data.usage.token_count |Integer |可选 |本次对话消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
| | | | | \
|data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
| | | | | \
|data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |


* **事件示例**：

```JSON
{
  "id": "event_1",
  "event_type": "conversation.chat.failed",
  "data": {
      "id": "123",
      "chat_id": "123",
      "conversation_id": "123",
      "bot_id": "222",
      "created_at": 1710348675,
      "failed_at": 1710348675,
      "last_error": {
          "code": 1,
          "msg": "发生异常"
      },
      "meta_data": {},
      "status": "failed",
      "usage": {
          "token_count": 3397,
          "output_tokens": 1173,
          "input_tokens": 2224
      }
  }   
}
```

## 用户开始说话 {#d25ab9d1}

* **事件类型**：`audio.user.speech_started`
* **事件说明**：此事件表示服务端识别到用户正在说话。
* **事件结构**：
   <!-- @cols-width: 100,100,100,415 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`audio.user.speech_started`。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "audio.user.speech_started",
     "data": {}
   }
   ```


## 用户结束说话 {#9242e241}

* **事件类型**：`audio.user.speech_stopped`
* **事件说明**：此事件表示服务端识别到用户已停止说话。
* **事件结构**：

<!-- @cols-width: 100,100,100,430 -->
| | | | | \
|**参数** |**类型** |**是否必选** |**说明** |
|---|---|---|---|
| | | | | \
|id |String |必选 |服务端生成的唯一 ID。 |
| | | | | \
|event_type |String |必选 |固定为`audio.user.speech_stopped`。 |


* **事件示例**：

```JSON
{
  "id": "event_1",
  "event_type": "audio.user.speech_stopped",
  "data": {}
}
```

## 智能体开始说话 {#8e71ba6b}

* **事件类型**：`audio.agent.speech_started`
* **事件说明**：此事件表示智能体正在说话。
* **事件结构**：
   <!-- @cols-width: 100,100,100,402 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`audio.agent.speech_started`。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "audio.agent.speech_started",
     "data": {}
   }
   ```


## 智能体结束说话  {#78b17cf2}

* **事件类型**：`audio.agent.speech_stopped`
* **事件说明**：此事件表示智能体已停止说话。
* **事件结构**：
   <!-- @cols-width: 100,100,100,487 -->
   | | | | | \
   |参数 |类型 |是否必选 |说明 |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`audio.agent.speech_stopped`。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "audio.agent.speech_stopped",
     "data": {}
   }
   ```


## 安抚配置更新成功  {#f4f632c3}

* **事件类型**：`session.pre_answer.updated`
* **事件说明**：房间内的安抚配置更新成功，返回房间内最新的安抚配置。
* **事件结构**：
   <!-- @cols-width: 162,104,100,455 -->
   | | | | | \
   |参数 |类型 |是否必选 |说明 |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为 `session.pre_answer.updated`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含安抚策略的详细信息。 |
   | | | | | \
   |data.pre_answer |Object |必选 |安抚策略配置。 |
   | | | | | \
   |data.pre_answer.type |String |必选 |安抚策略类型，可选类型有： |\
   | | | | |\
   | | | |* `none`：取消安抚策略，默认值。 |\
   | | | |* `audio`：根据用户上传的音频文件作为安抚语。 |\
   | | | |* `text`：根据用户输入的文本生成安抚语。 |\
   | | | |* `bot`：指定另一个智能体作为安抚语的生成载体。 |
   | | | | | \
   |data.pre_answer.file_id |String |可选 |仅在 `audio` 模式下生效，用户需要先通过上传文件接口上传一个音频文件，传入该接口返回的 `file_id`。当前仅支持 `wav`/`mp3` 音频文件。 |
   | | | | | \
   |data.pre_answer.pre_answer_list |Array<String> |可选 |仅在 `text` 模式下生效，用户可以输入一批文本，会在触发安抚策略时随机选取一段文本作为安抚语播放。 |
   | | | | | \
   |data.pre_answer.bot_id |String |可选 |仅在 `bot` 模式下生效，ASR 识别的文本会同时请求这个 `BotID`，并将该智能体回复的内容作为安抚语。传入的智能体必须是属于当前用户的智能体。该策略会消耗额外的 Token。 |
   | | | | | \
   |data.trigger |Object |可选 |安抚策略的触发配置。 |
   | | | | | \
   |data.trigger.type |String |必选 |安抚策略的触发类型，可选类型有： |\
   | | | | |\
   | | | |* `mandatory`：必定触发安抚策略，默认值。 |\
   | | | |* `time-trigger`：一段时间后模型没有生成回复，就会触发安抚策略。 |\
   | | | |* `event-driven`：模型触发 function call 就会触发安抚策略。 |
   | | | | | \
   |data.trigger.time_after |Integer |可选 |仅在 `time-trigger` 模式下生效，指定在等待多长时间后触发安抚策略，单位为 ms，取值范围 [0, 3000]，默认值为 1500ms。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "session.pre_answer.updated",
     "data": {
         "pre_answer": {
             "type": "bot",
             "file_id": "",
             "pre_answer_list": [""],
             "bot_id": "23452423"
         },
         "trigger": {
             "type": "mandatory",
             "time_after": 1500
         }
     }
   }
   ```


## 安抚已生成  {#d071e868}

* **事件类型**：`conversation.chat.pre_answer`
* **事件说明**：此事件表明触发了安抚策略。
* **事件结构**：
   <!-- @cols-width: 184,100,100,439 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为 `conversation.chat.pre_answer`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含安抚语的详细信息。 |
   | | | | | \
   |data.content |String |可选 |安抚语的内容。若选择 `audio` 安抚策略，则该字段为空。 |
   | | | | | \
   |data.usage |Object |可选 |本次安抚语消耗的 Token 信息，仅在使用 `bot` 安抚策略时展示该字段。 |
   | | | | | \
   |data.usage.token_count |Integer |可选 |本次安抚语消耗的 Token 总数，包括 input 和 output 部分的消耗。 |
   | | | | | \
   |data.usage.output_count |Integer |可选 |output 部分消耗的 Token 总数。 |
   | | | | | \
   |data.usage.input_count |Integer |可选 |input 部分消耗的 Token 总数。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "conversation.chat.pre_answer",
     "data": {
         "content": "",
         "usage": {
             "token_count": 0,
             "output_tokens": 0,
             "input_tokens": 0
         }
     }
   }
   ```


## 用户语音识别字幕 {#3cc6bf07}

* **事件类型**：`conversation.audio_transcript.delta`
* **事件说明**：用户语音识别的中间值，每次返回都是全量文本。
* **事件结构**：
   <!-- @cols-width: 100,100,100,522 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`conversation.audio_transcript.delta`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含语音识别的中间值。 |
   | | | | | \
   |data.content |String |必选 |语音识别的中间值。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "conversation.audio_transcript.delta",
     "data": {
         "content": "今天的"
     }
   }
   ```


## 更新房间模式成功 {#54a9c02b}

* **事件类型**：`mode.updated`
* **事件说明**：房间模式更新成功，返回最新的房间模式设置。
* **事件结构**：

<!-- @cols-width: 240,148,172,272 -->
| | | | | \
| **参数**  | **类型**  | **是否必选**  | **说明**  |
|---|---|---|---|
| | | | | \
| id  | String  | 必选  |服务端生成的唯一 ID。  |
| | | | | \
| event_type  | String  | 必选  |固定为 `mode.updated`。  |
| | | | | \
| data  | Object  | 必选  |事件数据，包含房间模式和对话设置。  |
| | | | | \
| data.mode  | String  | 必选  |房间模式。 |\
| | | |默认为 chat，即对话模式，跟智能体进行聊天。  |
| | | | | \
| data.mode.chat  | Object  | 可选  |对话模式下的设置，仅当 `mode` 为 `chat` 时生效。  |
| | | | | \
| data.mode.chat.user_language  | String  | 可选  |用户说话的语种，默认为 `common`。选项包括：  |\
| | | | |\
| | | |* common：大模型语音识别，支持中英文、上海话、闽南语，四川、陕西、粤语识别。 |\
| | | |* 英语：en-US |\
| | | |* 日语：ja-JP |\
| | | |* 印尼语：id-ID |\
| | | |* 西班牙语：es-MX |\
| | | |* 葡萄牙语：pt-BR |\
| | | |* 德语：de-DE |\
| | | |* 法语：fr-FR |\
| | | |* 韩语：ko-KR |\
| | | |* 菲律宾语：fil-PH |\
| | | |* 马来语：ms-MY |\
| | | |* 泰语：th-TH |\
| | | |* 阿拉伯语：ar-SA |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |
|^^|^^|^^|^^| \
| | | | |


* **事件示例**：

```JSON
{
    "id": "",
    "event_type": "mode.updated",
    "data": {
        "mode": "chat",
        "chat": {
            "user_language": "common"
        }
    }
}
```

## 用户开始说话 {#d0aa714c}

* **事件类型**：`input_audio_buffer.started`
* **事件说明**：表示服务端成功处理用户开始说话事件。
* **事件结构**：
   <!-- @cols-width: 100,100,100,381 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |string | 必选 |服务端生成的唯一 ID。  |
   | | | | | \
   |event_type |string  |必选 |固定为 input_audio_buffer.started。 |

* 事件示例：
   ```JSON
   {
       "id": "7446668538246561827",
       "event_type": "input_audio_buffer.start",
       "data": {}
   }
   ```


## 用户结束说话 {#2cd78201}

* **事件类型**：`input_audio_buffer.completed`
* **事件说明**：表示服务端成功处理用户结束说话事件。
* **事件结构**：
   <!-- @cols-width: 100,100,100,381 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |string | 必选 |服务端生成的唯一 ID。  |
   | | | | | \
   |event_type |string  |必选 |固定为 input_audio_buffer.completed。 |

* 事件示例：
   ```JSON
   {
       "id": "7446668538246561827",
       "event_type": "input_audio_buffer.completed",
       "data": {}
   }
   ```


##  {#dbc236b8}
## 发生错误 {#6617d50e}

* **事件类型**：`error`
* **事件说明**：对话过程中的错误事件。
* **事件结构**：
   <!-- @cols-width: 136,100,100,416 -->
   | | | | | \
   |**参数** |**类型** |**是否必选** |**说明** |
   |---|---|---|---|
   | | | | | \
   |id |String |必选 |服务端生成的唯一 ID。 |
   | | | | | \
   |event_type |String |必选 |固定为`error`。 |
   | | | | | \
   |data |Object |必选 |事件数据，包含错误的详细信息。 |
   | | | | | \
   |data.code |Integer |必选 |错误码。错误码列表请参见[Realtime 事件错误码](/developer_guides/realtime_error_codes)。 |
   | | | | | \
   |data.msg |String |必选 |错误信息。 |
   | | | | | \
   |data.detail |Object |必选 |错误的详细信息。 |
   | | | | | \
   |data.detail.logid |String |必选 |服务端日志 ID。 |

* **事件示例**：
   ```JSON
   {
     "id": "event_1",
     "event_type": "error",
     "data": {
         "code": 1,
         "msg": "发生异常",
         "detail": {
             "logid": ""
         }
     }
   }
   ```


##  {#edb84e66}

