app进入设备控制面板页面,开始startp2pservice
设备要上报物模型 _sys_video_call_status 状态 1
Topic: $thing/up/property/${productID}/${deviceName}
Payload:
{
"method": "report",
"clientToken": "456",
"timestamp": 1212121221,
"params": {
"_sys_video_call_status": 1,
"_sys_userid": "20001",
"_sys_caller_id": "OIUYKJHGBV/device01",
"_sys_called_id": "20001",
"_sys_user_agent": "device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
}
}
上报属性参数具体字段含义:
- _sys_video_call_status为1(呼叫中)
- username为app用户的昵称, 设备主呼时可不填
- _sys_userid 用于区分是否有App参与, 设备呼设备则不填; 为app用户的userId, 无论App是主呼还是被呼
- _sys_caller_id为主呼叫方id,设备呼叫APP时,即设备的deviceId
- _sys_called_id为被呼叫方id,设备呼叫APP时,即app用户的userId
- _sys_user_agent为用户代理,用于区分呼叫来源
- 如小程序传递示例:"weapp/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN;H5)"
- 设备端传递示例:"device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
- iOS App端传递示例:"ios/1.0.0 (ios;iphone 13;zh-CN)"
- android App端传递示例:"android/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
手机调用应用端 API AppControlDeviceData, Data参数事例(Data参数为控制设备报文jsonString):
"Data": "{\"_sys_video_call_status\":1, \"username\":\"father\", \"_sys_userid\":\"20001\", \"_sys_caller_id\":\"OIUYKJHGBV/device01\", \"_sys_called_id\":\"20001\", \"_sys_user_agent\":\"device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)\"}"
_sys_video_call_status为1(手机同意接听),为0(拒绝接听)
- 若App同意通话请求, 设备会收到IOT云发出给设备的mqtt控制消息,其中 _sys_video_call_status 状态 1
- 若App拒绝通话请求, 设备会收到IOT云发出给设备的mqtt控制消息,其中 _sys_video_call_status 状态 0,当收到该消息时,设备还需参考4.2步骤report _sys_video_call_status 状态 0,将设备状态置为空闲。
设备端上报MQTT消息事例
Topic:$thing/down/property/${productID}/${deviceName}
Payload:
{
"method": "control",
"clientToken": "123",
"params": {
"_sys_video_call_status":1,
"username":"father",
"_sys_userid": "20001",
"_sys_caller_id": "OIUYKJHGBV/device01",
"_sys_called_id": "20001",
"_sys_user_agent": "device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
}
}
设备要上报物模型 _sys_video_call_status 状态 0
Topic: $thing/up/property/${productID}/${deviceName}
Payload:
{
"method": "report",
"clientToken": "456",
"timestamp": 1212121221,
"params": {
"_sys_video_call_status": 0,
"_sys_userid": "20001",
"_sys_caller_id": "OIUYKJHGBV/device01",
"_sys_called_id": "20001",
"_sys_user_agent": "device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
}
}
app 通过信令 get_device_state 请求设备p2p
action=inner_define&channel=xxx&cmd=get_device_st&type=(voice/live/playback)&quality=standard
设备要上报物模型 _sys_video_call_status 状态 2
Topic: $thing/up/property/${productID}/${deviceName}
Payload:
{
"method": "report",
"clientToken": "456",
"timestamp": 1212121221,
"params": {
"_sys_video_call_status": 2,
"_sys_userid": "20001",
"_sys_caller_id": "OIUYKJHGBV/device01",
"_sys_called_id": "20001",
"_sys_user_agent": "device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
}
}
app获取播放 url, 启动播放器拉取设备流。
同时,启动voice req带参数 calltype=video/audio,senddata发送flv数据给到设备
设备调用 p2p 的 voice req close,app会收到 voice complete 回调
app 调用 p2p 的 stop voice ,设备会收到 voice complete 回调
设备要上报物模型 _sys_video_call_status 状态 0
Topic: $thing/up/property/${productID}/${deviceName}
Payload:
{
"method": "report",
"clientToken": "456",
"timestamp": 1212121221,
"params": {
"_sys_video_call_status": 0,
"_sys_userid": "20001",
"_sys_caller_id": "OIUYKJHGBV/device01",
"_sys_called_id": "20001",
"_sys_user_agent": "device/1.0.0 (Android 29;HUAWEI ELS-AN00;zh-CN)"
}
}