Alexa技能集

编程入门 行业动态 更新时间:2024-10-16 00:16:58
Alexa技能集 - context.succeed未从AWS lambda(nodejs)执行(Alexa Skill Set - context.succeed not getting executed from AWS lambda(nodejs))

我已经从lambda函数发出了一个“http.get”请求,并且正在使用响应来构造回应ASK的回复。

在下面的代码中 - 切换case“GetName”context.succeed从不调用,而在切换情况下,“GetNameParameter”context.succeed被成功执行。 由于“GetName”的“http.get”请求导致了一些问题吗? 如何解决这个问题。

每当我添加“http.get”请求时,context.succeed方法不起作用,因此我无法使alexa工作。

任何人都可以帮助解决问题。

以下是我的代码:

var http = require('http'); exports.handler = (event, context, callback) => { // TODO implement if(event.session.new){ console.log("NEW SESSION"); } switch(event.request.type){ case "LaunchRequest": console.log("LAUNCH REQUEST"); context.succeed( generateResponse( buildSpeechletResponse("Welcome", true), {} ) ); break; case "IntentRequest": console.log("IntentRequest"); switch(event.request.intent.name){ case "GetName": var endpoint = //endpoint var body = "" http.get(endpoint, (response) => { response.on('data', (chunk) => { body += chunk }) response.on('end', () => { var data = JSON.parse(body) var name = data.name console.log("Name: "+name); //Not getting executed context.succeed( generateResponse( buildSpeechletResponse(`Name is ${data}`, true), {} ) ) }) }) break; case "GetNameParameter": context.succeed( generateResponse( buildSpeechletResponse("OK, Name is "+event.request.intent.slots.Name.value, true), {} ) ); break; } break; case "SessionEndedRequest": // Session Ended Request console.log(`SESSION ENDED REQUEST`); break; default: context.fail(`INVALID REQUEST TYPE: ${event.request.type}`); } callback(null, 'Hello from Lambda'); }; buildSpeechletResponse = (outputText, shouldEndSession) => { return { outputSpeech: { type: "PlainText", text: outputText }, shouldEndSession: shouldEndSession }; }; generateResponse = (speechletResponse, sessionAttributes) => { return { version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse }; };

I have made a "http.get" request from lambda function and am using the response for constructing the reply back to ASK.

In the below code - in switch case "GetName" context.succeed is never called while in switch case "GetNameParameter" context.succeed is successfully executed. Is the some problem due to "http.get" request of "GetName"? How to resolve this.

Whenever I add "http.get" request, the context.succeed method does not work and hence I cannot get alexa working.

Could anybody help in getting the problem solved.

Following is my code:

var http = require('http'); exports.handler = (event, context, callback) => { // TODO implement if(event.session.new){ console.log("NEW SESSION"); } switch(event.request.type){ case "LaunchRequest": console.log("LAUNCH REQUEST"); context.succeed( generateResponse( buildSpeechletResponse("Welcome", true), {} ) ); break; case "IntentRequest": console.log("IntentRequest"); switch(event.request.intent.name){ case "GetName": var endpoint = //endpoint var body = "" http.get(endpoint, (response) => { response.on('data', (chunk) => { body += chunk }) response.on('end', () => { var data = JSON.parse(body) var name = data.name console.log("Name: "+name); //Not getting executed context.succeed( generateResponse( buildSpeechletResponse(`Name is ${data}`, true), {} ) ) }) }) break; case "GetNameParameter": context.succeed( generateResponse( buildSpeechletResponse("OK, Name is "+event.request.intent.slots.Name.value, true), {} ) ); break; } break; case "SessionEndedRequest": // Session Ended Request console.log(`SESSION ENDED REQUEST`); break; default: context.fail(`INVALID REQUEST TYPE: ${event.request.type}`); } callback(null, 'Hello from Lambda'); }; buildSpeechletResponse = (outputText, shouldEndSession) => { return { outputSpeech: { type: "PlainText", text: outputText }, shouldEndSession: shouldEndSession }; }; generateResponse = (speechletResponse, sessionAttributes) => { return { version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse }; };

最满意答案

我明白了,回调引发了这个问题。

评论“回调(null,'来自Lambda的你好');” 问题解决了。

I got it, callback was causing the problem.

Commented "callback(null, 'Hello from Lambda');" and problem was solved.

更多推荐

本文发布于:2023-08-06 05:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1446626.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:技能   Alexa

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!