调用方式

调用方式 #

使用 WebSocket 协议,控制报文为使用 UTF-8 编码的 JSON 文本。

调用流程 #

  1. 建立 WebSocket 连接;
  2. 发送 Starter 包,内容为后续请求的通用配置信息;
  3. 收到响应,表示鉴权成功或失败;
  4. 发送 Data 数据包;
  5. 收到对应返回结果,4、5 步可重复;
  6. 如果当前没有更多任务,可以直接断开(没有链接断开报文的设计);
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

调用限制 #

  1. 建立 Websocket 连接后,10 秒内未发送 Starter 包会被断开 WebSocket 连接;
  2. 如果 60 秒内没有收到任何请求,服务端会主动断开,建议以一定间隔发送 Ping 包进行保活;

请求报文格式 #

Starter #

每次建立连接后发送的第一个包,表示此连接的目的和后续数据包的解析方式。格式为 JSON 文本,包含以下字段:

字段名称类型默认值说明
authAuthN Tokenstring空字符串设备鉴权 Token,如服务端开启鉴权则必填
typeWorkflow Typestring必填填写能力对应的服务引擎编号或组合,例如:“TTS3”、“ASR1+NLP4”,参见 组合能力
deviceDevice IDstring空字符串设备 ID,建议填写,以便追溯和定位问题
sessionSession IDstring随机 UUIDv4建议调用者自行生成 Session ID 并填写,以便追溯和定位问题
asrASR Configobject使用 ASR 能力则必填ASR 专属配置,具体信息见 ASR 文档
nlpNLP Configobject使用 NLP 能力则必填NLP 专属配置,具体信息见 NLP 文档
ttsTTS Configobject使用 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 文本,包含以下字段:

字段名称类型是否必现说明
serviceService NamestringYes当前请求对应的服务模块,即auth
sessionSession IDstringYes当前连接的 Session ID
statusStatus NameenumYes当前会话的状态,正常为 ok,失败为 fail
errorError MessagestringNo如果失败,返回的错误信息

鉴权结果样例 #

{
  "service": "auth",
  "status": "ok",
  "session": "8f97055c-bd29-41c7-92d1-3933fed566fa"
}

结果数据 #

根据能力不同,每个请求会返回一个或多个结果数据包。格式为 JSON 文本,包含以下字段:

字段名称类型是否必现说明
serviceService NamestringYes当前请求对应的服务模块
sessionSession IDstringYes当前连接的 Session ID
traceTrace IDstringYes当前请求对应的 Trace ID
statusStatus NameenumYes当前会话的状态,正常为 ok,失败为 fail
errorError MessagestringNo如果失败,返回的错误信息
asrASR ContentobjectNo如果成功,返回的识别结果,具体见 ASR 文档
nlpNLP ContentobjectNo如果成功,返回的答复结果,具体见 NLP 文档
ttsTTS ContentobjectNo如果成功,返回的合成结果,具体见 TTS 文档