我正在开发与 Google Home 的 Home Control 集成,但在任何测试期间都无法让 Google Home 调用我的对话 URL。
因为无法使用模拟器测试 Home Control 操作,所以我设置了 Google Home 设备、手机上的 Google Home App 和 Actions on Google 项目,所有这些都使用同一个 Google 用户。
我运行gactions test --action-package action.json --package MYPACKAGE
没有问题。
尝试测试项目时,我打开 Google Home 应用,可以在 Home Control > Add Devices 下看到“[test] my app”。这让我想到了 OAuth2 流程。
OAuth2 服务器似乎工作正常,我可以从日志中看到 google 端正在成功检索 access_token。一切都按照文档进行:https ://developers.google.com/actions/identity/oauth2-code-flow 。
我假设下一步将是“Actions on Google”以 SYNC 意图调用我的对话端点 URL。但是,我在服务器上看不到这样的请求,并且 Google Home 应用程序显示一个对话框,上面写着“出了点问题。再试一次”
再试一次没有帮助。
这是我的 action.json 的全部内容:
{
"actions": [{
"description": "testing...",
"name": "actions.devices",
"deviceControl": {},
"fulfillment": { "conversationName": "automation" }
}],
"conversations": {
"automation" : {
"name": "automation",
"url": "https://5ca2a6b9.ngrok.io/googleToTesting"
}
}
}
任何帮助将不胜感激。
编辑 2017 年 8 月 17 日
作为一种解决方法,打开浏览器到该 urlhttps://assistant.google.com/services/auth/handoffs/auth/start?provider=MYPROJECTID_dev&return_url=https://some.useless.url/
并使用浏览器通过 OAuth 流以某种方式使来自 Google Home 应用程序的下一个 OAuth 流初始化成功。
(注意 Google 项目 ID 后的神奇 _dev -suffix。)