问题标签 [jovo-framework]

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

lambda - 如何退出调用 Firebase 存储的 lambda 函数?

我正在尝试实现一个 Alexa 技能(用 Jovo 编写)来访问我们存储在 Google 的 Firebase 存储中的音频文件。但是,无论我给出什么超时值,我都无法让 lambda 函数返回。我相信我的问题在于我如何在 Lambda 中处理异步代码,但我无法弄清楚我正在尝试做的事情的正确语法,尤其是在 Jovo 框架中。

这是一些有问题的代码的版本。在实际代码中,它将 url 传递给音频播放器,但这个示例更简单地演示了问题:

当我在 Lambda 函数中运行它时,我看到 console.log 打印出了一个好的 URL。我还看到了构建的 SSML 字符串,但我从未听到过该短语并且 Lambda 函数超时(即使有 20 秒的超时)。如果我注释掉 getDownloadURL 行,函数返回就好了。另外,如果我在 Lambda 之外运行jovo run它,它在那里也可以正常工作。

底线:我需要做什么才能在 lambda 函数中使用 getDownloadURL() 方法?

0 投票
1 回答
145 浏览

alexa-skill - 带有 Jovo 框架的 Alexa 语音:这可以通过话语获得 IntentName 吗?如何根据用户话语决定跳转到哪个意图?

我已经使用以下流程构建了 Alexa 技能:

LAUNCH -> AccountLinkingIntent -> CampaignIntent

AccountLinkingIntent,目前我正在路由到CampaignIntent如果 Account 已经链接。

到目前为止,一切正常。现在我必须添加另一个 IntentActiveContactIntent以便流程变为:

LAUNCH -> AccountLinkingIntent -> CampaignIntent / ActiveContactIntent 即,从AccountLinking我需要决定路由到哪个 Intent。

调用是这样的(CampaignIntent):

或(ActiveContactIntent)

根据话语,我需要告诉 Alexa 去哪里。到目前为止,我有以下内容AccountLinkingIntent

...返回 this.toIntent("CampaignIntent"); ...

但现在我需要做出与此相同的决定:

有什么方法可以IntentName通过话语获得,以便我可以通过相同的方式进行检查,例如:

或者,如果有可能,如果允许传递变量intent_name_by_utterance,我也可以将值作为方法的参数传递!toIntent

更新:

我尝试了以下方法来查看是否返回了意图名称:

LAUNCH() { return this.toIntent("LinkAccountIntent"); },

异步 LinkAccountIntent() { const intent_name = this.$request.getIntentName(); this.tell( Current intent is: ${intent_name}); },

以以下两种方式调用该技能:

give me my latest campaign resultsANDwho is my most active contact是各自意图的话语。

我正在使用 Alexa 测试控制台进行测试。在这两种情况下,我都在期待意图的名称 ( this.$request.getIntentName()),最后是

嗯,我不知道那个。

我的意图是通过使用调用名称唤醒技能,直接通过其话语调用意图。

有什么建议吗?

0 投票
1 回答
154 浏览

aws-lambda - Jovo Alexa:jovo deploy 说 lambda 的触发器设置无效

我正在使用 JOVO 框架创建 Alexa 技能。Amazon Alexa我已在控制台上完成以下步骤:

  1. 在 AWS Alexa 控制台中创建了一项新技能
  2. 在 Lambda 控制台中创建了一个函数
  3. 在技​​能的端点下添加了Lambda arn.
  4. 在上述 lambda 函数中添加了 Alexa Skill Kit 触发器并添加了 Skill ID
  5. 已成功保存端点。

本地设置:

$ jovo new WeatherService
$ cd WeatherService
$ code .
$ ask init
选择ask defualt. 在浏览器中通过 IAM 控制台登录 $ jovo build --platform alexaSkill

到目前为止,一切正常。所以我继续通过以下命令部署该技能:

$ jovo deploy

当 Lambda 尝试部署时,我收到以下消息:

Lambda arn:aws:lambda:us-east-1:880731272882:function:MyWeatherTeller 的触发器设置无效

出于好奇,我运行了相同的命令$jovo deploy,这次是不同的错误消息:

askApiUpdateSkill:找不到资源

我做错了什么?

以下是控制台设置的屏幕截图:

功能设置: 在此处输入图像描述

技能端点设置: 在此处输入图像描述

0 投票
0 回答
133 浏览

javascript - 成功完成作业后如何在 ssh2 nodejs 中返回 JSON 响应

我想在远程服务器上做一些任务。但我没有得到有效的 JSON 响应。我尝试了各种方法来获得丰富的 JSON 响应,但它不起作用。

这是谷歌的意图,我只想通过谷歌助手部署在远程服务器上:

我的问题是我在任务完成或失败时没有得到有效的 JSON 丰富响应。我也尝试了以下方法,但没有得到有效的 JSON 响应。

数字流量错误:

0 投票
1 回答
322 浏览

alexa-skills-kit - 如何使用 JOVO 框架获取 Alexa 技能意图的实际话语文本

有没有办法使用 JOVO 获得实际的 Alexa 话语(用户提出的实际问题或短语)?我需要基于此更改语音输出。这是一个用例场景:

变化:

话语: 有多少有效优惠券
Alexa: 目前,您有 2 个有效优惠券。您想了解更多详情吗?
话语: 是的
Alexa: 目前您有 2 个有效的优惠券正在运行。WINTER20 享有 10% 的折扣,将于 2020 年 2 月 20 日到期。SPRING20 对所有 1000 卢比以上的产品提供 250 卢比的统一折扣。将于 2020 年 4 月 30 日到期。

话语: 获取我的优惠券详细信息
Alexa: 目前您有 2 个有效优惠券正在运行。WINTER20 享有 10% 的折扣,将于 2020 年 2 月 20 日到期。SPRING20 对所有 1000 卢比以上的产品提供 250 卢比的统一折扣。将于 2020 年 4 月 30 日到期。

