问题标签 [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 投票
2 回答
1341 浏览

actions-on-google - 强制用户重新关联他/她的帐户

非常简单的用例解释了我的问题:鉴于我的应用程序要求输入密码以进行某些交互。现在用户给了我三遍错误的密码。然后,我想重置他的访问权限并强制他重新链接他的帐户。我可以在我的内部数据库中很容易地做到这一点,但我需要一种方法来告诉谷歌他当前使用的令牌不再有效。否则,Google 助理拒绝向我发送现在被拒绝的令牌。

2018-03-01 更新:使用新的内置意图/事件,我还尝试actions_intent_SIGN_IN通过属性发送事件followupEvent,但这只会导致谷歌助手使用GOOGLE_ASSISTANT_WELCOME(使用旧的 oauth 令牌..)调用我的 api,而不是重新启动登录工作流程。


原帖

我有一个带有对话框流的谷歌助手应用程序,它强制用户登录才能使用我的应用程序。最初的 oauth 工作流程有效,我确实在所有 api 调用中都获得了令牌。

现在我想强制用户在某些情况下重新运行帐户链接工作流程。为此,我从内部数据库中删除了 oauth 令牌,并将此响应准确发送给用户,app.askForSignIn()如果您使用的是 sdk,这应该等于调用:https ://github.com/actions-on-google/actions -on-google-nodejs/blob/fe29016d472eeb1d080e2b575236076e9341199e/test/dialogflow-app-test.js#L1827

在此处输入图像描述

但这不起作用。助手不会告诉用户重新运行 oauth 链接工作流,也不会删除它存储的 oauth 令牌。它甚至不使用它的刷新令牌来获取新的访问令牌!

此外,模拟器没有使用我的响应的“语音”属性,而是用“对不起,我没有得到任何响应”来回答。- 虽然我的模拟器配置为说德语。

(我还尝试省略几个可能不需要的参数,例如contextOut属性。这导致请求与官方 sdk 源中所述的请求不同,但也没有给出预期的结果。)

0 投票
1 回答
376 浏览

ruby-on-rails - NameError 未初始化常量 ApiAiRuby

部署在 Beanstalk 上的 Ruby on Rails 应用程序给我的 API AI / Dialog Flow Gem 错误:

我的 sidekiq Worker 中有以下代码:

我已经在我的常规控制器中对其进行了测试,但它不起作用。

  1. 我已将其从工人中移出并移至标准控制器。
  2. 它适用于我的本地但不适用于豆茎
  3. 我在 beanstalk 上运行 rails 控制台并尝试了相同的代码,但它给了我错误。我手动安装了gem,gem install 'api-ai-ruby'之后它停止在控制台上给我NameError,但仍然无法在生产环境中工作。
  4. 我检查gem list并在生产中安装了 gem。

我最大的假设是该应用程序无法找到已安装的 gem。

提前感谢您的帮助。

0 投票
1 回答
287 浏览

google-translate - Dialogflow 语言覆盖和谷歌神经机器翻译

谷歌于 2016 年启动了“谷歌神经机器翻译”系统,大幅提升了部分语言的翻译效率。这些语言包括德语、法语、西班牙语、葡萄牙语、中文、日语、土耳其语和韩语;正如他们所说。

但是 Dialogflow 支持所有这些语言,土耳其语除外。这种排除有什么具体原因吗?

0 投票
1 回答
174 浏览

node.js - 如果轮播没有立即跟随选择,则不会触发选择意图

当我们显示轮播时,我在收听用户选择时遇到了问题。我们将 askWithCarousel 与 dialogFlow 一起使用,并使用actions_intent_option事件监听轮播项目的点击。当轮播显示给用户时,助手开始使用麦克风收听用户输入,如果麦克风从用户那里获得随机输入(与轮播项目的任何同义词都不匹配),然后用户点击任何轮播项目或说任何同义词,actions_intent_option事件都没有被解雇。如果此交互之后立即显示轮播,则效果很好。否则,它将轮播标题作为用户输入并解析为不同的意图。

因此无法获取轮播项目的 ID。actions_intent_option即使用户稍后单击轮播项目,有没有办法禁用麦克风或发射。请帮助这个流程。

0 投票
1 回答
1642 浏览

phone-number - 训练对话流以识别电话号码

我想为我的聊天机器人使用对话流提取电话号码。我打算使用@sys.phone-nunmber,但法语版本中有一个奇怪的错误。即使系统正确识别了数字(例如“06 25 48 79 31”),正如我在调用关联的 $value 时在培训系统中看到的那样,我也只得到了前 8 个数字(这里应该是“06 25 48 79")。这很奇怪,因为它不像系统只识别第一个数字。只有值是奇怪的。

然后我尝试创建自己的@phone-number,但系统只识别我曾经向他展示过的电话号码。即使我选择“允许自动扩展”,它也不会一概而论。

有人知道如何解决吗?

0 投票
0 回答
468 浏览

raspberry-pi - 在运行 Google Assistant SDK 的 Raspberry Pi 上测试 Google 应用上的操作

我创建了一个我目前正在测试的 Google 应用程序上的操作。我能够在我的 Pixel 上对其进行测试,但是当我尝试在运行 Google Assistant SDK 的 Raspberry Pi 上启动该应用程序时,它的响应是“此设备不支持(应用程序名称)”。有什么方法可以在我的 Pi 上运行该应用程序?

编辑:这是表面功能的图片。 在此处输入图像描述

0 投票
1 回答
1024 浏览

node.js - 使用 Amazon SES 服务从 node.js 发送电子邮件不起作用

我正在使用 node.js 上的 Google Dialogflow 开发一个聊天机器人项目,并想使用 Amazon SES,但由于某种原因它失败了,我使用的代码如下:

当我查看 Firebase Functions 中的日志时遇到的错误是:dialogflowFirebaseFulfillment { UnknownEndpoint: Inaccessible host: email.us-standard.amazonaws.com'. This service may not be available in theeu-west-1` region。在 Request.ENOTFOUND_ERROR (/user_code/node_modules/aws-sdk/lib/event_listeners.js:456:46)

我正在使用 Firebase 的免费层,这很重要吗?

0 投票
0 回答
211 浏览

angular - Ionic 2 中没有定义 ApiAI?

我在 Ionic 2 的项目中尝试了一个代码,但我有这个错误。

ApiAIPlugin 未定义

我补充说:

在我的代码中。我还补充说:

在我的构造函数中,没有任何改变。我仍然有同样的错误。

我该如何解决?

0 投票
3 回答
6672 浏览

python-3.x - 使用 Python 连接 Dialogflow V2 api

如文档中所述,我已经设置了云帐户并激活了对话流 API。然后我在我的 dialogflow.com 帐户中激活了 dialogflow V2,并在其中设置了相同的 google 项目。

我以 JSON 格式下载了 google 凭据,并相应地设置了它的身份验证路径。

做完这一切之后,当我跑

它给了我错误,

因此,我在存储客户端本身中设置了项目名称。

因此,这解决了代码的问题,但我认为它应该自己检测到项目 ID,而不必提供文档中给出的项目 ID。

毕竟,我尝试运行以下程序来检查连接,

在此之后我收到以下错误,

任何帮助,将不胜感激。

0 投票
1 回答
966 浏览

webhooks - 用于翻译 webhook 的 dialogflow (api.ai) 意图重定向

我正在尝试使用 Translate API webhook 在我的 DialogFlow 代理中启用多语言功能。

  1. 意图是用英文配置的
  2. 当以任何其他语言向机器人输入文本时,它会转到调用 webhook 以翻译此文本的默认后备意图。返回翻译后的输出和用户语言上下文。
  3. 如果我确切地知道接下来要按顺序触发什么意图,我可以为此配置一个后续事件。但是在这里,机器人的输出是不应该打印的翻译文本,但需要与所有英语意图进行匹配,以查看哪个是成功的。然后,匹配意图中定义的输出应再次翻译成用户的语言并作为输出生成。

不知道如何让完成的翻译文本经过所有意图并相应地匹配。请帮忙?