我在一家NLI公司工作,我刚刚创建了一项技能,我通过亚马逊Echo与我们的Alexa Skill进行了非常开放的麦克风会话.一切正常,我可以与我们的后端知识库进行开放式对话,而不必使用Alexa作为前缀.
当我演示这项技能时,房间里的某个人不可避免地会打断并想询问NLI如何运作.如果我将回声静音或在短时间内没有问问题或回答问题,那么技能就会超时.然后我被迫再次开始交互,但要求Alexa启动MySkillInvocation.
题:
在从Alexa Ask Response回听时,是否有一种编程方式来延长超时时间?可能甚至是一种以编程方式暂停正在运行的技能的方法?
如何为Alexa技能创建通用插槽?因此,我可以创建自己的Todo应用程序,它将识别自由格式文本.
使用Google OAuth进行我的Alexa帐户关联时,它在Android和某些iOS设备上运行良好,但用户报告了以下内容:
错误403:disallowed_useragent
"此用户代理不允许向Google发出OAuth授权请求,因为它被归类为嵌入式用户代理(也称为Web视图).根据我们的策略,只允许浏览器制作对Google的授权请求......"
我已经创建了一项技能并希望在设备上进行测试?
我已经设法在echosim.io上测试它.
alexa aws-lambda alexa-skill alexa-skills-kit alexa-voice-service
我想从讲话中得到一美元。因此,例如,如果我问Alexa:
发送$ 100.51给Kroger。
(发音为一百美元和五十美分)我想100.51在适当的位置接收该值。
我尝试搜索,并按照以下方式定义了发声槽:
"slots": [
{
"name": "Amount",
"type": "AMAZON.NUMBER"
}
]
Run Code Online (Sandbox Code Playgroud)
但是在JSON输入上,我只会得到以下结果:
"slots": {
"Amount": {
"name": "Amount",
"value": "?"
}
}
Run Code Online (Sandbox Code Playgroud)
如何使Alexa接受货币值?
我已经将这个问题发布到亚马逊开发者论坛,但没有得到答案.我想Stackoverflow应该是从一开始的第一选择:
根据我的理解,如果我使用自定义槽类型,即使其可能值的列表不包含口语单词,仍然会将口语单词传递给该功能.文档说'自定义插槽类型不等同于枚举.如果口语理解系统认可,列表外的值仍可能被返回.
现在我有一个自定义插槽类型,LIST_OF_PERSONS其中包含值Matthias|Max和值
EmployeeDetailsIntent {Person}
Run Code Online (Sandbox Code Playgroud)
如果我使用不在LIST_OF_PERSONSIntent中的值调用此意图仍然会被调用,但JSON不包含Slot的"value"键:
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.a943e233-0713-4ea5-beba-d9287edb6083",
"locale": "de-DE",
"timestamp": "2017-03-09T14:38:29Z",
"intent": {
"name": "EmployeeDetailsIntent",
"slots": {
"Person": {
"name": "Person"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是"按设计工作"还是一个错误?我如何访问意图中的口语呢?那this.event.request.intent.slots.Person.value是不确定的?
我的代码位于AWS lambda中,我使用的是nodejs alexa-sdk版本1.0.7.我的技能语言是德语.
我正在尝试使用技能管理API(SMAPI)在我的Alexa开发者帐户上检索技能列表.
我有以下HTML/javascript:
<BODY>
<a href id="LoginWithAmazon">
<img border="0" alt="Login with Amazon" src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gry_312x64.png" width="156" height="32" />
</a>
<div id="amazon-root"></div>
<script type="text/javascript">
var client_id = "<client id>";
window.onAmazonLoginReady = function() {
amazon.Login.setClientId(client_id);
};
(function(d) {
var a = d.createElement('script'); a.type = 'text/javascript';
a.async = true; a.id = 'amazon-login-sdk';
a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
d.getElementById('amazon-root').appendChild(a);
})(document);
document.getElementById('LoginWithAmazon').onclick = function() {
options = {
scope : 'profile postal_code alexa::ask:skills:readwrite alexa::ask:models:readwrite alexa::ask:skills:test',
interactive: 'always',
response_type: 'code'
};
amazon.Login.authorize(options, '<login page url>');
return false;
};
</script>
</BODY>
Run Code Online (Sandbox Code Playgroud)
然后调用登录页面以获取适当的访问令牌: …
我目前正在努力将Amazon Alexa与我们当前的系统集成。我要做的TL; DR版本是,我应该能够通过Alexa Skill Management API以编程方式创建Alexa技能。
尽管这非常简单,但我在身份验证阶段遇到了障碍(涉及到“使用亚马逊登录”):
这应该起作用的方式是,您对SMAPI端点进行的每个请求都必须在AuthorizationHTTP标头中包含授权令牌。
假设我https://api.amazonalexa.com/v0/skills对此主体发出POST请求:
{
"vendorId":"my-vendor-id",
"skillManifest": {
"publishingInformation": {
"locales": {
"en-US": {
"summary": "This is a sample Alexa skill.",
"examplePhrases": [
"Alexa, open sample skill.",
"Alexa, turn on kitchen lights.",
"Alexa, blink kitchen lights."
],
"keywords": [
"Smart Home",
"Lights",
"Smart Devices"
],
"name": "Sample custom skill name.",
"description": "This skill has basic and advanced smart devices control features."
}
},
"isAvailableWorldwide": false,
"testingInstructions": "1) Say 'Alexa, discover my …Run Code Online (Sandbox Code Playgroud) 我在亚马逊技能商店有一个alexa技能.该技能的交互模型是使用alexa开发门户的技能构建者开发的,并且lambda函数是单独上传的.技能是实时的,有很多用户.
最近我觉得有必要对这项技能做一些改变.从现在开始我使用ask-cli进行所有alexa技能开发,我决定也使用相同的技能.
以下是我遵循的步骤:
克隆了alexa控制台中的技能,使用命令问克隆并选择我想要进行更改的技能.
对技能进行了必要的修改.刚刚改变了回应,没什么特别的.
但是我收到以下错误:
[Error]: Building skill schema failed
Run Code Online (Sandbox Code Playgroud)
我认为我所做的更改可能是它的原因,所以我回溯了更改并使代码成为克隆时的代码.然后我尝试再次部署代码,但错误保持不变.
我在亚马逊门户网站上找到了一些答案,这是其他问题的最常见原因,在技能图标URI的URI中存在一些错误.可以肯定的是,我还从skill.json中删除了该行,并尝试再次部署它,但没有任何改变.
有没有人知道上述问题的原因?
我需要修改我发布的Alexa技能。我熟悉Amazon发布一项技能后自动创建的“开发中”技能版本。我不了解如何迭代自己的技能,特别是当我需要同时更改交互模型和链接的Lambda函数时?
例如,我可以创建一个单独的“ In Development” Lambda函数,并将其作为我的“ In Development” Alexa技能的默认端点。但是,当我提交自己的“开发中” Alexa技能进行发布时,“开发中” Lambda端点将成为我发布的技能的新端点。我想这可能行得通,而且我认为这就是Amazon想要的,但我不想回收我的Lambda函数,重新配置X射线跟踪等。我使用无服务器框架来部署链接到我的Alexa的Lambda函数。技能,它为我带来了Lambda。
推荐的工作流程是什么?我觉得这里缺少基本的东西。
除了“ 编辑开发版本 ” 之外,我找不到任何有关此的Amazon文档,这显然是不够的。该页面具有指向“发布后修订和更新您的技能 ”的链接,但是单击它会将我带到关于技能分配的页面。
alexa-skill ×10
alexa ×7
alexa-slot ×3
aws-lambda ×3
amazon-echo ×1
ask-cli ×1
curl ×1
javascript ×1
oauth ×1
php ×1