问题描述
我构建了一个通过后端连接到 Google 智能家居的相机设备。相机支持两个特征:StartStop 和CameraStream。一切正常。然后我通过 PIN 添加了二级用户验证,如 doc 中所述。
令我惊讶的是,PIN 验证流程适用于 StartStop 特征,但不适用于 CameraStream 特征。这是 CameraStream 特性的流程:
用户:“Ok Google,开始在 Chromcast 上流式传输我的相机。”
在后台服务器请求:
{"inputs":[{"context":{"locale_country":"US","locale_language":"en"},"intent":"action.devices.EXECUTE","payload":{"commands":[{"devices":[{"id":"5Nj7kxkKtKvafh9vIIrh"}],"execution":[{"command":"action.devices.commands.GetCameraStream","params":{"Streamtochromecast":true,"SupportedStreamProtocols":["progressive_mp4","hls","dash","smooth_stream"]}}]}]}}],"requestId":"3521441653474018354"}
来自后台服务器的响应:
{"requestId":"3521441653474018354","payload":{"commands":[{"ids":["5Nj7kxkKtKvafh9vIIrh"],"status":"ERROR","errorCode":"challengeNeeded","challengeNeeded":{"type":"pinNeeded"}}]}}
Google 助理:“抱歉,目前 XY 似乎无法使用该流”。
同样的顺序非常适合 trait StartStop:Assistant 要求输入 PIN,然后执行启动/停止操作。当我从 CameraStream trait 中删除 PIN 验证时,它也能正常工作。 docs claims
但在我看来,PIN 验证不适用于 CameraStream 特性。有任何想法吗?谢谢。
编辑:我正在添加同步响应:
{"requestId":"418316574813841981","payload":{"agentUserId":"X0ylRhM6yrOG1rVJ9RoPEz12FOR2","devices":[{"id":"5Nj7kxkKtKvafh9vIIrh","type":"action.devices.types.CAMERA","traits":["action.devices.traits.StartStop","action.devices.traits.CameraStream"],"name":{"name":"Camera1"},"willReportState":false,"attributes":{"pausable":false,"cameraStreamSupportedProtocols":["hls"],"cameraStreamNeedAuthToken":false},"deviceInfo":{"manufacturer":"ALIGATOR","model":"S4090","hwVersion":"8.1.0","swVersion":"2.4.3"}}]}}
我使用通用 Cast 接收器。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)