问题标签 [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 回答
115 浏览

firebase - 使用 api.ai 将 contextOut 数组附加到 firebase webhook 响应

我正在尝试将contextOut数组添加到我的 firebase webhook 为 api.ai 给出的响应中,如此所述。

我简化的firebase代码如下:

在创建助手实例之前以及创建实例之后,res.contextOut我已经尝试过。我在 api.ai 控制台的 json 响应中看不到变量。res.dataassistant.contextOutassistant.data

谁能告诉我我错过了什么?谢谢!

0 投票
1 回答
231 浏览

node.js - 将谷歌助手与其他安卓应用集成

是否可以打开一个 android 应用程序并执行某个任务作为对谷歌助手聊天的响应。如何为此在 node.js 中编写谷歌助手应用程序?

0 投票
3 回答
687 浏览

aws-lambda - 如何将单个 AWS Lambda 同时用于 Alexa Skills Kit 和 API.AI?

过去,我设置了两个用 Java 编写的独立 AWS lambda。一种用于 Alexa,一种用于 Api.ai。他们只是将“Hello world”返回给每个助手 api。因此,尽管它们很简单,但它们可以工作。随着我开始为每个代码编写越来越多的代码,我开始看到我的 java 代码有多么相似,我只是通过拥有两个单独的 lambda 来重复自己。

快进到今天。

我现在正在做的是拥有一个可以处理来自 Alexa 和 Api.ai 的输入的单个 AWS lambda,遇到了一些麻烦。目前,我的想法是,当 lambda 运行时,会有一个简单的 if 语句,如下所示:

以下不是真正的代码,只是我认为我可以做的

现在问题是我需要以某种方式判断该函数是由 alexa 还是 api.ai 调用的。

这是我现在的实际java:

然后我从 Alexa 和 Api.ai 运行 lambda,看看在 java 中会生成什么对象输入。

API.ai

亚历克斯


所以现在我有我的 Alexa 和 Api.ai 输出,它们是不同的。所以这很好。我将能够分辨出哪个是哪个。但我被困住了。我不确定是否应该尝试创建一个 AlexaInput 对象和一个 ApiAIinput 对象。

我做这一切都错了吗?试图让一个 lambda 满足来自多个服务(Alexa 和 ApiAI)的“助手”请求,我错了吗?

任何帮助,将不胜感激。当然,其他人必须在 AWS 中编写他们的助手功能,并希望将他们的代码重用于两个“助手”平台。

0 投票
1 回答
61 浏览

machine-learning - api.ai 中的可选实体

我有这个意图。

现在,当我查询“资产何时会失败?或单元何时会失败?”时 有用。

但是当我说“它什么时候会失败?” 这没用。

有没有办法可以使实体@asset 可选?

0 投票
1 回答
606 浏览

actions-on-google - 在 Google Action 中使用 API.AI 启动带有事件的 Intent

我正在开发一个 Google 助理操作,并希望创建一个可以自动启动我拥有的意图的事件。问题是我似乎找不到任何关于如何实际定义事件的好的文档,因此它启动了一个意图,而无需在两者之间与用户进行通信。

举个例子。我附上了我试图使用的意图的图像。我想让用户get_location通过话语提示意图。从这里我的代码检查我们是否已经拥有权限,如果我们没有,我希望request-permission通过事件启动意图。我如何设置事件以完成此操作?

这是我正在寻找的对话/工作流程: - 用户说:“在我附近预订开球时间” - 这会启动我的 get_location 意图 - get_location 意图检查是否已授予权限isPermissionGranted() - 它意识到没有授予权限- 启动请求许可意图 - 提示用户许可

这是我的意图的设置方式: 在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
472 浏览

google-oauth - Google Action API.ai 帐户链接调试 URL 返回 500

我已经按照本教程https://apiai-aws-heroku-nodejs-bots.blogspot.co.uk/2017/07/steps-for-apiai-and-google-account.html但是当我去抓调试 URL 恰好是https://assistant.google.com/services/auth/handoffs/auth/start?provider=allergology-5fa9c_dev&scopes=https://www.googleapis.com/auth/userinfo.email+https: //www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/admin.directory.resource.calendar&return_url=https://www.google.com/并将其粘贴到新的窗口我得到错误 500 但没有解释。

我也尝试过隐身窗口。它确实要求我提供电子邮件和密码,但随后返回相同的错误。

我使用了隐式授权类型,但我没有启用添加快速帐户链接,如果不对,请告诉我?

当我尝试 CURL URL 时,我收到消息 {“status”:{“code”:401,“errorType”:“unauthorized”,“errorDetails”:“Authentication parameters missing”}}

更新 - 现在当我在模拟器上尝试基本的 Talk to Allergology 操作时,我什至不再获得调试信息,但消息“抱歉,此操作在模拟中不可用”:皱眉:

能否请你帮忙?谢谢莫雷纳

0 投票
2 回答
339 浏览

actions-on-google - 在 grantType=authorization_code 请求之后,Google 代理授权流程不会继续

我正在开发一个 API AI 代理,并尝试实现帐户链接功能。oauth2-codeflow上的文档非常有用,我可以创建我的 oauth 流程并在Google Playground 中进行测试。到这里为止一切正常。

但是当我尝试在网络模拟器中对其进行测试时,我不断收到“看起来您的代理帐户尚未链接”。我已经按照调试 URL 进行了登录和授权步骤。

根据这个SO Question:我应该期望浏览器被重定向到https://www.google.com/?result_code=SUCCESS&result_message=Accounts+now+linked,但是我的浏览器总是被重定向到https://www.google.co.in/?gws_rd=cr&ei=QDOEWfCAPMHA0gSUvJj4Ag并且在代理中我仍然收到accounts not linked消息。

我可以看到 Google 能够使用 grantType:authorization_code 调用我的令牌端点,并且我的服务响应如下所述:

我的服务响应是:

我已经完成了SO Question中的建议,但我的回复没有其他参数。简单明了

我通过带有以下代码的 nodejs 应用程序发送上述响应:

我现在真的很震惊,找不到出路!请帮忙。

0 投票
2 回答
836 浏览

node.js - 如何在谷歌助手应用中发送多个语句?

我正在创建一个用于告诉引号的 Google 助理应用程序,我目前正在使用Api.aiApiAi NodeJs webhook。我希望我的回应应该是这样的:

请注意,所有三行都是不同的行。我知道如果我只使用没有 webhook 的 api.ai 的 ux(使用多个简单响应)是可能的,但我不知道如何在与 webhook 结合使用时做到这一点。

我试过了:

但它似乎只说了第一句话。我还尝试将其替换为:

但它在第一个语句之后退出。怎么做?

0 投票
1 回答
47 浏览

date-range - 日期期间将“2000 年之前”理解为 [“2000-01-01/2000-12-31”]

我正在构建一个api.ai代理,但我很难date-period正确理解无界参数。

例如:

  • before 2000被解释为["2000-01-01/2000-12-31"]
  • after 1999被解释为["1999-01-01/1999-12-31"]
  • after January 2007被解释为["2007-01-01/2007-01-31"]

这让我认为只有日期(2000/ January 2007)用于计算日期范围,忽略副词(before/ after)。

有没有办法理解before 2000["0000-01-01/2000-01-01"](或者至少["1970-01-01/2000-12-31"]是基于 Epoch 的)?

0 投票
1 回答
290 浏览

javascript - 通过 api.ai 的函数回调获取 json body

我正在使用 firebase 来托管云功能,因为很多功能(几乎每个)我都需要发出 http 请求并获取 json 主体以从中获取数据。但是,回调对我来说效果不太好,我已经搜索了一些现有的答案,但仍然停留在这个问题上。这是代码片段,之前声明了选项,如果我没有将请求放在 get_request_handler 中,它可以正常工作。:

我调用函数如下:

现在的问题是无法在 get_request_handler 函数中发出第一个请求。换句话说,它只进入 get_request_handler 而不是进入那个请求体。如果我不创建 get_request_handler 并离开 req(options, function (error, response, body) { ... } 它可以正常工作。对此有什么想法吗?

注意:我刚刚检查了firebase日志,它说这一行: req(options, function (error, response, body) it got TypeError: Assignment to constant variable. at get_request_handler (/user_code/index.js:116:13)