本文,旨在分析DuerOS开放平台中智能家居技能协议
参考的官方地址: https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-smart-home/protocol/intro-protocol_markdown
文中仅摘取了几条协议举例,具体参照官方文档。

文章目录

  • 协议简介
    • 协议格式
      • Header信息
      • Payload信息
  • 协议详述
    • 发现设备
      • DiscoverAppliancesRequest
      • DiscoverAppliancesResponse
    • 控制消息
      • TurnOnRequest
      • TurnOnConfirmation
    • 查询消息
      • GetStateRequest
      • GetStateResponse
    • 错误消息
      • ValueOutOfRangeError
    • 设备属性主动上报
      • 主动上报请求消息
      • 请求返回消息
      • ReportStateRequest消息
      • ReportStateResponse消息
    • 设备信息同步消息
      • 请求消息说明
      • 返回说明
    • 技能解绑消息通知
      • UnbindBotRequest
      • UnbindBotResponse

协议简介

智能家居协议是DuerOS与智能家居技能之间的通讯协议。通过这些协议您可以轻松的通过语音控制家里的智能设备,与设备进行交互。
智能家居协议使用HTTPS传输,协议采用JSON消息格式。

协议格式

智能家居协议指令(directives)由HeaderPayload两部分组成。

举例如下:

{"header": {"namespace": "DuerOS.ConnectedHome.Control","name": "TurnOnRequest","messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688","payloadVersion": "1"},"payload": {"accessToken": "[OAuth token here]","appliance": {"additionalApplianceDetails": {},"applianceId": "[Device ID for Light]"},"function": "light"}
}

Header信息

Header包含消息标识符、指令名称、命令空间和payload版本信息。

消息格式

{"header": {        "namespace": "DuerOS.ConnectedHome.Discovery","name": "DiscoverAppliancesRequest","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"}
}

属性说明

Header包含的属性及属性说明。

属性 属性说明 是否必须
namespace 指令的类别。 目前支持的类别有:
DuerOS.ConnectedHome.Discovery:发现设备指令。
DuerOS.ConnectedHome.Control:控制设备指令。
DuerOS.ConnectedHome.Query:查询设备指令。
name 指令的名称。
messageId 消息的唯一标识符,长度小于128个字符。
messageId仅用于标识消息,无其他使用。
建议使用随机生成的UUID作为messageId。
payloadVersion payload的版本号。

Payload信息

Payload的内容与Header中的name值相关,不同类型的指令,其payload内容也不相同。

举例如下:

{"payload": {"accessToken": "[OAuth token here]","appliance": {"additionalApplianceDetails": {},"applianceId": "[Device ID for Light]"},"function": "light"}
}

协议详述

DuerOS对控制、查询、属性上报等消息进行了分类。根据不同的流程,使用不同的消息。

大致说明如下:

消息类型 说明 控制方向 举例
发现设备 小度平台向设备云发现用户的设备列表 小度–请求–>设备云 小度,发现设备
控制消息 用户对设备的控制类消息
由小度音箱或APP发起,发送到设备云进行解析
小度–请求–>设备云 小度,打开油烟机
小度,回家模式
查询消息 用户查询设备的状态数据
由小度音箱或APP发起,发送到设备云进行解析
小度–请求–>设备云 小度,查询烟机风速
小度,查询PM2.5
错误消息 控制、查询消息,操作失败时,响应给小度的错误消息 设备云–响应–>小度
设备属性主动上报 当手动或其他非小度平台操作了设备后,通知到小度有属性更新
小度收到通知后,再向设备云请求设备属性信息。
设备云–请求–>小度
小度–请求–>设备云
设备信息同步消息 用户设备信息发生变化时,通知给小度音箱 设备云–请求–>小度
技能解绑消息通知 当用户在技能商店解绑智能家居技能时,通知设备云 小度–请求–>设备云

发现设备

发现设备消息用于查找用户可用的设备、可以使用的场景和设备分组信息,有DiscoverAppliancesRequest和DiscoverAppliancesResponse两个指令。DiscoverAppliancesRequest指令是发出查找设备请求,DiscoverAppliancesResponse指令回复查找到的设备。如果你的技能应用中的用户设备信息变更时,可以通过DuerOS提供的异步接口发送通知,触发用户设备信息同步到DuerOS。

