我在使用服务模拟器测试我的 Alexa 技能时遇到了困难。如果我设置了 appId,该技能将不起作用。这是相关的代码:
'use strict';
const Alexa = require('alexa-sdk');
var APP_ID = "amzn1.ask.skill.[my skill ID]";
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.appId = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
}
当我在服务模拟器中运行此代码时,我得到响应“无法调用远程端点,或者它返回的响应无效。” 和 CloudWatch 日志中的错误消息:
The applicationIds don't match: applicationId and amzn1.ask.skill.[my skill id]
"errorMessage": "Invalid ApplicationId: amzn1.ask.skill.[my skill id]"
如果我注释掉设置 appId
//alexa.appId = APP_ID
模拟器似乎返回了一个有效的响应,但我在日志中看到了这个警告:
"Warning: Application ID is not set."
这是模拟器发送的Lambda Request:
{
"session": {
"sessionId": "SessionId.bb263d3e-2018-4aab-a0df-f945b3a25bf9",
"application": {
"applicationId": "amzn1.ask.skill.[my skill ID]"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.[accountID]"
},
"new": true
},
"request": {
"type": "LaunchRequest",
"requestId": "EdwRequestId.d8b56c7f-63ea-48e8-8816-9b7c036d5816",
"locale": "en-US",
"timestamp": "2017-07-12T12:06:11Z"
},
"version": "1.0"
}
一些在线示例建议 appId 属性应为 APP_ID:
alexa.APP_ID = APP_ID;
但这似乎不正确。根据 alexa-sdk 源代码(无论如何都在尝试),该属性需要它是我实现的 appId 。
看起来问题与亚马逊模拟器创建的 json lambda 请求更相关。需要说明的是,这是 Amazon Alexa 开发人员门户上的模拟器,而不是 AWS lambda 测试事件接口上的测试函数。
奇怪的是,如果我剪切并粘贴来自 Amazon 模拟器的 lambda 请求并从 AWS 测试界面运行它,它工作正常。
这两天我也遇到了这个问题。我相信这是他们最终的问题。我在亚马逊论坛上看到了这个。
亚马逊在周末更改了一些东西,这会影响 Lambda 从模拟器收到的 JSON 请求并中断验证。这是关于此的两个线程,其中包括允许其工作的变通方法:
到目前为止,亚马逊还没有更新,甚至没有承认这个问题。
--- 小工具频道
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句