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

本文,旨在分析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。
payloadVersionpayload的版本号。

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信息

属性取值
nameDiscoverAppliancesRequest
namespaceDuerOS.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信息

属性取值
nameDiscoverAppliancesResponse
namespaceDuerOS.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. 分组信息

属性描述说明是否必须
discoveredGroupsdiscoveredGroups 对象的数组,该对象包含可发现分组,与用户设备帐户相关联的。
如果没有与用户帐户关联的分组,此属性应包含一个空数组。
如果发生错误,该属性可以为空数组[]。阵列中允许的最大项目数量为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信息

属性取值
nameTurnOnRequest
namespaceDuerOS.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信息

属性取值
nameTurnOnConfirmation
namespaceDuerOS.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信息

属性取值
nameGetStateRequest
namespaceDuerOS.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信息

属性取值
nameGetStateResponse
namespaceDuerOS.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信息

属性取值
nameValueOutOfRangeError
namespaceDuerOS.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-Typeapplication/json

参数信息

1. Header信息

属性取值
namespaceDuerOS.ConnectedHome.Control
nameChangeReportRequest

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信息

属性取值
nameReportStateRequest
namespaceDuerOS.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信息

属性取值
nameReportStateResponse
namespaceDuerOS.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-Typeapplication/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信息

属性取值
nameUnbindBotRequest
namespaceDuerOS.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信息

属性取值
nameUnbindBotResponse
namespaceDuerOS.ConnectedHome.UnbindBot

Payload信息

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

应用举例

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32641.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能音箱里小度、小爱、天猫精灵哪个更加好?(下)

上一期我们聊了一下智能音箱到底是什么,以及目前智能音箱的主流品牌是什么,那这一期我们就来讲讲国内几个主流品牌的优缺点。 关于WiFi,蓝牙,zigbee等协议的话,我们只需要知道在选择的时候,如果要和家里的…

esp8266接入小度语音,小度音箱控制,附开源app控制

超简单,两步完事 第一步 下载程序到esp8266第二步 绑定到小度第三步 (附)开源app控制第四步 微信小程序控制: 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开发,关于arduino IDE 的ESP826…

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

由于项目需要,需要对接DuerOS,使用小度音箱控制设备。近期会对DuerOS技能平台进行一些研究,尤其是智能控制相关功能。特此记录。 文章目录 DuerOS开放平台简介技能分类自定义技能小技能内容资源智能家居 智能家居技能创建技能配置技能1. 基础…

第三方设备对接小度音箱 记录

小度音箱对接Dueros开放平台有相关资料,包括认证流程和协议介绍。 技能开放平台 (baidu.com) 云云对接 根据资料,直接接入需要特定硬件支持,所以选用云云对接方式。 DuerOS开放平台 | 资源中心 (baidu.com) 云云对接主要框架是&#xff…

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

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

跟着Nature Communications学作图 -- 复杂热图+堆积柱状图注释

❝ 已经付费加群的小伙伴无需二次付费,等待师兄后续更新即可! ❞ 封面 从这个系列开始,师兄就带着大家从各大顶级期刊中的Figuer入手,从仿照别人的作图风格到最后实现自己游刃有余的套用在自己的分析数据上!这一系列绝…

科研论文画图技巧分享!超级实用!

