简介

DCS协议是DuerOS服务端与设备端之间的通讯协议,是一套把DuerOS的智能语音交互能力向所有设备开放的API。智能音箱、智能TV、智能冰箱等设备端,通过这套API与服务端进行通讯,实现DCS协议客户端逻辑,接入DuerOS服务,就能够让设备具有DuerOS的所有交互能力。

协议概要

DCS协议由指令、事件、端状态三个部分组成。

指令(directive)是服务端下发给设备端,设备端需要执行的操作。比如播放一个语音(Speak指令),设置一个闹钟(SetAlert指令),播放一个音乐(Play指令)等等。

事件(event)是设备端上报给服务端,通知服务端在设备端发生的事情。比如音乐播放开始了(PlaybackStarted事件),音乐播放结束了(PlaybackFinished事件),闹铃开始响了(AlertStarted事件),设备被唤醒并开始接受用户语音请求(ListenStarted事件)等等。

指令和事件是DCS协议最基本的要素,设备端上发生的变化都通过上报相应的事件来通知服务端,服务端通过下发指令给设备端,对用户请求进行响应。

设备端在上报事件时,需要带上设备端的端状态(clientContext)信息。比如当前是否有音乐正在播放,播放到哪里了(PlaybackState),设备端是否有设置闹铃,闹铃状态(AlertsState)等等。对用户的请求,服务端结合端目前所处的状态,决定合理的响应,下发相应的指令。

协议分层

DCS协议分传输层、消息格式层、端能力层三个层次。

传输层

传输层在DCS协议最底层,决定设备端与服务端之间的连接方式。

目前DCS服务提供基于HTTP/2的传输层协议,详细内容阅读传输层协议文档。

消息格式层

在传输层之上,我们确定请求和响应的具体字段格式,这一层为消息格式层。消息格式层确定指令、事件、端状态,以及访问令牌、设备ID等等字段的位置和格式。

目前DCS协议定义了基于HTTP请求和响应格式的消息格式,详细内容阅读消息格式文档。

端能力层

最上层端能力层,定义设备端的硬件和系统自身所具备的各种能力,如语音输入能力、语音输出能力、音频播放能力等等。每一种端能力包含一套对应的指令与事件的定义,加上必要的端状态定义。设备具备并实现的端能力越多,设备所能支持的技能也越多,如询问天气、股票等信息需要设备具备语音输入能力和语音输出能力,而要能够播放音乐则需要设备有音频播放能力。

端能力的列表和详细协议内容,阅读端能力接口文档。