你怎么能在Alexa技巧套件(ASK)

我试图build立一个ASK(Alexa技能工具包)应用程序基本上读取消息,因为他们进来。

我试图testing这个到目前为止的代码是:

function handleObserveFlowIntentRequest(intent, session, response) { var callback = function (message) { response.tell({ speech: message, type: AlexaSkill.speechOutputType.PLAIN_TEXT }); }; callback("One Observe Flow"); callback("Two Observe Flow"); } 

我只能从第一个callback输出"One Observe Flow"

最终我想基本上做这样的事情:

 function handleObserveFlowIntentRequest(intent, session, response) { var callback = function (message) { response.tell({ speech: message, type: AlexaSkill.speechOutputType.PLAIN_TEXT }); }; var jsonStream = new EventSource(::myApiUrl::); jsonStream.onmessage = function (e) { callback(e.data.message); } } 

目前在ASK平台上不可能做什么。

如果没有提示,Alexa就不可能说出来。 Alexa是会话式的,不能中断用户。

虽然它可能看起来像你想要做的事情是基于node.js的asynchronous性质的代码,你的技能是由亚马​​逊基于给定的意图同步调用,你只是提供一个响应。 ASK没有提供一个机制让你推动一些东西给Alexa来说。

这意味着你必须在Alexa实际发表任何内容之前形成你的整个回应。 重申一下,这是因为亚马逊以一种意图来称呼你的技能并期望得到回应。 在你使用response.tell返回这个响应之后,你不能让Alexa说别的,直到你收到来自Amazon的另一个Intent请求。

这是晚了,但也许会被其他人使用。 虽然你不能用ASK来做,但你可以用AVS。 这意味着build立自己的回声与覆盆子pi或类似的,但它会做你在找什么。 而不是一个常开的stream,你会触发一个离散的响应每个事件发生。 你可以看看这个hackster项目,我做了类似的事情。 在我的情况下,运行在RPI上的代码等待一个事件。 当一个IOTbutton被按下时,Alexa会说出相应的回应。