大佬教程收集整理的这篇文章主要介绍了node.js – 在SDK v2上使用Alexa和Lambda的HTTP请求,如何使其工作?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,@R_618_10107@请求就像魅力一样,但是当我和我的@R_618_10107@请求完成时我想返回语音响应但是我甚至不知道是否可能因为“句柄”功能应该返回某些内容(看评论):
const MyIntentHandler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return request.type === 'Launchrequest' || (request.type === 'Intentrequest' && request.intent.name === 'MyIntent'); },handle(handlerInput) { var options = { host: '@R_618_10107@://foo.com',port: 80,path: '/mypath',method: 'GET' }; var req = @R_618_10107@.request(options,function(result){ result.on("end",function(){ //I would like to return speak here like that : //return handlerInput.responseBuilder.speak("It works").withSimpleCard("myTestApp","It works").getResponse() }) }); req.end(); //And I would like to remove this line to manage response in result.on("end",function(){}) above return handlerInput.responseBuilder.speak("It works").withSimpleCard("myTestApp","It works").getResponse(); },};
有什么想法来处理这个?
1)创建一个管理@R_618_10107@请求并返回承诺的新功能:
function @R_618_10107@Get(options) { return new Promise(((resolve,reject) => { const request = @R_618_10107@.request(options,(responsE) => { response.setEncoding('utf8'); let returnData = ''; if (response.statusCode < 200 || response.statusCode >= 300) { return reject(new Error(`${response.statusCodE}: ${response.req.getHeader('host')} ${response.req.path}`)); } response.on('data',(chunk) => { returnData += chunk; }); response.on('end',() => { resolve(JSON.parse(returnData)); }); response.on('error',(error) => { reject(error); }); }); request.on('error',function (error) { reject(error); }); request.end(); })); }
2)在Intent中,返回一个你调用@R_618_10107@Get函数的promise:
const MyIntentHandler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return request.type === 'Launchrequest' || (request.type === 'Intentrequest' && request.intent.name === 'MyIntent'); },method: 'GET' }; return new Promise((resolve,reject) => { @R_618_10107@Get(options).then((responsE) => { resolve(handlerInput.responseBuilder.speak("it is done.").getResponse()); }).catch((error) => { resolve(handlerInput.responseBuilder.speak('Thor is not available at the moment. Please try again later or contact your administrator.') .getResponse()); }); }); },};
这是正确完成它的方法.我的例子是基于alexa petmatch sample.
以上是大佬教程为你收集整理的node.js – 在SDK v2上使用Alexa和Lambda的HTTP请求,如何使其工作?全部内容,希望文章能够帮你解决node.js – 在SDK v2上使用Alexa和Lambda的HTTP请求,如何使其工作?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。