我建立了一个摄像头设备,通过后端连接到谷歌智能家居。相机支持两个特征: StartStop和CameraStream。一切都很好。然后,如文档中所述,我添加了由PIN进行的辅助用户验证。
令我惊讶的是,PIN验证流程对于StartStop特性很好,但对于CameraStream特性却不起作用。下面是CameraStream特性的流程:
用户:“好的,谷歌,开始在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"}}]}}谷歌助理:“对不起,目前XY似乎无法使用该流”。
相同的序列完全适用于特征StartStop:助手请求PIN,然后执行开始/停止操作。当我从CameraStream特征中删除PIN验证时,它也可以正常工作。docs索赔
所有设备特征都支持辅助用户验证。
但在我看来,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接收器。
发布于 2022-04-05 16:24:07
CameraStream特性的辅助用户验证已经启动并正在运行。目前,与谷歌助理兼容的所有设备和特性都可以进行辅助用户验证。有关如何启用辅助用户验证的更多信息,请参见这里。
https://stackoverflow.com/questions/68121714
复制相似问题