DiscoverAppliancesRequest

当用户查找设备时,DuerOS会将该消息发送给技能。另外,用户每次在DuerOS技能商店启用你的技能时,此消息会自动触发一次。

Header信息

属性 取值
name DiscoverAppliancesRequest
namespace DuerOS.ConnectedHome.Discovery

Payload信息

属性 描述 是否必须
accessToken 设备云端获取的access token。
openUid 被授权的百度账号开放ID,与设备云账号一一对应。
设备云端需要将该字段与用户账号一一对应起来存储
其它协议中如果需要携带openUid字段时,则需要返回用户账号对应的openUid值。

应用举例
当用户说“小度小度,发现设备”,DuerOS理解用户为发现设备意图时或者当用户在DuerOS技能商店里启用技能并授权完成之后会向技能发送该DiscoverAppliancesRequest消息。消息示例如下:

{"header": {"namespace": "DuerOS.ConnectedHome.Discovery","name": "DiscoverAppliancesRequest","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"},"payload": {"accessToken": "[OAuth Token here]","openUid": "27a7d83c2d3cfbad5d387cd35f3ca17b"}
}

DiscoverAppliancesResponse

当DuerOS请求技能查找可用设备或可用场景时,技能会返回DiscoverAppliancesResponse消息。 如果查找到设备时,会返回设备的相关信息,包括actions、applianceTypes、additionalApplianceDetails、applianceId、friendlyDescription、friendlyName等属性信息。如果没有找到设备时,会返回空数组。

Header信息

属性 取值
name DiscoverAppliancesResponse
namespace DuerOS.ConnectedHome.Discovery

Payload信息

1. 设备信息

属性 描述说明 是否必须
discoveredAppliances 以对象数组返回客户关联设备云帐户的设备、场景。
如客户关联帐户没有设备、场景则返回空数组。
如果在发现过程中出现错误,字段值设置为null, 用户允许接入的最大的设备数量是300。
discoveredAppliance.applianceTypes 支持的设备、场景类型。
discoveredAppliance.applianceId 设备标识符。
标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。
标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。标识符不能超过256个字符。
discoveredAppliance.modelName 设备型号名称,是字符串类型,长度不能超过128个字符。
discoveredAppliance.version 供应商提供的设备版本。是字符串类型,长度不能超过128个字符。
discoveredAppliance.friendlyName 用户用来识别设备的名称。
是字符串类型,不能包含特殊字符和标点符号,长度不能超过128个字符。
discoveredAppliance.
friendlyDescription
设备相关的描述。
描述内容需要提及设备厂商,使用场景及连接方式。
长度不超过128个字符。
discoveredAppliance.isReachable 设备当前是否能够到达。true表示设备当前可以到达,false表示当前设备不能到达。
discoveredAppliance.actions 设备支持的操作类型数组。详细情况请参见 设备操作类型。
discoveredAppliance.
additionalApplianceDetails
提供给设备云使用,存放设备或场景相关的附加信息,是键值对。
DuerOS不解析或使用这些数据。该属性的内容不能超过5000字节。

内容可以为空
discoveredAppliance.
manufacturerName
设备厂商的名字。
discoveredAppliance.attributes 设备的属性信息。
当设备没有属性信息时,协议中不需要传入该字段。
每个设备允许同步的最大的属性数量是10。
详细信息请参考设备属性及设备属性上报。

建议将设备属性上报,方便用户查询
discoveredAppliance.attribute.name 属性名称,支持数字、字母和下划线,长度不能超过128个字符。
discoveredAppliance.attribute.value 属性值,支持多种json类型。
discoveredAppliance.attribute.scale 属性值的单位名称,支持数字、字母和下划线,长度不能超过128个字符。
discoveredAppliance.attribute.
timestampOfSample
属性值取样的时间戳,单位是秒。
discoveredAppliance.
attribute.
uncertaintyInMilliseconds
属性值取样的时间误差,单位是ms。
如果设备使用的是轮询时间间隔的取样方式,那么uncertaintyInMilliseconds就等于时间间隔。如温度传感器每1秒取样1次,那么uncertaintyInMilliseconds的值就是1000。

2. 分组信息

