问题标签 [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.
firebase - 使用 api.ai 将 contextOut 数组附加到 firebase webhook 响应
我正在尝试将contextOut
数组添加到我的 firebase webhook 为 api.ai 给出的响应中,如此处所述。
我简化的firebase代码如下:
在创建助手实例之前以及创建实例之后,res.contextOut
我已经尝试过。我在 api.ai 控制台的 json 响应中看不到变量。res.data
assistant.contextOut
assistant.data
谁能告诉我我错过了什么?谢谢!
node.js - 将谷歌助手与其他安卓应用集成
是否可以打开一个 android 应用程序并执行某个任务作为对谷歌助手聊天的响应。如何为此在 node.js 中编写谷歌助手应用程序?
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 中编写他们的助手功能,并希望将他们的代码重用于两个“助手”平台。
machine-learning - api.ai 中的可选实体
我有这个意图。
现在,当我查询“资产何时会失败?或单元何时会失败?”时 有用。
但是当我说“它什么时候会失败?” 这没用。
有没有办法可以使实体@asset 可选?
actions-on-google - 在 Google Action 中使用 API.AI 启动带有事件的 Intent
我正在开发一个 Google 助理操作,并希望创建一个可以自动启动我拥有的意图的事件。问题是我似乎找不到任何关于如何实际定义事件的好的文档,因此它启动了一个意图,而无需在两者之间与用户进行通信。
举个例子。我附上了我试图使用的意图的图像。我想让用户get_location
通过话语提示意图。从这里我的代码检查我们是否已经拥有权限,如果我们没有,我希望request-permission
通过事件启动意图。我如何设置事件以完成此操作?
这是我正在寻找的对话/工作流程: - 用户说:“在我附近预订开球时间” - 这会启动我的 get_location 意图 - get_location 意图检查是否已授予权限isPermissionGranted()
- 它意识到没有授予权限- 启动请求许可意图 - 提示用户许可
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 操作时,我什至不再获得调试信息,但消息“抱歉,此操作在模拟中不可用”:皱眉:
能否请你帮忙?谢谢莫雷纳
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 应用程序发送上述响应:
我现在真的很震惊,找不到出路!请帮忙。
node.js - 如何在谷歌助手应用中发送多个语句?
我正在创建一个用于告诉引号的 Google 助理应用程序,我目前正在使用Api.ai和ApiAi NodeJs webhook。我希望我的回应应该是这样的:
请注意,所有三行都是不同的行。我知道如果我只使用没有 webhook 的 api.ai 的 ux(使用多个简单响应)是可能的,但我不知道如何在与 webhook 结合使用时做到这一点。
我试过了:
但它似乎只说了第一句话。我还尝试将其替换为:
但它在第一个语句之后退出。怎么做?
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 的)?
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)