我创造了一项技能,以便人们可以跟踪某些状态。但不是每次都要求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
的情况下执行此操作。
答案 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尝试执行的时间的一小部分),并没有真正的帮助。
由于已经提到的安全原因,这是不可能的。