属性 描述说明 是否必须
discoveredGroups discoveredGroups 对象的数组,该对象包含可发现分组,与用户设备帐户相关联的。
如果没有与用户帐户关联的分组,此属性应包含一个空数组。
如果发生错误,该属性可以为空数组[]。阵列中允许的最大项目数量为10。
discoveredGroups.groupName 用户用来识别分组的名称, 不应包含特殊字符或标点符号,长度不超过20字符。
discoveredGroups.applianceIds 分组所包含设备ID的数组,要求设备ID必须是已经发现的设备中的ID,否则会同步失败
每个分组设备ID数量不超过50。
discoveredGroups.groupNotes 分组备注信息,不能超过128个字符。
discoveredGroups.additionalGroupDetails 提供给技能使用的分组相关的附加信息的键值对。
该属性的内容不能超过2000字符。而且DuerOS也不了解或使用这些数据。
是,但可以为空数组[]

说明:

  • 如果没有找到设备或相关场景,此时返回的discoveredAppliances是一个空数组。如果查找设备过程中发生了错误,该字段值设置为null。
  • 当applianceTypes=ACTIVITY_TRIGGER/SCENE_TRIGGER时,场景和模式不支持通过分组来控制,比如只支持“打开回家模式”,而不支持“打开客厅的回家模式”。

此处就不举例了,示例较长。
参考官网: https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-smart-home/protocol/discovery-message_markdown

控制消息

控制消息(Control Message)是对智能家居设备进行控制的消息。有门锁设备控制消息、摄像机设备控制消息、灯光设备控制消息、温度设备控制消息等。

目前支持以下设备控制消息:


以上描述及语料,纯属个人理解,具体看小度。

举个例子

TurnOnRequest

当用户想打开指定设备时,DuerOS会将该消息发送给技能。

Header信息

属性 取值
name TurnOnRequest
namespace DuerOS.ConnectedHome.Control

Payload信息

属性 描述说明 是否必须
accessToken 设备云端获取的access token。
appliance 设备操作的具体对象,包括applianceId和additionalApplianceDetails。
appliance.applianceId 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。标识符不能超过256个字符。
appliance.additionalApplianceDetails 提供给设备云使用,存放设备或场景相关的附加信息,是键值对。DuerOS不解析或使用这些数据。该属性的内容不能超过5000字节。 是,内容可以为空
function 表示打开设备的子功能,例如,打开关闭灶台的灯光、根据此字段识别此类的请求

应用举例

当用户说“小度小度,打开电灯”,DuerOS理解到用户意图后,向技能发送TurnOnRequest消息,消息示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Control","name": "TurnOnRequest","messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688","payloadVersion": "1"},"payload": {"accessToken": "[OAuth token here]","appliance": {"additionalApplianceDetails": {},"applianceId": "[Device ID for Light]"},"function": "light"}
}

TurnOnConfirmation

当请求的设备成功打开时,技能会发送该消息给DuerOS。

Header信息

属性 取值
name TurnOnConfirmation
namespace DuerOS.ConnectedHome.Control

Payload信息

属性 取值 是否必须
attributes 设备属性信息,支持上报一个或多个属性信息。请查看属性信息附录,了解设备的属性和上报方式。 否,当设备属性信息发生变化时,建议将属性变更信息上报给DuerOS。

应用举例

当电视成功打开时,技能向DuerOS发送TurnOnConfirmation消息,示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Control","name": "TurnOnConfirmation","messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722","payloadVersion": "1"},"payload": {"attributes": []}
}

查询消息

查询消息(Query Message)主要是通过智能家居设备查询空气质量、查询空气湿度、查询设备温度、查询设备状态等信息。目前支持以下查询消息。

举个例子

GetStateRequest

当用户想了解设备状态时,DuerOS会该将消息发送给技能,比如想要了解扫地机器人当前状态(清扫中/充电中/回充中…)时,可以说,“小度小度, 扫地机器人在干吗?”, 这时技能会收到GetStateRequest消息。

Header信息

属性 取值
name GetStateRequest
namespace DuerOS.ConnectedHome.Query

Payload信息

属性 描述说明 是否必须
accessToken 设备云端获取的access token。
appliance 设备操作的具体对象。包括applianceId和additionalApplianceDetails。
appliance.applianceId 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。标识符不能超过256个字符。
appliance.additionalApplianceDetails 提供给设备云使用,存放设备或场景相关的附加信息,是键值对。DuerOS不解析或使用这些数据。该属性的内容不能超过5000字节。 是,内容可以为空

