【发布时间】:2018-10-12 05:29:01
【问题描述】:
const HelloWorldIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'CanFulfillIntentRequest'
},
handle(handlerInput) {
if(handlerInput.requestEnvelope.request.intent.name === 'Myname'){
return MynameHandler.handle(handlerInput);
}
const MynameHandler = {
handle(handlerInput) {
const speechText = 'ALex';
const repromtText = 'Please respond';
return handlerInput.responseBuilder
.speak(speechText)
.withCanFulfillIntent(
{
"canFulfill":"YES",
})
.getResponse();
}
};
{
"session":{
"new": true,
"sessionId":"SessionId.<My Session id>",
"application":{
"applicationId":"amzn1.ask.skill.<Application id>"
},
"attributes":{
"key": "string value"
},
"user":{
"userId":"amzn1.ask.account.<user id>
}
},
"request":{
"type":"CanFulfillIntentRequest",
"requestId":"EdwRequestId.<request id>",
"intent":{
"name":"Myname"
},
"locale":"en-US",
"timestamp":"2018-10-12T09:36:31Z"
},
"context":{
"AudioPlayer":{
"playerActivity":"IDLE"
},
"System":{
"application":{
"applicationId":"amzn1.ask.skill.<application id>"
},
"user":{
"userId":"amzn1.ask.account.<user id>"
},
"device":{
"supportedInterfaces":{
}
}
}
},
"version":"1.0"
}
我已经实施CanfulFillIntentRequest 很多天了,但到目前为止还没有运气。我正在使用alexa-sdk-nodejs v2。我无法为CanfulFillIntent 建立响应。我尝试以这些文档中所述的确切方式实施它。
https://developer.amazon.com/docs/custom-skills/understand-name-free-interaction-for-custom-skills.html
https://developer.amazon.com/docs/custom-skills/implement-canfulfillintentrequest-for-name-free-interaction.html.
这是我的响应处理程序。
return handlerInput.responseBuilder
.withCanFulfillIntent(
{
'canFulfill': 'MAYBE',
'slots':{
}
})
.getResponse();
}
const HelloWorldIntentHandler = {
canHandle(handlerInput) {
//return handlerInput.requestEnvelope.request.type === 'IntentRequest' || 'CanFulfillIntentRequest'
return handlerInput.requestEnvelope.request.type === 'CanFulfillIntentRequest'
// && handlerInput.requestEnvelope.request.intent.name === 'Myname' || 'HotelIntent';
},
handle(handlerInput) {
if(handlerInput.requestEnvelope.request.intent.name === 'Myname'){
return MynameHandler.handle(handlerInput);
}
};
当我在手动 JSON 中运行 JSON 代码时,它不响应 CanfulFillIntent 请求并被重定向到错误处理程序代码。
【问题讨论】:
-
请求负载是什么?
-
它的 CanFulfillIntent 请求
-
共享请求负载以及 canHandle() 函数。
-
如果您将其放在评论中,则很难阅读。更新原始问题中的内容,使其可读。
-
我更新了问题
标签: node.js alexa alexa-skills-kit alexa-sdk-nodejs