CameraStream 特性不接受 PIN 验证

问题描述

我构建了一个通过后端连接到 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...