应用举例

用户说“小度小度,扫地机器人在干吗?”,DuerOS接收到用户意图后,向技能发送GetStateRequest消息。消息示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Query","name": "GetStateRequest","messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688","payloadVersion": "1"},"payload": {"accessToken": "[OAuth token here]","appliance": {"additionalApplianceDetails": {},"applianceId": "[Device ID for Ceiling Fan]"}}
}

GetStateResponse

当技能查询到设备当前状态时,需要给DuerOS返回该消息,告知用户当前扫地机器人的状态。

Header信息

属性 取值
name GetStateResponse
namespace DuerOS.ConnectedHome.Query

Payload信息

属性 描述说明 是否必须
attributes 设备的属性信息,最多支持上报10个属性。
attribute.name 属性名称,这里取"state"。
attribute.value 字符串,目前支持的属性值如下:
CLEANING:清扫中
CHARGING:充电中
RECHARGING:回充中
SLEEPING:休眠中
STAND_BY:待命中
REPORT_ERROR:报错
SHUT_DOWN:关机
REMOTE_CONTROLING:遥控中
PAUSED:已暂停
attribute.scale 属性值的单位名称,这里是空串’’。
attribute.timestampOfSample 属性值取样的时间戳,单位是秒。
attribute.uncertaintyInMilliseconds 属性值取样的时间误差,单位是ms。

应用举例

技能查询到“扫地机器人当前的运行状态是正在清扫时”,向DuerOS返回GetStateResponse消息,消息示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Query","name": "GetStateResponse","messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7","payloadVersion": "1"},"payload": {"attributes": [{"name": "state","value": "CLEANING","scale": "","timestampOfSample":1496741861,"uncertaintyInMilliseconds": 10}]}
}

错误消息

当DuerOS向技能发送设备请求信息时,请求信息中可能存在设备不支持或者超出设备使用范围等问题,此时技能会返回相应的错误类型和信息。技能不需要返回每个错误,仅返回错误对应的错误类型。本文列出了错误类型和详细信息。


举个例子

ValueOutOfRangeError

当用户请求中对设备的设置参数超过设备支持的参数范围时,DuerOS就会收到该错误消息。

Header信息

属性 取值
name ValueOutOfRangeError
namespace DuerOS.ConnectedHome.Control

Payload信息

属性 描述说明 是否必须
minimumValue 设备的允许设置参数的最小值,是64位双精度值类型。
maximumValue 设备的允许设置参数的最大值,是64位双精度值类型。

应用举例

如用户想把空调温度设置为10度,但是空调的温度范围是17到30度,此时技能就会发送该消息给DuerOS,说明用户输入参数范围错误。消息示例如下。

{"header":{"namespace":"DuerOS.ConnectedHome.Control","name":" ValueOutOfRangeError","messageId":"697fe957-c842-4545-a159-8a8c75fbe5bd","payloadVersion":"1",},"payload":{"minimumValue":17.0,"maximumValue":30.0}
}

设备属性主动上报

当用户手动操作设备或者通过第三方app修改设备状态,如手动关闭厨房灯,手动切换电风扇模式,使用第三方app修改设备名称等,这些情况下DuerOS不会感知到设备属性变化,需要设备云主动上报设备属性。

流程:

  1. 技能主动向DuerOS发送请求消息,请求DuerOS同步设备属性信息。

  2. DuerOS收到请求后向技能发送ReportStateRequest消息,请求技能上报相应的属性信息

  3. 技能收到请求后,将向DuerOS发送ReportStateResponse消息,上报属性信息。

主动上报请求消息

当用户手动操作设备或者通过第三方app修改设备状态时,技能会主动上报属性信息,发送上报请求消息。

接口地址

https://xiaodu.baidu.com/saiya/smarthome/changereport

请求方式

POST请求方式。

Head说明

参数名称 取值
Content-Type application/json

参数信息

1. Header信息

属性 取值
namespace DuerOS.ConnectedHome.Control
name ChangeReportRequest

2. Payload信息

