问题标签 [api-ai]

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 回答
1159 浏览

actions-on-google - 请求之间未存储 Google 助理位置权限

使用 API.AI 和 Google 助理,我请求获取用户姓名和位置的权限。目的是我将能够请求一次许可,随后对我的 Action 的请求将不需要再次请求(因为每次用户与我的 Action 交谈时,这都会导致对话非常生硬)。

我发现的是,我只获取与意图相关actions_intent_PERMISSION的信息 - 即使我已经授予许可,该信息也不会在其他意图实现中发送。(在下面的示例代码中 - 它最终重新请求所有其他意图的权限。)

我也没有看到在调用我的操作之间维护此权限。因此,每次触发动作时,都会(再次)询问他们是否授予动作权限。

这两种行为似乎都很奇怪。一般来说,应用程序模型不需要我在应用程序调用之间重新授权对资源的权限,甚至在应用程序“运行”时也不需要。甚至网页在会话期间也会保留授权。我做错了什么,还是这是预期的行为?

正在执行的代码(这在 Google Cloud Functions 中运行,并且有一些额外的结构通过 Promise 进行这些调用 - 这只是代码的相关部分)。res.send(200)只是向 API.AI 表明它应该使用那里定义的响应,并且可以正常工作。return Promise.resolve(null);只是确保不执行其他回退/错误条件。

actions_intent_PERMISSION处理请求的 API.AI Intent :

定位结果

另一个应具有用户/位置有效负载的 Intent,但从未使用该信息调用

简单测试

模拟器的屏幕截图显示它总是请求许可,除非它特别被授予:

模拟器屏幕截图

初始连接时发送的 JSON:

在请求许可后发送的 JSON 并且我已授予它。正如预期originalRequest.data.user的那样,有了名称,originalRequest.data.device现在有了位置。

JSON 在我授予权限后发送(上图),然后发出“简单测试”短语。请注意,用户和设备字段缺少授予权限的信息,但这是正确的意图。

在两个会话之间执行此操作会产生相同的结果。

0 投票
1 回答
335 浏览

actions-on-google - askForPermission 不适用于 Google 模拟器上的操作

我正在尝试获取用户的当前位置,并且正在使用 Api.AI 网络工具来创建我的操作/意图。

部署使用 -

API.AI 动作 - 在此处输入图像描述

模拟器 - 在此处输入图像描述

完整链接index.js_

但是当我的动作被触发时,我会收到这条消息 -

我们不能要求模拟的许可吗?另外如何在真实设备上测试我的应用程序?

编辑: 权限功能陷入循环-

在此处输入图像描述

0 投票
1 回答
61 浏览

actions-on-google - 使用 Google 上的操作从 ID 令牌捕获信息?

我看到我们可以使用与 Google 上的 Actions 关联的帐户来使用 Google 登录 ID 令牌自动注册用户,该令牌提供电子邮件和姓名等信息。

我们是否可以将这些数据导入我们自己的数据库,以便我们以后可以通过电子邮件联系用户,让他们了解更新和新功能?

0 投票
0 回答
391 浏览

node.js - 来自 api.ai https webhook 的状态 206

我目前有一个在 EC2 上托管的用于 api.ai 的有效 ExpressJS webhook。

但是,当我在 https webhook 中使用相同的 GET/POST 处理程序时,我的后端会失败。特别是,我没有看到 POST 处理程序的任何 (console.log) 输出,并且我的 api.ai 操作返回 206 错误。

我已经验证可以从浏览器访问 https webhook 服务器。TIA 的任何建议

api.ai JSON 状态如下:

POST 处理程序如下。

0 投票
4 回答
861 浏览

node.js - 用户选择的 Webhook 生成的列表获取选项

我是 API.AI 和 Google Actions 的新手。我有一个由履行生成的项目列表。我想获取用户选择的选项。我已经尝试阅读文档,但似乎无法理解。

https://developers.google.com/actions/assistant/responses#handling_a_selected_item

