Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

ask-sdk-jinja-renderer is an SDK package for supporting template responses for skill developers, when built using ASK Python SDK. It provides jinja framework as a template engine to render the response loaded from the templateand inject the data passed and finally deserialize it toa custom response format

Project description

ASK SDK Jinja Renderer

ask-sdk-jinja-renderer is an SDK package for supporting template responses for skill developers, when built using ASK Python SDK. It provides jinja framework as a template renderer to render the response loaded from the template and inject the data passed and finally deserialize to custom response format.

Quick Start

If you already have a skill built using the ASK SDK builders, then you only need to do the following, to start using template resolvers to generate responses.

  • Import FileSystemTemplateLoader from ask_sdk_core and JinjaTemplateRenderer from ask_sdk_jinja_renderer packages.
  • Register the Loaders with appropriate parameters and also a Renderer into skill builder using add_loaders and add_renderer methods.
  • Create a template file as shown below and provide the path of the directory and its encoding scheme as parameters while initializing the loader.

example_app/my_skill.py

from ask_sdk_core.skill_builder import SkillBuilder
from ask_sdk_core.handler_input import HandlerInput
from ask_sdk_core.dispatch_components import AbstractRequestHandler
from ask_sdk_core.utils import is_request_type
from ask_sdk_core.view_resolvers import FileSystemTemplateLoader
from ask_sdk_jinja_renderer import JinjaTemplateRenderer
from ask_sdk_model import Response

sb = SkillBuilder()

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

    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        speech_text = "Hello!!"

        template_name = "responses"

        data_map = {
            'speech_text': speech_text,
            'card': {
                'type': 'Simple',
                'title': 'Jinja2 Template',
                'content': speech_text
            },
            'should_end_session': 'false'
        }

        return handler_input.generate_template_response(template_name, data_map, file_ext='jinja')

# Other skill components here ....

# Register all handlers, loaders, renderers, interceptors etc.
sb.add_request_handler(LaunchRequestHandler())
# Add default file system loader on skill builder
sb.add_loader(FileSystemTemplateLoader(dir_path="templates", encoding='utf-8'))
# Add default jinja renderer on skill builder
sb.add_renderer(JinjaTemplateRenderer())


skill = sb.create()

example_app/templates/responses.jinja

{
    "outputSpeech": {
        "type": "SSML",
        "ssml": "<speak>{{ speech_text }}</speak>"
    },
    "card": {
        "type": "{{ card.type }}",
        "title": "{{ card.title}}",
        "content": "{{ card.content }}"
    },
    "shouldEndSession": "{{ should_end_session }}"
}

Installation

Assuming that you have Python and virtualenv installed, you can install the package from PyPi as follows:

$ virtualenv venv
$ . venv/bin/activate
$ pip install ask-sdk-jinja-renderer

Usage and Getting Started

Getting started guides, SDK Features, API references, samples etc. can be found at Read The Docs

Got Feedback?

  • We would like to hear about your bugs, feature requests, questions or quick feedback. Please search for the existing issues before opening a new one. It would also be helpful if you follow the templates for issue and pull request creation. Please follow the contributing guidelines!!
  • Request and vote for Alexa features!

CHANGELOG

1.0

  • Initial release of Ask SDK Python Jinja Renderer Package.

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for ask-sdk-jinja-renderer, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size ask_sdk_jinja_renderer-1.0.0-py2.py3-none-any.whl (6.3 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size ask-sdk-jinja-renderer-1.0.0.tar.gz (5.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page