属性 描述说明 是否必须
botId 设备云技能ID。
openUid 用户被授权的百度账号开放ID,与设备云账号一一对应。
appliance 上报的设备对象,包括applianceId和attributeName。
appliance.applianceId 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。标识符不能超过256个字符。
appliance.attributeName 设备的属性名称,每次仅请求上报一个属性。

请求示例

curl -v "https://xiaodu.baidu.com/saiya/smarthome/changereport" -H 'Content-Type:application/json' -d
'{"header": {"namespace": "DuerOS.ConnectedHome.Control","name": "ChangeReportRequest","messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688","payloadVersion": "1"},"payload": {"botId": "5385e18b-619a-abcd-ed10-33a7d69780a6","openUid": "27a7d83c2d3cfbad5d387cd35f3ca17b","appliance": {"applianceId": "[Device ID for Light]","attributeName": "powerState"}}
}

说明

  • 这里主动上报的属性,属性值是通过ReportStateRequest查询到的,所以需要在ReportStateRequest协议实现中支持上对于上报属性的查询。

请求返回消息

当技能主动发起上报属性请求后,DuerOS返回确认信息。

参数说明

参数名称 描述 类型 是否必须
status 消息状态。0表示已经完成属性上报,非0表示消息异常。 int
msg 消息提示信息。当状态码为0时,提示更新的属性记录数。当状态码非0时,返回对应的错误消息。 string
messageId 请求消息中的messageId信息。 string
data 返回消息的数据信息。 array
data.updated_attribute_num 同步属性的数量。 int

返回示例

{“status”: 0, "msg": "update 3 attributes", "messageId": "请求消息中的messageId", "data": {"updated_attribute_num": 3}
}

ReportStateRequest消息

当DuerOS收到技能主动上报设备属性的请求时,会向技能发送ReportStateRequest消息,请求技能上报属性的完整信息。

Header信息

属性 取值
name ReportStateRequest
namespace DuerOS.ConnectedHome.Query

Payload信息

属性 描述说明 是否必须
accessToken 设备云端获取的access token。
appliance 设备操作的具体对象。包括applianceId和additionalApplianceDetails。
appliance.applianceId 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - = # ; : ? @ &。标识符不能超过256个字符。
appliance.additionalApplianceDetails 提供给设备云使用,存放设备或场景相关的附加信息,是键值对。DuerOS不解析或使用这些数据。该属性的内容不能超过5000字节。 是,内容可以为空
appliance.attributeName 查询的属性名称,字符串类型,支持数字、字母和下划线,长度不能超过128个字符。

应用举例

当手动将关上厨房灯时,厨房灯的属性发生变化,技能主动向DuerOS发送请求,DuerOS收到请求后,向技能发送ReportStateRequest消息,消息示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Query","name": "ReportStateRequest","messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688","payloadVersion": "1"},"payload": {"accessToken": "[OAuth token here]","appliance": {"additionalApplianceDetails": {},"applianceId": "[Device ID for Light ]""attributeName": "turnOnState"}}
}

ReportStateResponse消息

当技能收到ReportStateRequest请求消息时,会主动上报请求消息中属性的完整信息,并向技能发送ReportStateResponse消息。

Header信息

属性 取值
name ReportStateResponse
namespace DuerOS.ConnectedHome.Query

Payload信息

属性 描述说明 是否必须
attributes 设备的属性信息,最多支持上报10个属性。
attribute.name 属性名称,支持数字、字母和下划线,长度不能超过128个字符。
attribute.value 属性值,支持多种json类型。
attribute.scale 属性值的单位名称,支持数字、字母和下划线,长度不能超过128个字符。
attribute.timestampOfSample 属性值取样的时间戳,单位是秒。
attribute.uncertaintyInMilliseconds 属性值取样的时间误差,单位是ms。如果设备使用的是轮询时间间隔的取样方式,那么uncertaintyInMilliseconds就等于时间间隔。如温度传感器每1秒取样1次,那么uncertaintyInMilliseconds的值就是1000。

应用举例

技能获取到厨房灯的turnOnState属性时,向DuerOS发送ReportStateResponse消息,消息示例如下。

{"header": {"namespace": "DuerOS.ConnectedHome.Query","name": "ReportStateResponse","messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7","payloadVersion": "1"},"payload": {"attributes": [{"name": "turnOnState","value": "OFF","scale": "","timestampOfSample": 1496741861,"uncertaintyInMilliseconds": 0}]}
}