我也尝试设置后续意图,但它不会起作用。它总是最终给出后备响应。

我正在尝试搜索产品或其他东西,结果使用列表选择器格式显示。我想获取我选择的选项。这是一个 search_product 意图,我有一个后续意图 choose_product

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
219 浏览

python - Api.ai 请求正文不包含可以将 access_token 发送到履行 webhook 的 originalRequest 对象

Api.ai 请求正文不包含 originalRequest 对象,从该对象access_token可以将其发送到履行 webhook。谁能告诉我为什么我没有看到 originalRequest 正文?

我已经成功完成了我的应用程序的帐户链接,实际上,操作 Web 模拟器确实access_token在调试窗口中显示了预期,但Api.ai json 请求正文没有它。

我正在使用 python 来实现逻辑。非常感谢您对此的任何帮助。

如果有一些关于如何从 api.ai json 请求中获取 access_token 以便它可以用于 webhook 实现逻辑的文档或示例应用程序(特别是在 python 中),这将非常有帮助。在我的具体情况下,我需要执行以下操作:

  1. 从api.aiaccess_token请求中获取(在阅读了一堆文章/文档后,似乎它只会在 originalRequest json 对象中看到,而我在请求中根本没有看到)
  2. access_token在我的 API 调用的不记名标头中使用

仅供参考,我正在操作 Web 模拟器上对此进行测试,并且 Web 模拟器中的调试窗口显示访问令牌,它告诉我帐户链接成功。我只需要知道如何从 api.ai 请求中获取那个 access_token。

0 投票
1 回答
303 浏览

actions-on-google - 我如何从 ApiAiApp 或 ActionsSdkApp 获取 conversationId?

我尝试在 ApiAiApp 和 ActionsSdkApp 的文档中查找,它们没有获取 conversationId 的属性或功能。我可以从 JSON 请求中看到这一点。我是否必须自己解析请求才能获取会话 ID?conversationId 应该是常用的。

0 投票
1 回答
580 浏览

dialogflow-es - Api.ai - 如何使用“与 [应用程序名称] 交谈”以外的命令启动 Google 助理(Actions on Google)

我正在与 Api.ai 合作在 Google 助手上制作应用程序。一切都按预期工作,除了我无法让助手使用除"Talk to [app name]".

起初,我根本不认为这是可能的,但我看到了它的 Google I/O 演示。它看起来像这样:

在此处输入图像描述

所以看起来他们正在使用"I'd like delivery from Panera". 所以我不知道演示是否是假的,但他们不必以Talk to Panera.

我做了一些研究,发现这个选项不一定在 Api.ai 中,但它可能在“Actions on Google”中。

我正在设置您在下面看到的这些选项,但它仍然不起作用。

在此处输入图像描述


这是 Api.ai 或“Actions on Google”的错误还是我做错了什么?

当我尝试“使用 [我的应用名称] 订购”时,我收到此错误。

“抱歉,此动作在模拟中不可用”

如果我在我的 Pixel 手机上尝试“与 [我的应用名称] 交谈”,测试应用就会打开,但如果我在我的 Pixel 上说“从 [我的应用名称] 订购”,它只会找到搜索结果。所以我得出的结论是它不起作用。

0 投票
1 回答
68 浏览

actions-on-google - 可以使用 SVG 图像吗?

出于某种原因,我无法让 SVG 图像显示在我的手机上,只能显示在模拟器上。这个错误/功能是否正在进行/预期?我在指南中找不到任何有关文件格式的文档。

不知道这是否会影响它,但我正在使用 API.AI 的 Google 选项卡上的操作来创建轮播。

提前致谢!

0 投票
2 回答
191 浏览

actions-on-google - 如何在谷歌网络模拟器的操作中更改语言?

我在 API.AI 中用法语创建了一个代理。之后,当我进入网络模拟器时,其他语言显示为灰色。 在此处输入图像描述

甚至我用法语输入的东西都是用英语发音的。有人知道这是什么原因吗?