我已经使用Python构建了一个应用程序,我已经成功地与Alexa集成。由于这个应用程序非常特定于我的家庭,因此我不太关心部署过程,因为您可以永远(或看起来)在开发模式下运行。
但是,在阅读有关部署过程,特别是验证请求实际来自亚马逊而不是其他人的安全要求时,我了解到相同的要求是一个好主意,无论如何!
因此,为了部署,亚马逊要求您verify requests from Amazon到您的Alexa应用程序。基本上,它分为两部分:
我的整个应用程序都是用Python构建的,但Alexa前端是用Flask-Ask构建的,并且使用了Apache2和WSGI。有很多资源可以学习如何使用Java,JS甚至是一些直接的Python来验证亚马逊的请求,但是我找不到任何关于如何使用Flask-Ask专门完成此任务的内容。
所以我的问题是如何利用Flask-ask实现这一目标?
谢谢!
根据source code(以及我现在无法访问的文档,因为网站已关闭),有以下相关的配置选项:
通过调用Flask的配置,Ask实例被赋予以下配置变量:
ASK_APPLICATION_ID
:通过将此变量设置为应用程序ID或允许的应用程序ID列表来启用应用程序ID验证。默认情况下,禁用应用程序ID验证并记录警告。应在生产中设置此变量,以确保您指定的应用程序发送请求。默认值:无
ASK_VERIFY_REQUESTS
:启用或禁用Alexa请求验证,确保发送到您的技能的请求来自Amazon的Alexa服务。不应在生产中禁用此设置。它对于在自动化测试中模拟JSON请求很有用。默认值:True
因此,默认情况下,每个请求都已经过验证。
此外,您可以添加ASK_APPLICATION_ID
以确保请求来自您的技能:
app = Flask(__name__)
ask = Ask(app, '/')
app.config["ASK_APPLICATION_ID"] = ["skill-id-1", "skill-id-2"] # List of allowed IDs