说明

  • 技能主动上报属性时,在主动上报请求消息中每次仅请求上报一个属性,在ReportStateResponse消息中除了返回请求的属性外,还可以返回设备的其他属性信息,最多支持返回10个属性信息。

设备信息同步消息

该接口为厂商通知DuerOS的接口,当技能涉及的用户设备信息发生变化时,如用户新增设备或减少设备,此时技能可以通过设备信息同步接口请求DuerOS进行设备信息同步。

请求消息说明

技能向DuerOS发送请求消息,请求DuerOS同步设备变更信息。

接口地址

https://xiaodu.baidu.com/saiya/smarthome/devicesync

请求方式

POST请求方式

参数说明

参数名称 参数说明 类型 是否必需
botId 技能ID。 string
logId 技能本次请求logId。 string
openUids 需要同步的用户openUid信息,每次同步的openUid不超过5个。 array

Head说明

参数名称 取值
Content-Type application/json

请求示例

curl -v "https://xiaodu.baidu.com/saiya/smarthome/devicesync" -H 'Content-Type:application/json' -d
'{"botId":"123456xyz-123456-4c5d-345677xyz","logId":"123456789","openUids":["17a7d83c2d3cfbad5d387cd35f3ca17b"]
}'

返回说明

当技能发起设备信息同步请求后,DuerOS返回信息同步确认消息。

参数说明

参数名称 描述 类型 是否必须
status 请求消息状态。0表示消息正常,非0表示消息异常。 int
msg 请求消息同步状态,可能出现以下情况。
ok:表示至少一个openUid同步成功。
openUid not more than 5:表示openUid信息超过5个。
not support botId:表示技能ID不存在。
sync failed:表示请求信息同步失败。
param error:表示参数不合法。
string
logid 请求消息中的logid。 string
data 返回消息的数据信息。 array
data.failed 同步失败的openUid集合。 array
data.succeed 同步成功的openUid集合。 array

返回示例

{"status": 0,"msg": "ok","logid": "123456789","data": {"failed": [],"succeed": ["17a7d83c2d3cfbad5d387cd35f3ca17b"]}
}

技能解绑消息通知

该接口为DuerOS通知厂商的接口。当用户在技能商店解绑智能家居技能时,DuerOS会使用该协议通知到技能服务器,以便第三方智能家居服务提供商获取到用户的这一行为而做出相应的逻辑变化,比如,用户解绑技能后,当用户新增设备时,不再通知DuerOS。协议使用HTTPS传输,采用JSON消息格式。

UnbindBotRequest

当用在技能商店解绑该技能时,DuerOS会将该消息发送给技能。

Header信息

属性 取值
name UnbindBotRequest
namespace DuerOS.ConnectedHome.UnbindBot

Payload信息

属性 描述 是否必须
accessToken 设备云端获取的access token。

应用举例

当用户在技能商店解绑了该技能时, DuerOS向技能发送UnbindBot消息,消息样例如下

{"header": {"namespace": "DuerOS.ConnectedHome.UnbindBot","name": "UnbindBotRequest","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"},"payload": {"accessToken": "[OAuth Token here]"}
}

UnbindBotResponse

当DuerOS通知技能用户解绑了该技能,技能会返回UnbindBotResponse消息。

Header信息

属性 取值
name UnbindBotResponse
namespace DuerOS.ConnectedHome.UnbindBot

Payload信息

Payload信息为空,DuerOS只是通知技能用户在DuerOS技能商店解绑了该技能。

应用举例

当DuerOS向技能发送了解绑消息后,技能回复DuerOS消息样例如下

{"header": {"namespace": "DuerOS.ConnectedHome.UnbindBot","name": "UnbindBotResponse","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"},"payload": {}
}

