问题标签 [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.

0 投票
1 回答
71 浏览

actions-on-google - Google 能否提供声纹以识别用户与 Google Home 说话?

对于我的对话操作,希望在用户使用我的服务之前对其进行身份验证,以确保他是真正的用户而不是其他任何人。Google 能否提供声纹来识别与 Google Home 说话的人?

我相信谷歌一定是在录音。因此,如果它共享,它将对身份验证非常有帮助。

0 投票
1 回答
138 浏览

actions-on-google - 如何回复 Google Assistant 上的“帮助”?

我从 Google 团队得到以下反馈:

当用户对您的代理说“帮助”时,它实际上并没有为用户可以说什么或要求什么提供任何指导,它只是说“当然,助手是来帮忙的”

我的 webhook 是在 Spring Boot 中实现的。知道我的网络服务如何响应帮助请求吗?

0 投票
2 回答
900 浏览

webhooks - 使用 Google Home 与网络服务器通信

我有一个用 php 开发的社交网站,它托管在服务器上。在这里,人们可以通过消息相互交谈。

我想通过 google home 向其他用户发送和接收消息。它不像聊天机器人。但是在这里,第一个用户将从 google home 发送消息到网站,然后第二个用户将从网站发送消息给第一个将通过 google home 接收的用户。

这可以实现吗?我是否必须开发某种移动应用程序,以便用户必须将消息发送到移动应用程序,然后应用程序将数据发送到服务器。

还是我必须使用 api.ai 中提供的 webhook?

任何帮助将不胜感激。

0 投票
1 回答
1564 浏览

actions-on-google - Google Actions 帐户关联流程

我已经为我的操作编写了一个授权流程,以使用“隐式流程”进行帐户链接。我一直在使用网络模拟器对其进行测试。当我尝试在网络模拟器中运行该操作时,它会告诉我链接我的帐户,并提供一个 URL:

https://assistant.google.com/services/auth/handoffs/auth/start?provider=hello_dev&return_url=https://www.google.com/

我运行该 URL,这就是发生的情况:

  • 我的 Java servlet 收到来自 google 的身份验证请求。它包含记录的内容、GOOGLE_CLIENT_ID、REDIRECT_URI、STATE 和“response_type=token”
  • 我从使用 UserServiceFactory.getUserService().getCurrentUser().getUserId() 登录的 Google ID 创建访问令牌
  • 我制作了一个指向重定向 uri 的 URL,其中包含我的 ACCESS_TOKEN、token_type=bearer 和 state= 我最初收到的状态字符串
  • 我为包含该链接的用户创建了一个网页,以便他们可以单击它并执行该链接并链接我的帐户。

效果很好,响应是一个空白页面,其 URL 显示:“ https://www.google.com/?result_code=SUCCESS&result_message=Accounts+now+linked ”。

但是,我想要一个允许用户确保他们已登录并登录到他们想要链接的 Google 帐户的流程

因此,我还提供了一个链接,如果他们愿意,可以将其注销。该链接是使用 userService.createLogoutURL(thisUrl) 创建的

如果他们这样做,我会向他们提供一个登录链接,使用 userService.createLoginURL(thisUrl) 创建

一旦他们使用不同的 Google ID 登录,他们就会回到原来的页面,允许他们再次注销或单击“链接帐户”链接。

情况是,如果他们现在单击“链接帐户”链接,在他们注销之前会成功运行的完全相同的链接(除了不同的 ACCESS_TOKEN 值)并使用不同的帐户重新登录,响应为空白网页的网址显示:“ https://www.google.com/?result_code=FAILURE&result_message=Account+linking+failed

有两点需要注意:

  • 如果他们注销并使用同一帐户重新登录,则“链接帐户”URL 可以正常工作
  • 如果他们在开始该过程时根本没有登录,然后登录然后使用“链接帐户”链接它工作正常

因此,唯一失败的情况是他们登录、注销、使用其他帐户登录,然后单击以链接帐户。那是它失败的时候。

帐户无关紧要,多个不同的帐户都可以使用,只要浏览器登录到第一个帐户并且在流程中不更改即可。

老实说,我无法想象这是如何发生的。

如果我在 Google Home 应用程序中执行此操作,情况会变得更糟,因为它会返回一些“格式错误的请求错误”页面并且基本上永久停止工作。停止/开始动作没有帮助。停止/启动 Web 服务没有帮助。重新启动 Android 设备没有帮助。Google Home 应用中的关联帐号已永久损坏。我能够让它再次工作的唯一方法是在我的 Android 设备上的 Chrome 浏览器中使用帐户链接 URL(从网络模拟器获得),这似乎“重置”了所有内容。

0 投票
1 回答
45 浏览

actions-on-google - 更改提示服务器端

我开始将自己投入到 aog 中。我现在只使用 SDK 和 WebSimulator。我想要实现的是更改我之前设置的提示,例如因为我有新信息可用。我尝试了以下失败:

仅显示第一个提示,然后(仅在用户响应后)显示第二个提示。

是否有可能改变提示服务器端?如何做呢?或者是否有解决方法?

0 投票
1 回答
766 浏览

dialogflow-es - Webhook 响应不起作用 api.ai:无法从 http_response Actions On Google 解析 SDKResponse

我正在使用 api.ai webhook 来执行 Google 上的操作。我正在遵循此处记录的请求和响应格式

我从 webhook 发回的响应是

当我在 Google Home 的 Web 模拟器上对此进行测试时,它显示“您的代理现在没有响应。请稍后再试”,并带有以下响应 JSON

响应中的调试信息是

"无法从 http_response 解析 SDKResponse: 'HTTP/1.1 200 OK\r\nContent-Type: application/json;charset=UTF-8\r\nContent-Length: 218\r\nConnection: keep-alive\r\nDate : Sun, 08 Jan 2017 21:47:00 GMT\r\nServer: nginx/1.11.2\r\nAccess-Control-Allow-Credentials: true\r\nAssistant-Interaction-Error-Code: 1\r\nAssistant -Interaction-Error-Message: Empty speech response\r\nCache-control: no-cache=\"set-cookie\"\r\nSet-Cookie: AWSELB=9D5B4D210CCFFAF1BE1E0CD7C7E6FCBD7B46140CAA45DBF2953C1CA6A2C5B5AD15740DAC3D9FC21AE7E6356E101785BA33F8274D819A39085F4BDBBE52D3F44CD1BB461230;PATH=/\r\nX-Cache: Miss从云端\r\n通过:1.1 51c76241371dfc20d25094a51b4759eb.cloudfront.net (CloudFront)\r\nX-Amz-Cf-Id: bP2EaYL-00IkMABSCWhwbaDr5GU7sIgC02OB-31LGojecexWQayetQ==\r\n\r\n{\"消息"空语音响应\",\"apiResponse\":{\"id\":\"ac3551e9-1f71-4f38-8ef7-efa8acff78aa\",\"timestamp\":\"2017-01-08T21:47:00.191 Z\",\"result\":{},\"status\":{\"code\":200,\"errorType\":\"success\"},\"sessionId\":\"1483912013331 \"}}'"

我不明白这里有什么问题。

更新:

我已将语音消息转换为 ASCII 字符,但现在 Home 正在响应以下消息。

而不是我在附加到语音标签的响应中发送的内容。模拟器中显示的 JSON 也不是我从 webhook 返回的内容。

0 投票
0 回答
145 浏览

actions-on-google - ApiAssistant 上的 getUser() 方法

我正在尝试User_id从请求中获取。目前我只是API.AI在实际接线之前用来建立技能Google Home API。当我使用以下代码段时,我得到

“TypeError:无法在 Assistant.ApiAiAssistant.getUser 处读取 null 的属性‘数据’”

直接测试时我只是无法使用该getUser()方法API.AI吗?我是否需要完全部署和测试Home Simulator才能在getUser()不导致错误的情况下进行调用?

谢谢!

0 投票
1 回答
182 浏览

actions-on-google - Google Home 错误地发音“resume”这个词

我正在开发一个新的动作,发送“恢复”这个词(如暂停/播放/恢复)来说话。发生这种情况时,Google Home 会将单词发音为“resume”。

我知道 SSML 支持标签来处理发音,但它看起来不像是目前在 Google Home 中实现的。

在最坏的情况下,我可以将文本破解为“重新缩放”,但我宁愿找到一个更优雅的解决方案。想法?

0 投票
1 回答
728 浏览

google-oauth - OAuth 与 Google 上的操作相关联

您好,我正在尝试为 Google 上的操作设置帐户链接。在模拟器中测试时,响应中没有 debugInfo.sharedDebugInfo 信息。我的问题是我缺少什么来填充它。我将欢迎意图设置为通过 api.ai 控制台以及 oauth 链接的所有其他必要字段进行登录。

api.ai 控制台上的设置视图(需要登录)

api.ai 控制台上的设置视图(oauth 形式)

0 投票
1 回答
231 浏览

actions-on-google - 什么是 Google Action 包中的“隐式触发器”?

我的 Google Action 被拒绝了。原因之一是:

您的代理的操作包中有太多隐式触发器。请将您的操作包中不包含您的调用名称的查询模式的数量限制为少于 10 个。

我的userSays对象包含大约 30 个短语,因为我使用了 API.AI 的训练系统,以便我的助手能够理解来自用户的任何类型的输入并提取所需的参数。这就是谷歌所指的。难道我做错了什么?