Мы попробовали локальный SDK и обработали ответ SYNC с помощью otherDeviceIds. Конфигурация сканирования должна быть в порядке, потому что наше локальное приложение уже получило запрос IDENTITY с ожидаемой полезной нагрузкой udp. Ответ IDENTITY должен быть в порядке, потому что локальная платформа уже должна пройти проверку "verifyId", потому что, если я установил verifyId в некоторую строку, в противном случае будет указано, что проверка не прошла.
Проблема в том, что когда я пытался «показать камеру», локальная функция обратного вызова выполнения не запускалась. В этой ситуации моя облачная функция firebase по-прежнему получала команду «action.devices.commands.GetCameraStream».
Пробовал образец проливов лампы вроде работает хорошо. Кто-нибудь знает, поддерживает ли Google local Home sdk черты CameraStream или нет.
Следующий журнал - это объект, возвращаемый SYNC в нашей облачной функции firebase, мы добавляем поле "otherDeviceIds": [{"deviceId": "789"}], чтобы завершить локальный SDK.
SYNC JSON объект:
{
"requestId": "465812xxx029114126",
"payload": {
"agentUserId": "023XXXXd4d850c01cd16ebb636eb8418",
"devices": [{
"id": "123",
"traits": ["action.devices.traits.CameraStream"],
"name": {
"defaultNames": ["xxx CAMERA"],
"nicknames": ["Front door"],
"name": "Camera"
},
"customData": {
"fooValue": 88,
"barValue": true,
"bazValue": "string"
},
"attributes": {
"cameraStreamSupportedProtocols": ["hls"],
"cameraStreamNeedAuthToken": false,
"cameraStreamNeedDrmEncryption": false
},
"otherDeviceIds": [{
"deviceId": "789"
}],
"type": "action.devices.types.CAMERA",
"willReportState": false
}]
}
}
Ответ IDENTITY должен быть в порядке, потому что локальная платформа уже должна пройти проверку "verifyId".
ИДЕНТИФИКАЦИЯ объекта запроса (локальный SDK):
{
"requestId": "XXXXXA5FB895B0CD58C022BDC",
"inputs": [{
"intent": "action.devices.IDENTIFY",
"payload": {
"device": {
"udpScanData": {
"data": "A562696463373839656D6F64656C6966616B6563616E64796668775F726576656576742D316666775F7265766776312D62657461686368616E6E656C738101"
}
},
"structureData": {}
}
}],
"devices": [{
"id": "123",
"customData": {
"barValue": true,
"bazValue": "string",
"fooValue": 88
}
}]
}
IDENTIFY объект ответа (локальный SDK):
{
"intent": "action.devices.IDENTIFY",
"requestId": "XXXXX8D0A4A5FB895B0CD58C022BDC",
"payload": {
"device": {
"id": "",
"verificationId": "789"
}
}
}
Но когда я попытался «показать камеру», локальная функция обратного вызова выполнения не сработала. В этой ситуации моя облачная функция firebase по-прежнему получала команду «action.devices.commands.GetCameraStream».
Ниже приведен журнал, когда я говорю «покажи камеру» мою облачную функцию firebase.
{
"inputs": [{
"context": {
"locale_country": "US",
"locale_language": "en"
},
"intent": "action.devices.EXECUTE",
"payload": {
"commands": [{
"devices": [{
"customData": {
"barValue": true,
"bazValue": "string",
"fooValue": 88
},
"id": "123"
}],
"execution": [{
"command": "action.devices.commands.GetCameraStream",
"params": {
"StreamToChromecast": true,
"SupportedStreamProtocols": ["progressive_mp4", "hls", "dash", "smooth_stream"]
}
}]
}]
}
}],
"requestId": "xxxx366353358387"
}