小度音箱对接之DuerOS开放平台智能家居技能协议分析相关推荐

  1. 小度音箱对接之DuerOS开放平台智能家居技能Java对接Demo实现

    近期调研中,编写了个简单的Demo,对接DuerOS的智能家居技能. Demo源码地址:https://gitee.com/mylitboy/link-smart-speaker-demo 介绍 小度 ...

  2. dueros模拟测试没有请求后台_小度音箱对接之DuerOS开放平台功能分析

    由于项目需要,需要对接DuerOS,使用小度音箱控制设备.近期会对DuerOS技能平台进行一些研究,尤其是智能控制相关功能.特此记录. 文章目录 DuerOS开放平台简介 技能分类 自定义技能 小技能 ...

  3. 小度音箱对接之DuerOS开放平台功能分析

    由于项目需要,需要对接DuerOS,使用小度音箱控制设备.近期会对DuerOS技能平台进行一些研究,尤其是智能控制相关功能.特此记录. 文章目录 DuerOS开放平台简介 技能分类 自定义技能 小技能 ...

  4. DuerOS开放平台对接扫地机器人

    Table of Contents 一.云云对接流程 ​二.创建智能家居技能 1.授权信息配置 填写的参数说明 三.真机测试 一.云云对接流程 二.创建智能家居技能 1.授权信息配置 配置服务需要填写 ...

  5. 谢谢...,DuerOS开放平台的2020

    "逝者如斯夫,不舍昼夜",这一年,DBP(DuerOS Bot Platform)作为DuerOS 的技能开放平台有哪些变化呢? DBP的小伙伴们非常勤勉,全年共上线了82个大小功 ...

  6. 小度音箱对接之小度APP功能分析

    本文,旨在分析小度APP中,关于智能控制相关的功能. 文中,以美的美居为例. 文章目录 小度APP介绍 首页栏目 技能栏目 VIP栏目 小度购栏目 我的栏目 智能家居模块 添加设备 设备控制 小结 小 ...

  7. Java对接微盟开放平台

    Java对接微盟开放平台 1. 微盟开放平台概述 1.1 微盟云简介 1.2 微盟云接入方式 1.3 微盟云能力介绍 2. 微盟授权商户自用对接 2.1 微盟授权业务需求 2.2 微盟商户授权流程 2 ...

  8. 视频教程-5G物联网云平台智能家居项目30天搞定-物联网技术

    5G物联网云平台智能家居项目30天搞定 我叫连志安,现任职广东长虹技术研究所(国企).之前在康佳集团(国企).CVTE(上市公司)等公司任职.负责过Android TV.智能网关.路由器.智能家居.安 ...

  9. 小米登录协议分析_小米智能家居设备流量分析及脚本控制

    原标题:小米智能家居设备流量分析及脚本控制 *本文作者:scu-igroup,本文属 FreeBuf 原创奖励计划,未经许可禁止转载. 前言 万物互联的时代即将来临,而现阶段,我们能感触到的,当属智能 ...

最新文章

  1. Serializable接口初探
  2. 类和对象—对象特性—构造函数调用规则
  3. python os.walk如何还原所有路径名_python使用os.listdir和os.walk获得文件的路径
  4. 导出真实表格显示列数不能超过256_平均月薪真有6万5?说说我所知道的金融人真实薪酬...
  5. TCM与Cache介绍
  6. Django(part42)--跨站请求伪造
  7. python os.path.exists判断文件或文件夹是否存在
  8. SQL Server中的STUFF函数的使用
  9. Ubuntu 图形界面入门
  10. 微前端完整vue实例-乾坤【qiankun】
  11. XML学习之应用范围
  12. 每周分享第 37 期
  13. 网卡在linux系统下的驱动怎么安装,RedHat Linux系统如何安装无线网卡驱动
  14. 通过gitbub桌面工具同步
  15. 数据结构STL——golang实现前缀基数树radix
  16. Java编程之屏幕上打印出n行的金字塔图案
  17. 面试题(十二)自我介绍
  18. 接口测试准备一、 网路基础 常用代理工具 charles使用 Android手机代理抓包
  19. 有python专业的世界大学_2020年QS计算机专业排名进入世界前50的,除了G5,还有这所大学!...
  20. git clone git://github.com/ethz-asl/libnabo.git 失败 time out

热门文章

  1. 项目经理如何培养自己的人际交往能力
  2. 用 Python 做一个 H5 游戏机器人
  3. PMP如何挑选培训机构
  4. 微信小程序-构建小程序的一些步骤
  5. 小程序中如何实现表情组件
  6. java进阶之---------网络编程
  7. 天然气阶梯是按年还是按月_燃气自采暖阶梯气儿价按自然年算
  8. Permissions 0777 for ‘***’ are too open
  9. 真心真诚的Java类型程序员的几个建议
  10. PythonDay13