Alexa Skill Development 使用 flask-ask 和 ngrok 错误

Posted

技术标签:

【中文标题】Alexa Skill Development 使用 flask-ask 和 ngrok 错误【英文标题】:Alexa Skill Development using flask-ask and ngrok error 【发布时间】:2020-12-01 07:11:46 【问题描述】:

我正在尝试在 python 中使用 flask-ask 和 ngrok 开始为 Alexa 开发一项技能。以下是我的代码:

from flask import Flask

from flask_ask import Ask, statement


app = Flask(__name__)
ask = Ask(app, "/")

@ask.launch
def start_skill():
    welcome_message = 'Hello there'
    return statement(welcome_message)

@ask.intent("sampleIntent")
def sampleIntent():
    return statement('I am the sample intent')
    
@app.route('/')
def homepage():
    return "Hi,there"


if __name__ == '__main__':

    app.run(port=7025, debug=True)

代码在我的机器上运行良好,如果我打印出来返回正确的输出,当我查看 ngrok https 链接和 python localhost 链接时,我能够查看文本“Hi,there”。 ngrok 和 python 代码都在同一个 7025 端口上。

我知道问题出在密码学上,因为我安装了 3.0 版。教程指示我降级密码学和 Werkzeug。我能够降级 Werkzeug,但无法降级密码学。点冻结如下:

aniso8601==1.2.0
appdirs==1.4.4
ask-sdk-core==1.14.0
ask-sdk-model==1.24.0
ask-sdk-runtime==1.14.0
ask-sdk-webservice-support==1.2.0
asn1crypto==1.4.0
certifi==2020.6.20
cffi==1.14.1
chardet==3.0.4
click==7.1.2
cryptography==3.0
distlib==0.3.1
filelock==3.0.12
Flask==0.12.1
Flask-Ask==0.9.8
flask-ask-sdk==1.0.0
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
openssl-python==0.1.1
pycparser==2.20
pyOpenSSL==17.0.0
pyserial==2.7
python-dateutil==2.8.1
PyYAML==3.12
requests==2.24.0
six==1.11.0
Unidecode==1.1.1
urllib3==1.25.10
virtualenv==20.0.30
Werkzeug==0.16.0

当我尝试将密码学降级到版本 2.1.4 时,我收到很多红色文本,但是,第一行似乎是:

   Running setup.py install for cryptography ... error

我正在运行 python 版本 3.8.5,我有 pip 版本 20.2.2。

【问题讨论】:

【参考方案1】:

有几种方法可以解决这个问题,在我看来最简单的方法是这样的(需要 git):

    导航到项目的根文件夹 clone the flask-ask repo:git clone https://github.com/johnwheeler/flask-ask -- 这将在您的项目目录中创建 repo 的本地副本 修改 /your_project/flask_ask/ 中的 requirements.txt 文件,并从密码学的包中删除版本号。它目前冻结在 ==2.1.4 - 只需删除 ==2.1.4 以允许 pip 解决正确的依赖关系。 一旦您修改了底层包,并且仍在 /your_project/flask_ask/ 中运行 pip install -e . - 这将安装 flask_ask 包的“可编辑”副本,以便识别进一步的更新

【讨论】:

您好,很抱歉回复晚了,我会在修复后给予赏金。我想我很接近了。我现在才看到这个,因为我没有收到通知,但是我对第 3 步感到困惑,我应该在 Windows 资源管理器的根文件夹中找到它吗?有 git 命令吗?再次感谢您的帮助! 对 requirements.txt 的修改?不,没有 git 命令。在您克隆到 repo 后,repo 的本地副本将被拉入您从中克隆它的任何位置。您需要 cd 进入 /flask-ask/(repo 名称)并打开 requirements.txt。在 requirements.txt 中,通过完全删除版本来更改加密版本,如上所述。您可能还需要修改 setup.py 并在那里更改加密版本。进行更改后,使用 pip install -e . 命令。

以上是关于Alexa Skill Development 使用 flask-ask 和 ngrok 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Alexa Skill lambda 函数中正确指定 SSML?

sh 首次创建Alexa Skill - 上传技巧到S3 Snippet

java 第一次创建Alexa Skill - Test Intent Snippet

Alexa Skill Kit - 保存用户输入

在 Echo 上测试时无法识别 Alexa Skill

java 第一次从JSON Snippet创建Alexa Skill - SpeechletResponse