Dir*_*ler 6 https lambda http node.js alexa-skills-kit
我想为Amazon Alexa创建一项技能 - 当由语音命令触发时 - 通过HTTPS请求从API获取一些信息,并将结果用作Alexa用户的口头答复.
由于node.js的事件驱动概念和Node.js的Alexa Skills Kit的内部结构,这里有一点挑战(特别是对于node.js新手).从用户那里获取参数也不是那么容易.
有人可以提供一些示例代码吗?
Dir*_*ler 13
当我创建我的第一个Alexa Skill时,我是新的node.js,Lambda和Alexa Skills SDK.所以我遇到了一些问题.我想在这里为下一个遇到同样问题的人记录解决方案.
如果我有以下代码片段,我会轻松保存两个小时的调试.:-)
我的示例lambda脚本已经从API中获取了预先格式化的文本.如果您调用XML/JSON或任何API,您需要更多地处理答案.
'use strict';
const Alexa = require('alexa-sdk');
var https = require('https');
const APP_ID = ''; // TODO replace with your app ID (OPTIONAL).
const handlers = {
'functionwithoutdata': function() {
var responseString = '';
var mythis = this;
https.get('**YOURURL**?**yourparameters**', (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
responseString += d;
});
res.on('end', function(res) {
const speechOutput = responseString;
console.log('==> Answering: ', speechOutput);
mythis.emit(':tell', 'The answer is'+speechOutput);
});
}).on('error', (e) => {
console.error(e);
});
},
'functionwithdata': function() {
var mydata = this.event.request.intent.slots.mydata.value;
console.log('mydata:', mydata);
var responseString = '';
var mythis = this;
https.get('**YOURURL**?**yourparameters**&mydata=' + mydata, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
responseString += d;
});
res.on('end', function(res) {
const speechOutput = responseString;
console.log('==> Answering: ', speechOutput);
mythis.emit(':tell', 'The answer is'+speechOutput);
});
}).on('error', (e) => {
console.error(e);
});
}
};
exports.handler = (event, context) => {
const alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10910 次 |
| 最近记录: |