如何将 Python 库导入 Alexa Skill

How to import a Python library into Alexa Skill

我只是想将随机库导入我的 Alexa 技能,但每次我尝试在我的 lambda 函数代码中使用它时,我都会收到“请求的技能的响应有问题”(例如 index = random.randrange(len(array)))。我看到的答案从简单地将库放入 requirements.txt 到使用 zip 文件来完成。没有任何效果 and/or 是有道理的。感谢您的帮助。

random 库是 PSL 的一部分。您只需在脚本顶部添加 import random 和其他导入语句。对于非 PSL 库,您应该将它们添加到“requirements.txt”,然后在脚本中导入它们,就像您对 Node 和“package.json”文件所做的那样。

这是我根据 Alexa Developer Console 中的默认 Python Hello World 模板编辑的 LaunchIntent 版本。 import random 在第 8 行 import logging 之后添加到脚本中。

class LaunchRequestHandler(AbstractRequestHandler):
    """Handler for Skill Launch."""
    def can_handle(self, handler_input):
        # type: (HandlerInput) -> bool
        return ask_utils.is_request_type("LaunchRequest")(handler_input)

    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        rnum =  str(random.randint(0,9))
        speak_output = "Welcome, your random number is " + rnum

        return (
            handler_input.response_builder
                .speak(speak_output)
                .ask(speak_output)
                .response
        )

因为我将数字与字符串组合生成字符串,所以我必须将整数转换为字符串,仅此而已。

此外,在 Alexa 开发者控制台的编辑器顶部还有一个“CloudWatch Logs”按钮。单击它并检查您的最新日志流以了解可能发生的错误的输出。

例如,我不经常写Python而且我已经习惯了JavaScript的类型转换,我忘记在将随机数转换为字符串之前将其添加到一个字符串。我知道……坏习惯。 CloudWatch 日志中清楚地指出了该错误。我修好了它,一切都很顺利。