如何保持alexa技能开放?

时间:2016-07-04 20:29:46

标签: amazon alexa-skills-kit alexa-skill

我创造了一项技能,以便人们可以跟踪某些状态。但不是每次都要求alexa打开应用程序并进行交互。

SET SHOWPLAN_XML ON

我希望保持杂货店技能开放,以便用户可以与之互动,直到他们要求关闭

Connection conn = getConnection();
String showplanQuery = "SET SHOWPLAN_XML ON";
Statement st = conn.createStatement();
st.execute(showplanQuery);

String actualQuery = "SELECT ATMPROFILES.TERMID FROM ATMPROFILES (NOLOCK) ";
PreparedStatement ps=conn.prepareStatement(actualQuery);
ps.execute();
ResultSet rs = ps.getResultSet();
while(rs.next())
{
    Object object = rs.getObject(1);
    // should log the query plan
    log.info("Query Plan {}  ", object); 
}

有没有办法在不必每次都使用alexa ask grocerylist to add 2 eggs alexa ask grocerylist to add bread 的情况下执行此操作。

4 个答案:

答案 0 :(得分:11)

这是不可能的。这是一个安全功能,所以第三方无法创造一种技能来聆听"关于某人所说的一切。您可以回复,如果您没有设置" endSession"标志,它会保持会话开放。但它只会保持打开约8秒钟。如果你设置了一个reprompt,它将在那时读取它们的reprompt并保持打开另外8秒。因此,你可以保持线路打开的最大值是16秒左右。

答案 1 :(得分:4)

当然这是可能的! (但根据@ Bill的评论最多可以限制在8秒左右)

在您的回复中,当调用buildSpeechletResponse时,请设置' shouldEndSession'为了保持会话开放并继续倾听更多话语而不需要再次使用" alexa问MyApp ..."

各种演示将展示如何执行此操作。例如请在此处查看示例代码:https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/savvyConsumer/src/AlexaSkill.js

答案 2 :(得分:2)

这是可能的,但仅限于有限的时间。

根据您使用的sdk,您可以设置标志(应该结束session = false)。这已在问答响应中完成。 如果你添加一个带有该标志的reprompt,那么你可以保持会话开放,直到重新发表言论。

  

完全重复8秒直到重新开始,然后再重新开始8秒   重新提示。总计16秒。

你必须记住会话和会话变量在会话结束后消失(当alexa echo的蓝灯消失时)。因此,如果您想维护州或购物清单,我建议您像db一样存储。如果您使用lambda来托管端点,那么它有一个可用于存储数据的Dynamo Db。

答案 3 :(得分:1)

唯一正确的答案是不可能。 OP明确定义了他们希望保持会话打开的持续时间,以分钟为单位。这实际上是不可能的。说是可能的,但只能在有限的时间内(这只是OP尝试执行的时间的一小部分),并没有真正的帮助。

由于已经提到的安全原因,这是不可能的。