前言:很多小伙伴在做科研的过程中,对论文结果的呈现问题大费周章,很多时候经过程序跑出的图不那么好看(美学角度上)。今天,小编在这里分享一些个人在做科研时画图的一些经验和心得(走过很多的坑…

SCI科研论文配图插图绘制推荐-博图汇科研绘图

科研论文期刊封面图、摘要图、图文摘要(Graphical Abstract)、TOC图(Table of Contents)、插图、配图、原理图、示意图、机制图、数据图等的设计和绘制,将科研学者的idea、概念、原理等以图表的形式展现出来&#xff0…

使用Tortoisegit,修改账户名密码

使用Tortoisegit,修改账户名密码 今天在使用Tortoisegit克隆项目时,输错了账户名和密码,那么该如何修改输入错误的账户名和密码呢? 首先打开控制面板,然后依次进行如下操作即可: 在这个页面就能看到保…

个人信息界面+修改密码界面

下班没啥事&#xff0c;花费三个小时做了一个“个人设置”界面&#xff0c;所使用的框架是vue&#xff0c;技术是element UI组件。 拿去不谢&#xff01;&#xff01;&#xff01;有帮助的话&#xff0c;点个赞再走 <template><div style"background-color:#FCFC…

rasa开发多轮对话机器人进阶

使用rasa开发多轮对话机器的时候&#xff0c;发现配置很麻烦&#xff0c;且配置很容易出错&#xff0c;配置之间还存在关联关系&#xff0c;即便是使用界面也很繁琐。本文有一个新的思路&#xff0c;即通过一个引导生成对话机器人的机器人来创建对话机器人。这里以工单类客服机…

如何利用手机进行英语学习?

手机的作用在现在已经不仅仅是打电话这么简单了.尤其是现在的智能手机,如果说他是掌上电脑已经不为过了. 手机的一大特点是非常的便利,并且可以随时的带在身上.如何在手机的身上进行发掘的话,你将会发现一部智能手机将会成为你的学习利器. 英语的重要性已经不需要在强调了.如何…

​每天十分钟| Get实用在线英语启蒙教育APP—叽里呱啦

作为家有幼儿宝宝的老母亲&#xff0c;曾经也被“陪娃上课&#xff0c;陪娃写作业”的恐惧深深地支配过。尤其是在给宝宝辅导英语启蒙的过程中&#xff0c;为娘切身地感受到&#xff1a; 兴趣是英语启蒙的原动力&#xff0c;所以在启蒙过程中&#xff0c;家长为孩子选择一款专…

测试英语小软件,儿童学英语软件哪个好,亲测这四款很不错

很多家长都在不断寻求儿童学英语的好方法&#xff0c;比如利用绘本拼读、上少儿英语培训班、做英语小游戏等等&#xff0c;但还有一种儿童学英语的途径常常被大家忽略&#xff0c;就是儿童学英语软件。儿童学英语软件哪个好&#xff0c;现在也有许多家长尝试利用一些学习软件来…

43 岁知名技术大佬当街遇刺身亡,马斯克都怒了!

整理 | 郑丽媛、出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 美国当地时间周二傍晚&#xff0c;旧金山警察局发布了一则案件通告&#xff1a; 周二凌晨&#xff0c;旧金山警察局南区分局接到了一个报警电话&#xff0c;称在 Main Street 的第 300 街区发生了一…

真正的AGI,既然是高度仿真人类的,是否可能也要经历过恐惧的体验?

&#xff08;本文纯属一本正经扯淡&#xff0c;但讨论的命题是深刻古老的...&#xff09; 一年多前&#xff0c;OpenAI的缔造者Sam Altman在一档Podcast《成就的艺术》&#xff08;The Art of Accomplishment&#xff09;中被问到&#xff0c;如果有一个让人工智能感受到恐惧的…

一文快速了解 GPT-4

从文本到图像&#xff0c;GPT-4将彻底改变我们与AI互动的方式 近年来&#xff0c;语言模型的发展已成为人工智能领域的一个关键研究领域。由OpenAI开发的GPT&#xff08;生成预训练变换器&#xff09;模型一直处于这一研究的前沿。GPT-4是该系列的最新版本&#xff0c;建立在其…

论文分享丨Holistic Evaluation of Language Models

摘要&#xff1a;该文为大模型评估方向的综述论文。 本文分享自华为云社区《【论文分享】《Holistic Evaluation of Language Models》》&#xff0c;作者&#xff1a;DevAI。 大模型&#xff08;LLM&#xff09;已经成为了大多数语言相关的技术的基石&#xff0c;然而大模型的…

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解 1.GPT 模型 1.1 GPT 模型简介 在自然语言处理问题中&#xff0c;可从互联网上下载大量无标注数据&#xff0c;而针对具体问题的有标注数据却非常少&#x…

大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍

大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍 1.大语言模型的预训练 1.LLM预训练的基本概念 预训练属于迁移学习的范畴。现有的神经网络在进行训练时&#xff0c;一般基于反向传播&#xff08;Back Propagation&…