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
这是我的响应处理程序。
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请求,并且被重定向到错误处理程序代码。
发布于 2018-10-15 20:56:16
withCanFulfillIntent()响应构建器帮助器方法仅在 中可用
通过以下方式安装公共测试版
npm install --save ask-sdk-model@beta
npm install --save ask-sdk-core@beta或者在package.json中使用它
"dependencies": {
"ask-sdk-core": "^2.1.0-beta.1",
"ask-sdk-model": "^1.4.0-beta.1"
}我用beta测试了你的代码,得到了预期的结果:
{
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>ALex</speak>"
},
"reprompt": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>Please respond</speak>"
}
},
"shouldEndSession": false,
"canFulfillIntent": {
"canFulfill": "YES"
}
},
"userAgent": "ask-node/2.1.0-beta.4 Node/v8.10.0",
"sessionAttributes": {
"key": "string value"
}
}https://stackoverflow.com/questions/52772843
复制相似问题