Articles of alexa skills kit

Alexa的SDK请求提示

我有一个场景,客户询问Alexa是什么,我的旅行计划是映射到“TravelIntent”。 这个意图从REST API获取客户旅行详细信息,发现客户有超过1个旅行计划。 现在我正在提示用户,我可以看到有超过1个计划。 假设1为周末旅行,说2等等等等。现在当用户回应说2 Alexa可以提出你的旅行为下周的德里等用户..现在问题是我必须查询restapi的细节,还是有什么办法,我可以在Alexa会话中坚持数据,以及它如何使用用户的“询问”响应,因为已经“TravelIntent”已经收到来自其他api的数据。

输出来自单个意图的多个响应

我有一个Alexa的技能,我想有一个意图的初步反应,然后在一个延迟,陈述另一个回应。 我试图使用多个response.tell(…)调用与他们之间的setTimeout() ,但这只会响应第一个.tell()并结束。 ( .tell()被设置为结束会话,但即使我将其设置为false ,我的代码仍然不会达到setTimeout() ) 我已经包含了一些关于我想要做什么的伪代码: intentHandlers.DynamicDurationIntent = function(intent, session, response) { var calculatedDuration = doCalculation(); var speechDuration = convertToSpeech(calculatedDuration); var speechOutput = "Your duration will last <say-as interpret-as="time">' + speechDuration + '</say-as>"; response.tell(speechOutput); //I get this far setTimeout(function () { var speechOutputEnd = "Great job! You're done."; response.tell(speechOutputEnd); }, calculatedDuration); } 这个模型的一个例子是在7分钟锻炼Alexa技巧中使用的。 […]

alexa技能web服务调用不会发生

我正在尝试历史虚张声势的例子来调用维基百科服务。 我把电话放在开始信息上。 我可以看到它正在打印我的消息,直到它击中呼叫站点。 但是然后在控制台中不打印任何东西。 代码如下所示: var https = require('https'); var urlPrefix = 'https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&explaintext=&exsectionformat=plain&redirects=&titles='; HowTo.prototype.eventHandlers.onLaunch = function (launchRequest, session, response) { console.log("vik::::::::::::: before service call "); var speechText = "Welcome to the your assistant? … what can I help you with."; var repromptText = "For instructions on what you can say, say help me."; response.ask(speechText, repromptText); […]

NodeJS脚本发生错误后,将不会再次启动。 AWS Lambda

我在nodejs4.x运行时有一个lambda函数。 如果我的脚本由于错误而停止执行,可以说我尝试获取未定义对象的.length ,那么我不能再次启动脚本。 它甚至不像脚本运行并遇到相同的错误,脚本不运行。 lambda处理函数从来没有被第二次调用。 这个lambda函数是Amazon Alexa的端点。 当我重新上传代码(一个zip文件),然后系统再次工作。 这是nodejs的一些行为? 脚本是否正在结束文件损坏,因此无法重新启动? 当服务器遇到错误时,我会Process exited before completing request此消息 然后随后的请求达到超时限制。 重要编辑我已经指出问题NPM请求。 该模块不完成加载即。 console.log('i see this message'); var request = require('request'); console.log('this never happens');

如何调用具有特定请求的技能与newSession处理程序一起工作?

你可以在这里阅读,你可以调用具有特定请求的技能。 但我的技能有一个新的会话处理程序,只要我尝试调用我的技能与一个特定的请求,它仍然结束在这个新的会话function。 const handlers = { 'NewSession': function () { this.attributes.speechOutput = this.t('WELCOME_MESSAGE', this.t('SKILL_NAME')); this.attributes.repromptSpeech = this.t('WELCOME_REPROMT'); this.emit(':ask', this.attributes.speechOutput, this.attributes.repromptSpeech); }, 'RankIntent': function () { const rank1raw = this.event.request.intent.slots.RankOne; const rank2raw = this.event.request.intent.slots.RankTwo; … } } 有没有一种方法来获得正确的意图,或者我将不得不在newSession函数中做一些if子句来查看将要发生什么以及哪个函数应该响应?

将Alexa引导至特定的槽值响应

我在Amazon开发人员控制台中定义了一个自定义插槽types,该插槽包含一个名称列表,如下所示。 homer simpson ned flanders principal skinner comic book guy 然后我定义了如下的示例语句。 PlayAudio to play {Name} 所以最后,我希望用户能够说出类似于下面的内容: Alexa,请辛普森玩辛普森 Alexa,请辛普森玩ned佛兰德斯 Alexa,请辛普森玩主要皮肤 Alexa,请辛普森玩漫画书的家伙 当然,Alexa很有可能会错误地听到这个名字,所以我需要能够尽可能匹配听到的名字。 我该如何去做这件事,我是否必须在函数中编写代码,还是有更好的方法?

如何捕获亚马逊Alexa的小数?

我正在寻找一种方法来允许Alexa获取十进制值。 我想给她讲一个温度(54.3)。 我的约束是,有时我想能够input一个整数值(54),而不会有尾随值(.0)。 任何帮助,将不胜感激。

构buildAlexa技能时,在lambda函数中使用NodeJS请求时,http响应或超时错误

我正在build立一个新的技能,我的lambda函数需要调用另一个API来获取一些歌曲的信息。 我的lambda函数被附加。 我的问题是,我可以通过Web浏览器打开url,并得到正确的响应,但是当我在AWS Lambda网站上testingPlay intent时,有时候我得到了超时,有时候我得到了200个代码,但是这样的代码不完整:{“r” :0,“is_show_quick_start”:0,“song”:[]},其中“song”应该有上下文。 (你可以看到它,如果你通过任何网页浏览器打开url) 此外,我testing了另一个url,也可以通过networking浏览器打开,但在AWS Lambda网站上testing时总是500。 我很新的NodeJS和build设Alexa技能。 任何人都可以请帮我弄清楚? 谢谢! 'use strict'; var Alexa = require('alexa-sdk'); var request = require('request'); var constants = require('./constants'); exports.handler = function(event, context, callback){ var alexa = Alexa.handler(event, context, callback); alexa.registerHandlers(stateHandlers.startModeIntentHandlers); alexa.execute(); }; var stateHandlers = { startModeIntentHandlers : Alexa.CreateStateHandler(constants.states.START_MODE, { "LaunchRequest": function () { this.emit(':ask', 'Welcome to […]

Alexa nodejs从亚马逊Lamdba访问url

基于这个例子,我创build了一个简单的Alexa技能: https : //github.com/alexa/skill-sample-nodejs-fact/blob/en-US/lambda/custom/index.js 现在,当GetNewFactIntent被调用时,我想让脚本在不同的服务器上logging一些东西。 这是我想要做的,但有一个问题, 这不是它应该在http.getcallback。 'GetNewFactIntent': function () { //var thisisit = this; http.get("http://example.com", function(res) { //console.log("Got response: " + res.statusCode); const factArr = data; const factIndex = Math.floor(Math.random() * factArr.length); const randomFact = factArr[factIndex]; const speechOutput = GET_FACT_MESSAGE + randomFact; this.response.cardRenderer(SKILL_NAME, randomFact); this.response.speak(speechOutput); this.emit(':responseReady'); }).on('error', function(e) { //console.log("Got error: " + e.message); […]

如何使用npm中的alexa-sdk将LaunchRequest委托给IntentRequest

我在使用alexa-sdk构build节点的Alexa技能。 我正在使用对话框模型来处理用户交互。 我有一些麻烦,将stream程传递给新的请求types ,例如从启动请求到意向请求。 下面是我的处理程序和我想要的理想的例子。 我的具体用例是,我想问一些用户的问题,然后根据他们的回答发送给他们不同的意图。 在intent中,我想访问请求对象,就好像他们最初input了这个intent一样,所以对话模型可以完成它的工作。 const handlers = { 'LaunchRequest': function () { this.emit('Entry'); // this does not do what I want }, 'Entry': function () { let request = this.event.request; // this is the launch request object. // I would like to get the request object for Entry, like if the user […]