问题标签 [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.
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 源中所述的请求不同,但也没有给出预期的结果。)
ruby-on-rails - NameError 未初始化常量 ApiAiRuby
部署在 Beanstalk 上的 Ruby on Rails 应用程序给我的 API AI / Dialog Flow Gem 错误:
我的 sidekiq Worker 中有以下代码:
我已经在我的常规控制器中对其进行了测试,但它不起作用。
- 我已将其从工人中移出并移至标准控制器。
- 它适用于我的本地但不适用于豆茎
- 我在 beanstalk 上运行 rails 控制台并尝试了相同的代码,但它给了我错误。我手动安装了gem,
gem install 'api-ai-ruby'
之后它停止在控制台上给我NameError,但仍然无法在生产环境中工作。 - 我检查
gem list
并在生产中安装了 gem。
我最大的假设是该应用程序无法找到已安装的 gem。
提前感谢您的帮助。
google-translate - Dialogflow 语言覆盖和谷歌神经机器翻译
谷歌于 2016 年启动了“谷歌神经机器翻译”系统,大幅提升了部分语言的翻译效率。这些语言包括德语、法语、西班牙语、葡萄牙语、中文、日语、土耳其语和韩语;正如他们所说。
但是 Dialogflow 支持所有这些语言,土耳其语除外。这种排除有什么具体原因吗?
node.js - 如果轮播没有立即跟随选择,则不会触发选择意图
当我们显示轮播时,我在收听用户选择时遇到了问题。我们将 askWithCarousel 与 dialogFlow 一起使用,并使用actions_intent_option
事件监听轮播项目的点击。当轮播显示给用户时,助手开始使用麦克风收听用户输入,如果麦克风从用户那里获得随机输入(与轮播项目的任何同义词都不匹配),然后用户点击任何轮播项目或说任何同义词,actions_intent_option
事件都没有被解雇。如果此交互之后立即显示轮播,则效果很好。否则,它将轮播标题作为用户输入并解析为不同的意图。
因此无法获取轮播项目的 ID。actions_intent_option
即使用户稍后单击轮播项目,有没有办法禁用麦克风或发射。请帮助这个流程。
phone-number - 训练对话流以识别电话号码
我想为我的聊天机器人使用对话流提取电话号码。我打算使用@sys.phone-nunmber
,但法语版本中有一个奇怪的错误。即使系统正确识别了数字(例如“06 25 48 79 31”),正如我在调用关联的 $value 时在培训系统中看到的那样,我也只得到了前 8 个数字(这里应该是“06 25 48 79")。这很奇怪,因为它不像系统只识别第一个数字。只有值是奇怪的。
然后我尝试创建自己的@phone-number,但系统只识别我曾经向他展示过的电话号码。即使我选择“允许自动扩展”,它也不会一概而论。
有人知道如何解决吗?
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 the
eu-west-1` region。在 Request.ENOTFOUND_ERROR (/user_code/node_modules/aws-sdk/lib/event_listeners.js:456:46)
我正在使用 Firebase 的免费层,这很重要吗?
angular - Ionic 2 中没有定义 ApiAI?
我在 Ionic 2 的项目中尝试了一个代码,但我有这个错误。
ApiAIPlugin 未定义
我补充说:
在我的代码中。我还补充说:
在我的构造函数中,没有任何改变。我仍然有同样的错误。
我该如何解决?
python-3.x - 使用 Python 连接 Dialogflow V2 api
如文档中所述,我已经设置了云帐户并激活了对话流 API。然后我在我的 dialogflow.com 帐户中激活了 dialogflow V2,并在其中设置了相同的 google 项目。
我以 JSON 格式下载了 google 凭据,并相应地设置了它的身份验证路径。
做完这一切之后,当我跑
它给了我错误,
因此,我在存储客户端本身中设置了项目名称。
因此,这解决了代码的问题,但我认为它应该自己检测到项目 ID,而不必提供文档中给出的项目 ID。
毕竟,我尝试运行以下程序来检查连接,
在此之后我收到以下错误,
任何帮助,将不胜感激。
webhooks - 用于翻译 webhook 的 dialogflow (api.ai) 意图重定向
我正在尝试使用 Translate API webhook 在我的 DialogFlow 代理中启用多语言功能。
- 意图是用英文配置的
- 当以任何其他语言向机器人输入文本时,它会转到调用 webhook 以翻译此文本的默认后备意图。返回翻译后的输出和用户语言上下文。
- 如果我确切地知道接下来要按顺序触发什么意图,我可以为此配置一个后续事件。但是在这里,机器人的输出是不应该打印的翻译文本,但需要与所有英语意图进行匹配,以查看哪个是成功的。然后,匹配意图中定义的输出应再次翻译成用户的语言并作为输出生成。
不知道如何让完成的翻译文本经过所有意图并相应地匹配。请帮忙?