Alexa skill Python Flask ask 和 SocketIO with Unity

Alexa skill Python Flask ask and SocketIO with Unity

我创建了一个自定义 Alexa 技能,它将根据用户输入统一播放动画。

我的 Alexa 技能是使用 ngrok 服务传输的,它为我提供了 https link,而 https link 用于将技能与统一连接起来。

现在我想配置我的技能,比如在动画统一完成后,我想调用 python 中的方法,如果用户什么都不说,它会触发一些意图。

我能够在 python 文件中调用用户定义的方法并能够在控制台上打印文本,但是 speech_text 或 reprompt_text 无法以相同的方法工作。

甚至我也没有得到任何 python 代码,这些代码将调用 python 文件中的特定意图,而不是基于用户输入,而是基于动画条件。

那么如何从 python 代码中调用 Intent。

示例:

以人走路、说话、跳跃、运行动画为例。 可以说我打开我的技能并说要播放步行动画....步行动画是 6 秒....动画完成后....如果用户什么都不说,那么 Alexa 应该需要调用另一个意图来调用另一个动画...动画是,人类说我有另一个动画也喜欢说话等等

我不希望 reprompt_text 在 python 中使用此重新提示功能,因为我每次都使用 1 分钟的空白音频文件在后台打开回声点会话。

您无法在没有用户交互的情况下从 Alexa 触发意图。一个会话将只打开 8 秒,然后重新提示,再次 8 秒,会话将结束。很遗憾,我们无法修改此会话超时。因此,如果用户没有响应,则在播放响应后它无论如何都会结束,您的服务将收到 SessionEndedRequest。因此,在您的情况下,您可以使用此 SessionEndedRequest 一次,但不建议这样做。您始终可以包含一些后端逻辑来检查您是否收到了意向请求,如果没有则播放下一个动画。但是,你永远不会知道用户是否在听。

另一种选择是在播放动画后询问用户本身

例如:

(播放动画 6 秒)

[break for 6 secs] Shall I play the next video?

(您还可以包括重新提示)

通过这种方式,您可以保持用户的参与度,如果用户没有响应,您可以优雅地退出。

更多关于 SessionEndedRequest here