所以我基本上是想和Alexa讲一个互动故事。但是,我不确定在Alexa所说的同时如何编辑意图回复。这应该以某种方式发生,以便在Alexa讲故事的同时保持更新。
在我的场景中,Alexa只是一个从DynamoDB获取字符串的守护程序,并且在生成新的故事情节时,她应该阅读并在处理完后立即告诉它们。似乎Alexa需要完成的Strings作为其响应的返回值。 这里是一个例子:
用户: Alexa,告诉我一个故事。
Alexa:(如果发现新句子,则在DynamoDB表中进行检查)说出句子
其他设备:更新故事
Alexa:(如果发现新句子,则在DynamoDB表中进行检查)说出句子
...
这将一直持续到其他设备在DynamoDB表中放置结束指示符,从而使Alexa响应最终的这是故事的结局输出。>
有人有这样的模型经验或如何解决的想法吗?如果可能的话,我不希望用户为一个故事而互动一次。
我正在考虑一个解决方案,其中我将通过简单地生成JSON字符串并将其推过小口述来请求“用户”隐藏的新故事句,从而“伪造”用户意图...无论如何,我不确定这是否:D
谢谢! :)
答案 0 :(得分:0)
Alexa技能编程模型绝对不是为此设计的。如您所知,从技巧上讲,没有办法知道发话到发话的时间,以便能够确定何时发送下一条。
Alexa还对技能需要花多长时间做出了限制,我认为这在5到8秒范围内。这也是一个复杂的问题。
我想完成您想完成的任务的唯一方法是使用GameEngine接口,并在发送每个TTS之后使用输入处理程序来调出技能。唯一的问题是您必须安排响应时间,并希望不会发生额外的延迟。
如今,GameEngine接口要求您声明对Echo Buttons的支持,但这仅出于元数据目的。您当然可以使用不带按钮的基于GameEngine的技能。
看看:the GameEngine interface docs和超时识别器来处理输入处理程序中的超时。
启动故事时,您将启动输入处理程序。发送TTS并在输入处理程序中发送超时,无论您期望TTS接受Alexa说多长时间。超时到期后,您的技能将收到一个事件,您可以继续讲故事。
您可能需要尝试将playBehavior设置为ENQUEUE。