[译] 如何将 Stackdriver 连接到智能家居服务器以进行错误记录
使用[Google Cloud 发布/订阅](
),你可以静任务配置为在某些事件上运行,例如,当新日志出现在 Stackdriver 中时,通过添加过滤器你可以限制触发事件的日志类型。你也可以配置服务器端点来订阅这些事件。
要开始导出 SYNC 错误,请输入过滤器 “text:SYNC”,点击 CREATE EXPORT 按钮。在这里,你可以创建一个连接到 Google Clou
d 发布/订阅的主题接收器。这将是你能够在每次出现日志条目时处理事件:
在抽屉导航中,打开发布/订阅概述,创建一个新的订阅:
这里,你可以新建一个订阅。对于交付类型,输入用于接收订阅的的 URL。为了进行验证域名验证,你必须拥有自己的服务器:
在你的服务器上,为了接受端点,你需要添加一个处理器。在这个示例中,它是 /alerts/stackdriver。这是你服务器上的一个钩子。Cloud 发布/订阅会向 URL 发送一个在请求体重包含日志数据的 POST 请求。下面的代码片段显示了使用 Node.js 的实现:
app.post('/alerts/stackdriver', (req, res) => {console.log('post stackdriver called', req.body);res.status(204).send('success');if (!!req.body.message && !!req.body.message.data) {const data = Buffer.from(req.body.message.data, 'base64').toString('utf8');console.log('data: ', data);// optionally use regexp here to find request id and failure reason}});
我们现在可以测试这个发布/订阅主题是否有效。在你的智能家居集成中,设置你的 SYNC 回复返回一个无效的设备类型,例如 LART。以下代码片段是这个响应示例:
const app = smarthome();app.onSync(body => {return {requestId: body.requestId,payload: {agentUserId: '123',devices: [{type: 'action.devices.types.LART'// More metadata}]}}})
当你尝试连接你的账户时,你会在 Google Assistant 设置中看到一个错误,然后在 StackDriver 中看到与之对应的错误:
在你的服务器中,你也会看到此错误正在被记录。当你遇到此错误时,你可以查看已发送的 SYNC,并确定该错误来自设备类型的错误。你可以通过修复返回此设备信息的字符串来修复 webhook 中的错误。你可以在以下代码片段中看到更正的内容:
const app = smarthome();app.onSync(body => {return {requestId: body.requestId,payload: {agentUserId: '123',devices: [{type: 'action.devices.types.LIGHT'// More metadata}]}}})一旦你开始获取这些错误,你可以做许多事情来提高你的智能家居集成的可靠性,例如添加电子邮件警告或创建常见问题的仪表盘。通过及时发现这些问题并获取正在发生的事件的详细信息,你可以更快、更有信心地进行更正。
如果发现译文存在错误或其他需要改进的地方,欢迎到 [掘金翻译计划](
) 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。
评论