# 勿扰模式_v1.0
DoNotDisturb
(DND)接口允许用户拒绝所有传入的通知、公告,和呼叫设备。用户可以设备每日重复的计划来开关DoNotDisturb
。
DND 可以通过以下方式设置:
- 「小飞在线」app,或者接入「小飞在线 SDK」的应用
- 通过语音控制,比如:“打开免打扰”、“别打扰我”等等
- 通过 DND 计划,使用
小飞在线app
设置定时计划 - 通过设备本地接口
# Capabilities API
要使用DoNotDisturb
接口,需要在设备能力上报
接口中显示声明。
{
"type": "iFLYOS.Interface",
"interface": "DoNotDisturb",
"version": "1.0"
}
# 云端DND设置为主
对于DND的设置,以云端的设置为准。当设备与云端的设置不同步时,云端状态将会同步到设备端。以下是一些云和设备不同步的特殊情况:
- 设备离线后,重新上线:
- 如果设备中的 DND 设置没有变动,设备必须上报一个
ReportDoNotDisturb
事件,如果设备状态与云端设置不同,则会下发一个SetDoNotDisturb
指令来同步云端状态到设置; - 如果设备中的 DND 设置有变动,设备必须上报一个
DoNotDisturbChanged
事件,云端DND状态将会修改为设备上报的状态;
- 如果设备中的 DND 设置没有变动,设备必须上报一个
- 云端 / 设备 更新状态失败:
- 当设备接收到
SetDoNotDisturb
指令后,更新失败时,设备应该上报一个ReportDoNotDisturb
事件。如果云端的DND设置和上报的状态不一致时,云端会重新下发一个SetDoNotDisturb
指令; - 当云端接收到
DoNotDisturbChanged
事件后,更新设置失败时,云端将返回HTTP
400
或者500
错误。设备端应该重新发送DoNotDisturbChanged
事件。如果云端的DND设置和设备不同,云端将下发SetDoNotDisturb
指令(包含云端DND状态);
- 当设备接收到
# SetDoNotDisturb 指令
这个指令用来打开或者关闭设备的DND。
设备应该响应该指令,根据payload
中的值来更新本地的DND配置,不管设置成功还是失败,都应该在执行完指令后,上报ReportDoNotDisturb
事件(包含当前设备上的DND状态)。当设备收到SetDoNotDisturb
指令时,不应该再处理DoNotDisturb
接口的其它指令,直到上报完ReportDoNotDisturb
事件。
如果设备离线的时候,云端DND设置更新了,则发送到设备端的指令会失败。当设备重新上线的时候,设备会发送一个ReportDoNotDisturb
事件,如果设置的DND状态与云端不同,云端会下发SetDoNotDisturb
指令,来更新设备端的状态。
{
"directive": {
"header": {
"namespace": "iFLYOS.DoNotDisturb",
"name": "SetDoNotDisturb",
"messageId": "xxxx"
},
"payload": {
"enabled": true
}
}
}
Payload 参数
参数 | 说明 | 类型 |
---|---|---|
enabled | 打开为true ;关闭为false | boolean |
# ReportDoNotDisturb 事件
当设备响应SetDoNotDisturb
指令更新DND设置
,或者上报DoNotDisturbChanged
事件失败时,应该上报该事件。
当云端收到ReportDoNotDisturb
事件时,如果与云端DND状态不同时,云端会下发SetDoNotDisturb
指令,来同步云端的状态到设备端。
{
"event": {
"header": {
"namespace": "iFLYOS.DoNotDisturb",
"name": "ReportDoNotDisturb",
"messageId": "xxxx"
},
"payload": {
"enabled": true
}
}
}
Payload 参数
参数 | 说明 | 类型 |
---|---|---|
enabled | 打开为true ;关闭为false | boolean |
响应
错误 | HTTP Status Code | 说明 |
---|---|---|
INVALID_REQUEST_EXCEPTION | 400 | 错误的参数/请求 |
INTERNAL_REQUEST_EXCEPTION | 500 | 服务端内部错误 |
N/A | 200/204 | 成功 |
# DoNotDisturbChanged 事件
在设备上修改DND
设备后,需要发送该事件到云端。
当设备在本地打开或者关闭DND
设置时,设备必须上报DoNotDisturbChanged
事件。当服务端返回200
或者204
时,设备应该更新本地DND
配置。如果云端返回错误响应,设备端不应该修改本地的DND
配置。设备端在收到事件响应之前,不应该再处理DoNotDisturb
接口的其它指令。
如果用户在设备离线时,设置DND
,则应该直接在设备上保存并应用设置。当设备重新连上IVS
时,设备必须上报带有最新DND状态
的DoNotDisturbChanged
事件。如果返回错误的响应,则设备必须发送ReportDoNotDisturb
事件,云端会将状态同步给设备。如果设备离线时,多次更新DND设置,只需要上报最新的状态。
{
"event": {
"header": {
"namespace": "iFLYOS.DoNotDisturb",
"name": "DoNotDisturbChanged",
"messageId": "xxxx"
},
"payload": {
"enabled": true
}
}
}
Payload 参数
参数 | 说明 | 类型 |
---|---|---|
enabled | 打开为true ;关闭为false | boolean |
响应
错误 | HTTP Status Code | 说明 |
---|---|---|
INVALID_REQUEST_EXCEPTION | 400 | 错误的参数/请求 |
INTERNAL_REQUEST_EXCEPTION | 500 | 服务端内部错误 |
N/A | 200/204 | 成功 |