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)