Django为Amazon Echo创建技能库(Alexa)

django-echo的Python项目详细描述


django echo

Django为Amazon Echo创建技能库(Alexa)

开始

django echo主要由三个类组成:

  • echo.skill.EchoSkill:django的generic.view的一个子类,处理路由意图和处理请求数据。
  • echo.request.EchoRequest:amazon请求中json数据的一个小包装。
  • echo.response.EchoResponse:django的http.http response的一个子类,它知道如何生成有效的amazon echo响应。

创造技能

skill是一个将echoskill子类化的类,它提供意图处理程序:

from echo.skill import EchoSkill

class HoroscopeSkill(EchoSkill):
    def get_horoscope(self, request, sign):
        # Ignore the sign because astrology is bunk.
        return self.respond(
            "Today you need to act first and ask questions later!",
            card=None,
            should_end_session=True
        )

在amazon端,您可以设置一个名为GetHoroscope的意图,该意图 一个sign槽,当这个意图被调用时,这个get_horoscope方法 将使用插槽数据调用。

self.respond是一个helper方法,它实际上只是充当 传递到EchoResponse。也可以直接使用ssml EchoResponse将正确设置响应:

self.respond("<speak>Today you need to ask questions first and act later!</speak>")

然后你只需要将技能连接到你的url.py:

from django.conf.urls import url

from .views import HoroscopeSkill

urlpatterns = [
    url(
        regex=r'^horoscope/$',
        view=HoroscopeSkill.as_view(),
        name='horoscope_skill'
    )
]

用卡片回应

EchoSkill提供了一个创建简单卡的助手:

return self.respond(
    "What alexa should say",
    card=self.create_simple_card("The card title", "The card's content")
)

会话处理

EchoSkill将self.request设置为Echorequest的实例(它还保存 对self.http_request的http请求提供了会话 属性通过session属性:

sign = self.request.session.get('sign')

request.session.update({
    'has_requested_horoscope': True
})

如果使用EchoSkill.respond,则此会话数据将自动 附加到响应,否则在创建 响应:

return EchoResponse("Output text", session=self.request.session)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过两个整数数组对正整数和负整数进行排序   java无参数和默认构造函数混淆   java加载文件MD5的最快方法是什么?   java如何在变量声明中使用带“e”的float   java将项目导入到STS iMac   java在使用图像时旋转图像   java Break语句不起作用   java提供了错误类型Spring的id   java如何为多个变量设置相同的函数属性?   JavaMaven:如何添加编译阶段后生成的资源   java HashMap已损坏/性能问题   java Hibernate SQL中间表b/w父表和子表(不同类型)   java PDFbox找不到字体:/Helv   Java:向自实现的双链接列表添加排序函数   为使用Java BouncyCastle生成的X509Certificate提供密钥使用的安全性   java Hibernate在读写方面的性能   C#相当于Java的DataOutputStream?