问题标签 [actions-on-google]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actions-on-google - Google Actions SDK 未传递参数
我一直无法让 node.js 的 google-actions sdk 传递参数。我安装了https://github.com/actions-on-google/actionssdk-eliza-nodejs
示例项目,发现参数也不适用于该项目。有什么见解吗?
在网络模拟器中,我输入了“我感到难过”
这是我得到的请求
text_value should = "sad",而不是基于 eliza.json 的 "我感到难过",它有:
actions-on-google - 我可以从 Actions On Google 获取请求者的当地时间(或偏移量)吗?
我正在使用 API.ai 在 Google API 上的操作上进行构建。为了完成我的一项操作,我需要知道用户的位置和当地时间。
我已经能够成功地请求并接收回用户的位置。
但是,我看不到任何获取用户本地时间或时区偏移的方法。有没有办法做到这一点?
(我意识到我可以使用该位置来找出偏移量,但这需要另一个 API 调用或使用另一个库,我宁愿避免这样做。)
提前致谢。
- 更新 -
根据下面 Leon 的回答,截至 2017 年 1 月 18 日,API 目前不提供此信息。为了获得所需的信息,我请求了用户精确位置的许可,该位置返回 lat 和 lng。然后我使用GeoNames 时区 API 来获取时区偏移量。
javascript - 如何在 Heroku 上部署 Actions-On-Google?
我正在尝试使用我的 Google Home,并且阅读了很多关于 google 上的操作的信息,并且能够将其部署到 Google Cloud Services,但是如果它在 Heroku 上,Google Home 如何知道我的应用程序在哪里?
它与creds.data
和有关Actions-On-Google-nodejs SDK
吗?
firebase-authentication - 使用带有 Google Home 的 firebaseui-web 出现“无法解析上下文”错误
我正在尝试为我的 Google Home 操作设置帐户链接。为了在用户登录进行链接时对用户进行身份验证,我将 Firebase Auth 和FirebaseUI-web与 Google 登录提供程序一起使用。页面和代码流在使用 Google OAUth2 Playground 和我使用 Google Home emulator 测试帐户链接时进行验证,这两者我都使用桌面 Chrome 进行了测试。但是当我使用Google Home 设备和应用程序进行测试时,它会启动流程并显示登录按钮,让我选择一个帐户,重定向回我的页面,然后生成错误:
当我将 Chrome 调试控制台连接到它时,控制台中出现以下错误:
如果我查看网络日志,最后一个 xhr POST 返回 400 错误。(一些信息被编辑了,因为我不知道正在发送的数据的敏感性。)
要求:
请求标头:
身体:
HTTP 响应代码为 400,正文为:
有什么办法可以让它正常工作吗?是什么导致了问题?
更新以更好地解释用户流程
重要的是要了解 FirebaseUI 正在用于对登录到我的OAuth2 服务的用户进行身份验证。不获取 OAuth 信息直接提供给 Home。
所以流程是:
- 用户使用诸如“Hey Google,通过语音通话支付账单”之类的触发器在 Home 上启动操作
- 由于用户尚未将其 Home 连接到“语音支付”服务,Home 会提示用户前往 Google Home 应用并关联两个帐户。
- 那张卡是这样出现的。
- 用户点击卡片,Chrome 自定义选项卡会打开我的登录页面,让他们登录我的服务。这个页面是用 FirebaseUI 实现的,并且有一个按钮让他们使用他们的 Google 帐户登录我的服务。
- 如有必要,他们会选择一个帐户,登录,然后被重定向回页面以继续。正是在这一点上出现了错误。
- 但是,如果它正常工作,该页面将向我的后端服务发送登录信息。这将结束 FirebaseUI 的参与。此时,后端服务将联系 Firebase 身份验证服务以获取帐户信息,为该帐户生成授权代码,并让页面继续 OAuth2 流程并将我的服务中的授权代码提供给 Google。
请注意,虽然 (4) 发生在 Chrome 自定义选项卡中,但我也告诉它在 Chrome 本身中打开(通过选项卡中的菜单项),并且它继续显示相同的问题。
我不清楚步骤(5)中到底发生了什么。有一些对身份工具包服务的调用在指示调用失败之前似乎可以正常工作。
actions-on-google - 您如何在 Google Actions SDK 中获得正确类型的参数?
Google 的 action api 似乎在我的意图中找到了正确的模式并绑定到正确的类型,但不返回解析的类型数据。例如,如果我在我的 actions.json 文件中定义了下面的意图:
然后我在模拟器中输入“在我的行动中说明天”,我收到以下参数:
请注意,动作 SDK 正确地将“明天”识别为类型“ $SchemaOrg_Date
”并将其绑定到 mydate 变量,但是,它没有按照文档中的规定在返回 json 中返回“date_value”元素。我本来希望“date_value”元素包含一个解析的日期结构(每个文档)。
数字也是如此,尽管它们的行为略有不同。例如,如果我使用短语“在我的行动中说五十”,我将收到以下参数:
请注意,$SchemaOrg_Number
已识别并且“五十”被正确解析为“50”,但 int_value 并未根据文档填充到参数 json 中。
谷歌正在积极解析这些复杂类型,并记录了它们应该被返回,所以我不想自己去解析它们。关于这是否会很快得到解决的任何想法?
google-drive-api - 同时使用 Actions on Google 和 Google Drive?
我是一名业余爱好者学生开发人员,正在使用 Google 上的 Actions 来在 Google Home 上创建一个简单的“文字冒险”游戏。由于 Google Home 将与玩家对话,而不是与阅读文本的玩家对话,我希望这将创造一种类似于“龙与地下城”角色扮演游戏的体验,让计算机充当“地下城主”。借助 API.AI 和 Google 上的 Actions 提供的自然语言帮助,这似乎很合适,因为玩家可以“自然地”做出回应。这是一个亚马逊 Alexa 技能的示例,它基本上可以满足我的需求。
但是,每次我启动游戏时,它总是一个新游戏。我想将用户先前状态的存档游戏存储在用户 Google 云端硬盘上托管的 JSON 文件中——因为我只是为了好玩而做这件事的学生,所以我实际上没有官方网站或任何其他东西我运行应用程序的免费 Heroku 服务器,让我几乎不可能存储保存。
我已经浏览了Node.js 的 Google Drive REST 快速入门,并且我已经在控制台中很好地工作了。唯一的问题是在该快速入门中,用户必须单击链接以授权应用程序读取其 Google Drive 帐户中的内容,我不确定如何能够“单击链接”并回馈通过 Google Home 上的语音访问令牌。
有没有办法通过 Google Drive 做到这一点?还是有更好的方法在会话之间提供持久数据?我通常不从事网络开发工作,因此将不胜感激。
actions-on-google - 确认用户听过课程
我正在开发一个为用户提供一组音频课程的应用程序。用户听完课程后,我想将其标记为已完成。挑战在于,一旦用户听完我发回的 mp3 文件,我就不会收到任何通知。我看到的选项是明确要求用户在课后说“完成”,以便我可以获得用户完成的信号。但是感觉很别扭。
我正在使用动作 SDK。有没有更好的处理方法?也许 API 会被扩展来提供这样的信号?
actions-on-google - 通过 API.ai 进行长时间运行的查询的进度报告?
我有一个通过 API.ai 运行的 Google 助理代理,并带有到我的 nodejs 服务的 webhook。超时为 5 秒,但我的查询需要更长的时间。有没有办法在不挂断电话的情况下说“请稍等,我帮你找到”?
actions-on-google - 当 Google 助理通过 webhook 响应时,如何允许用户取消?
我有一个与Silly Name Maker webhook 示例非常相似的 Google Action(使用 API.AI)。
但是,我的应用因以下原因被拒绝:
您的一项或多项操作不允许用户轻松退出对话。如果用户要求取消或退出,请确保您不要继续与他们交谈。
当您在麦克风打开时说停止、取消或退出时,它会响应“当然,已取消”,然后关闭麦克风并退出。但是,当您在代理讲话时尝试使用这些命令时,它会关闭麦克风并退出,但不会按预期说“当然,已取消”。
我的 Action 是这样设置的:
- 欢迎意图:要求用户提供两个参数
- Webhook 响应:一旦提供了所有参数,webhook(结构与此 Silly Name Maker webhook 完全相同)提供一个句子,然后立即结束对话。
在欢迎意图期间,如果用户在代理说话时说“Okay Google,取消”,它会响应“当然,取消”并退出。
但是,当代理说出 webhook 响应(来自assistant.tell()
)时,如果您说“Okay Google,cancel”,它将立即退出而不说“Sure,cancel”。
如何让 Google 助理说“确定,已取消”?我是否必须在 API.AI 中设置“取消”意图,并在我的 webhook 上使用 actionMap 来处理用户的请求?