Articles of alexa

Alexa的技能不能正确响应Android应用程序

从昨天的Alexa技能不能在Android应用程序上正常工作。 Alexa启动我的技能,但只发送audio。 似乎响应被打破了,因为我在Alexa-SDK中使用“:askWithCard”,所以她应该用卡片发送给我audio。 Alexa认出口语的话,但是她没有打开一个意图,看起来像她亲密的技巧。 我没有对Android应用程序和Alexa语音服务上的代码进行任何更改。 在Echo Dot设备上,同样的技巧可以正常工作,没有任何问题。 问候

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); […]

修改Alexaaudio播放器示例项目以播放特定音轨

我已经从https://github.com/alexa/skill-sample-nodejs-audio-player上看到了示例代码,并通过我的Amazon Echo获得了示例播客播放器。 如何修改这段代码,以告诉Alexa“询问MySkill播放$ trackname”。 而不是从顶部玩? 我对创build技能非常陌生,但是我已经阅读了所有的文档,并且明白这涉及audio指令。 但是,我无法弄清楚究竟在哪里。 在示例代码中,audioAssets.js包含标题和url的列表。 例如,如果我想说“播放第138集”(其中一个标题) – 为了做到这一点,我需要修改哪些文件? 'use strict'; var audioData = [ { 'title' : 'Episode 140', 'url' : 'https://feeds.soundcloud.com/stream/275202399-amazon-web- services-306355661-amazon-web-services.mp3' }, { 'title' : 'Episode 139', 'url' : 'https://feeds.soundcloud.com/stream/274166909-amazon-web-services-306355661-aws-podcast-episode-139.mp3' }, { 'title' : 'Episode 138', 'url' : 'https://feeds.soundcloud.com/stream/273105224-amazon-web-services-306355661-aws-podcast-episode-138.mp3' }, { 'title' : 'Episode 137', 'url' : 'https://feeds.soundcloud.com/stream/272089501-amazon-web-services-306355661-aws-podcast-episode-137.mp3' } ]; […]

亚马逊Alexa:从SmartHomeSkill lambda控制TCP设备

我有一个用lambda模板创build的SmartHomeSkill。 我有另一个lambda是一个普通的技能function。 我正在使用NodeJS。 我使用Node中的套接字通过TCP直接连接到本地路由器。 一个简单的Lambda使用套接字连接:工程! 技能Lambda使用套接字连接:工作! 技能Lambda使用aws-sdk调用另一个Lambda(来自步骤1):工作! 使用SmartHomeSkill调用套接字:不起作用! 使用SmartHomeSkill调用另一个Lambda:不起作用! 我为所有人使用相同的IAMangular色。 所以,因为情况1到3工作,我认为我的angular色是好的。 我正在使用一个自定义的lambda调用的政策。 我的SmartHomeSkill使用AWSangular色进行身份validation,并使用令牌和一切获得有效的请求。 我的lambda和TCP设备都没有任何身份validationfunction。 TCP设备是自制电子产品。 它适用于普通的lambda和本地软件。 唯一的一件事是:只要我切换到SmartHomeSkill模板什么也没有。 但是,技能本身的作品。 我可以发现设备,Alexas发送调用请求而不抱怨。 我logging了很多东西,所有东西都看起来不错。 在这两种情况下,使用plai TCP套接字或HTTP调用另一个lambda它什么也不做,没有错误,没有响应。 问题:SmartHomeSkill以某种方式使用出站连接受到限制。 但是,如果它连接到其他设备,如Phillips Hue? – 这是我的(完美的)inter-lambda接受HTTP负载并重新发送它使用TCP: var net = require('net'); exports.handler = (event, context, callback) => { console.log(`event=${event}`); var payload = event.payload; sendKnx(payload.ga, +payload.v); // TODO implement callback(null, 'Hello from Lambda'); }; // —- […]

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 […]

Amazon AWS Lambda Alexa HTTP获取问题

我一直在使用Amazon Lambda和alexa技能工具包获取以下代码。 我已经花了无数个小时,并且无法工作。 我不断得到这个消息返回,并不能找出为什么http get失败。 “请稍后再试”。 它甚至不打印控制台消息。 var Alexa = require('alexa-sdk'); var http = require('http'); var APP_ID = "omitted"; var SKILL_NAME = 'omitted'; var options = { host: 'api.forismatic.com', path: '/api/1.0/?method=getQuote&lang=en&format=text', method: 'GET' }; exports.handler = function(event, context, callback) { var alexa = Alexa.handler(event, context); alexa.APP_ID = APP_ID; alexa.registerHandlers(handlers); alexa.execute(); }; var handlers = { […]

Alexa podcast技能套件,从远程json加载audio文件

所以,我试图用json来加载这个audio数据: https : //github.com/alexa/skill-sample-nodejs-audio-player/ 使用请求( https://github.com/request/request )来获取json数据就像一个testing,我运行这个代码。 情节被定义为请求之外的数组。 request.get('myjsondatalink.asp', function (error, response, body) { if(error) { episodes[0] = 'soundcloud-url'; console.log(error); } if (!error && response.statusCode == 200) { var podcasts = body; episodes[0] = 'soundcloud-url'; } episodes[0] = 'soundcloud-url'; }); 我知道请求之外的代码工作,因为我已经尝试声明请求之外的情节[0],它播放良好。 控制台不给我任何错误,我已经尝试只是包括在索引中的这个请求的东西,我可以得到它至less略微工作(可以得到它在成功的请求控制台日志的东西)。 任何理由,这将无法正常工作? 最初是3秒钟超时,所以我把它增加到了30,这是我能得到索引中testing请求的唯一方法。 就像一个笔记,我跑了 for(var podcast in podcasts) { console.log(podcast); } 并且它像1439,1440,1441,1442,1443等那样熄灭,而不是string。 也不太确定,但我不熟悉节点,所以我认为这是错的?