调用方式 #
使用 WebSocket 协议,控制报文为使用 UTF-8 编码的 JSON 文本。
调用流程 #
- 建立 WebSocket 连接;
- 发送 Starter 包,内容为后续请求的通用配置信息;
- 收到响应,表示鉴权成功或失败;
- 发送 Data 数据包;
- 收到对应返回结果,4、5 步可重复;
- 如果当前没有更多任务,可以直接断开(没有链接断开报文的设计);
sequenceDiagram
participant Client
participant CS as Control System
Client-->>CS: 1. Establish Connection
activate CS
Client->>CS: 2. Request: Starter
CS-->>Client: 3. Response: Authentication
loop
Note right of Client: 重复4、5步至全部请求发送完毕
Client->>CS: 4. Request: Data
CS-->>Client: 5. Response
end
Client-->>CS: 6. Close Connection
deactivate CS
调用限制 #
- 建立 Websocket 连接后,10 秒内未发送 Starter 包会被断开 WebSocket 连接;
- 如果 60 秒内没有收到任何请求,服务端会主动断开,建议以一定间隔发送 Ping 包进行保活;
请求报文格式 #
Starter #
每次建立连接后发送的第一个包,表示此连接的目的和后续数据包的解析方式。格式为 JSON 文本,包含以下字段:
| 字段 | 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
auth | AuthN Token | string | 空字符串 | 设备鉴权 Token,如服务端开启鉴权则必填 |
type | Workflow Type | string | 必填 | 填写能力对应的服务引擎编号或组合,例如:“TTS3”、“ASR1+NLP4”,参见 组合能力。 |
device | Device ID | string | 空字符串 | 设备 ID,建议填写,以便追溯和定位问题 |
session | Session ID | string | 随机 UUIDv4 | 建议调用者自行生成 Session ID 并填写,以便追溯和定位问题 |
asr | ASR Config | object | 使用 ASR 能力则必填 | ASR 专属配置,具体信息见 ASR 文档 |
nlp | NLP Config | object | 使用 NLP 能力则必填 | NLP 专属配置,具体信息见 NLP 文档 |
tts | TTS Config | object | 使用 TTS 能力则必填 | TTS 专属配置,具体信息见 TTS 文档 |
Starter 报文样例 #
{
"auth": "XSMLTGKQVVCPJCQHJZ4VEDMGIY",
"type": "ASR5",
"device": "device-weye",
"session": "8f97055c-bd29-41c7-92d1-3933fed566fa",
"asr": {
"mic_volume": 0.67
}
}
Data #
Starter 包发送并成功建立连接后,后续可重复发送多个 Data 数据包。Data 包格式见对应能力文档。
返回报文格式 #
鉴权结果 #
发送 Starter 请求后会返回包含鉴权结果的报文。格式为 JSON 文本,包含以下字段:
| 字段 | 名称 | 类型 | 是否必现 | 说明 |
|---|---|---|---|---|
service | Service Name | string | Yes | 当前请求对应的服务模块,即auth |
session | Session ID | string | Yes | 当前连接的 Session ID |
status | Status Name | enum | Yes | 当前会话的状态,正常为 ok,失败为 fail |
error | Error Message | string | No | 如果失败,返回的错误信息 |
鉴权结果样例 #
{
"service": "auth",
"status": "ok",
"session": "8f97055c-bd29-41c7-92d1-3933fed566fa"
}
结果数据 #
根据能力不同,每个请求会返回一个或多个结果数据包。格式为 JSON 文本,包含以下字段:
| 字段 | 名称 | 类型 | 是否必现 | 说明 |
|---|---|---|---|---|
service | Service Name | string | Yes | 当前请求对应的服务模块 |
session | Session ID | string | Yes | 当前连接的 Session ID |
trace | Trace ID | string | Yes | 当前请求对应的 Trace ID |
status | Status Name | enum | Yes | 当前会话的状态,正常为 ok,失败为 fail |
error | Error Message | string | No | 如果失败,返回的错误信息 |
asr | ASR Content | object | No | 如果成功,返回的识别结果,具体见 ASR 文档 |
nlp | NLP Content | object | No | 如果成功,返回的答复结果,具体见 NLP 文档 |
tts | TTS Content | object | No | 如果成功,返回的合成结果,具体见 TTS 文档 |