0 投票
1 回答
445 浏览

alexa-skill - 避免 Alexa Skill 中的话语冲突的最佳做法是什么

在下面的屏幕截图中,我遇到了话语冲突,这很明显,因为我在两个话语中都使用了相似的样本模式。

在此处输入图像描述

我的问题是,我正在开发的技能需要在多个话语中使用类似的模式,我不能强迫用户说“是的,我想继续”或“我想存储……”之类的话。

在这种情况下,避免话语冲突以及具有多种相似模式的最佳实践是什么?

我可以使用单个话语并根据用户所说的内容来决定要做什么。

这是我脑海中的一个例子:

用户说反对{note} 在技能中我检查了这一点:

上述循环一直持续到用户说“不”。

但这是正确的方法吗?如果没有,最佳做法是什么?请建议。

0 投票
1 回答
52 浏览

jovo-framework - Jovo 部署无法找到 ask-clik

我正在尝试使用 Jovo 构建 Alexa 技能,但停留在 jovo deploy 不起作用的地方。查看错误似乎无法找到ask-cli。Jovo build 工作正常,另外,如果我尝试 ask-cli deploy,那一个也可以。问题似乎与某些配置有关,我尝试查看所有项目文件但没有找到任何可以解决此问题的设置。如果我在这里遗漏任何东西,有人可以指导我..

我发现很少有人在运行 ask init,但它要求提供 lambda 和技能文件路径,而我在 jovo 中看不到这些路径。我尝试将 jovo 文件与 ask-cli 进行比较,但没有找到 lambda 的匹配文件,所以不确定这是否会出现问题。

在此处输入图像描述

0 投票
1 回答
91 浏览

alexa - 如何从 Alexa Skill 中的用户随机输入中提取自定义插槽

我们有一个名为 topic 的自定义插槽的意图。例如,此插槽的值可能是:

所以我们的示例话语是这样的:

如果用户使用与示例话语中的短语类似的短语,则此方法可以正常工作。但是,有没有办法实现以下目标?

我们希望用户能够在{topic}. 就像是:

或者

Alexa Skill 有没有办法{Topic}从任何随机短语中提取?

0 投票
1 回答
1658 浏览

amazon-web-services - AccessDeniedException:用户:arn:aws:iam::xxxxxxx:root 无权执行:lambda:UpdateFunctionCode

很抱歉这篇冗长的帖子!我已尽力使其尽可能简短,但我想把我必须清楚地解释情况的所有信息。

我的问题与AWS Lambda function deployment使用有关JOVO CLI

每次我尝试将技能功能从本地部署到 Lambda 时,都会收到以下错误块。我不知道如何解决它。

$ jovo deploy -t lambda --ask-profile officialProfile

但是我可以让$ jovo get alexaSkill --skill-id <Skill ID> --ask-profile officialProfileand $jovo deploy --ask-profile officialProfile(没有任何附加参数)命令运行没有任何问题。

为了从本地部署代码,我以 IAM 用户身份登录创建了一个 ASK 配置文件。以下是我遵循的步骤:

  1. 询问 init -p 官方简介
  2. 使用我的雇主创建的 IAM 用户凭据(电子邮件和密码)登录
  3. 收到成功消息,说明配置文件已创建

在做了一些研究之后,我在下创建了一个策略aws console并将以下 JSON 添加到其中。

然后将以下权限添加到我的 IAM 用户:

  • AWSLambdaFullAccess
  • AWSCodeDeployRoleForLamda
  • 以及我之前创建的上述策略

但没有任何工作。在将代码部署到 Lambda 时,我仍然遇到同样的错误。

我的前辈说,也许问题是我试图以 root 用户身份访问 AWS,我需要使用我用户的 ARN。我无法理解如何使用或配置它。

我收到了一封电子邮件邀请,用于登录 Alexa 控制台以构建技能。当我创建 时ASK profile,我使用相同的电子邮件地址和密码登录。这是一个root帐户吗?

同时,我找到了这篇文章。AWS Access Key ID也和AWS Secret Access Key我在一起。但是想确定我在做什么,因为ASK profile我已经创建了一个,如果这会导致任何进一步的问题。

到目前为止,我一直在从我的个人 AWS 根账户构建技能。这是我第一次使用 IAM 用户帐户。

更新:

根据@Paradigm的指示,当我尝试时ask deploy,出现以下错误:

0 投票
1 回答
34 浏览

alexa-skill - 用户响应被切断并引发意外错误。如何获取发生的错误消息

我正在开发一种技能,使用JOVO它记录用户的笔记并保存在数据库中。工作流程工作正常,但是当我说一些数据时,数据被切断,其中一部分被保存在数据库中,但会话似乎仍然存在。

当我想再说些什么时,Alexa 说的是Unexpected Error。这只发生在一个意图上。它有一个插槽,类型是AMAZON.SearchQuery

我想知道发生的确切错误并将其发送到我的电子邮件地址以便更好地理解。我怎样才能做到这一点?

根据这篇文章,我可以自定义错误。但我想知道发生的错误的确切类型并在我的电子邮件中获取完整的错误消息。我怎样才能做到这一点?

我检查了我的数据库字段长度,它足以存储长文本。被保存的部分远不及字段长度。它要低得多。

但是,当我从 Alexa 测试控制台进行测试时,这并没有发生。即使是 500 个字符长的文本也可以从这里很好地保存在数据库中。我正在使用AMAZON.SearchQuery这个插槽。Alexa 是否对作为槽值传递的字符长度有限制?

我无法找到问题所在。谷歌也无能为力!

更新

意图代码:

saveAgentNote 功能: