/ask-sdk-jinja-renderer/README.rst

https://github.com/alexa/alexa-skills-kit-sdk-for-python · ReStructuredText · 115 lines · 86 code · 29 blank · 0 comment · 0 complexity · b05322904ae7c6f5de5f20a6c2fa412e MD5 · raw file

  1. ====================================================
  2. ASK SDK Jinja Renderer
  3. ====================================================
  4. ask-sdk-jinja-renderer is an SDK package for supporting template responses for skill developers, when built using
  5. ASK Python SDK. It provides jinja framework as a template renderer to render the response loaded from the
  6. template and inject the data passed and finally deserialize to custom response format.
  7. Quick Start
  8. -----------
  9. If you already have a skill built using the ASK SDK builders, then you only need to do the following,
  10. to start using template resolvers to generate responses.
  11. - Import FileSystemTemplateLoader from ask_sdk_core and JinjaTemplateRenderer from ask_sdk_jinja_renderer packages.
  12. - Register the Loaders with appropriate parameters and also a Renderer into skill builder using add_loaders and
  13. add_renderer methods.
  14. - Create a template file as shown below and provide the path of the directory and its encoding scheme as parameters while
  15. initializing the loader.
  16. example_app/my_skill.py
  17. ~~~~~~~~~~~~~~~~~~~~~~~
  18. .. code-block:: python
  19. from ask_sdk_core.skill_builder import SkillBuilder
  20. from ask_sdk_core.handler_input import HandlerInput
  21. from ask_sdk_core.dispatch_components import AbstractRequestHandler
  22. from ask_sdk_core.utils import is_request_type
  23. from ask_sdk_core.view_resolvers import FileSystemTemplateLoader
  24. from ask_sdk_jinja_renderer import JinjaTemplateRenderer
  25. from ask_sdk_model import Response
  26. sb = SkillBuilder()
  27. class LaunchRequestHandler(AbstractRequestHandler):
  28. """Handler for skill launch."""
  29. def can_handle(self, handler_input):
  30. # type: (HandlerInput) -> bool
  31. return is_request_type("LaunchRequest")(handler_input)
  32. def handle(self, handler_input):
  33. # type: (HandlerInput) -> Response
  34. speech_text = "Hello!!"
  35. template_name = "responses"
  36. data_map = {
  37. 'speech_text': speech_text,
  38. 'card': {
  39. 'type': 'Simple',
  40. 'title': 'Jinja2 Template',
  41. 'content': speech_text
  42. },
  43. 'should_end_session': 'false'
  44. }
  45. return handler_input.generate_template_response(template_name, data_map, file_ext='jinja')
  46. # Other skill components here ....
  47. # Register all handlers, loaders, renderers, interceptors etc.
  48. sb.add_request_handler(LaunchRequestHandler())
  49. # Add default file system loader on skill builder
  50. sb.add_loader(FileSystemTemplateLoader(dir_path="templates", encoding='utf-8'))
  51. # Add default jinja renderer on skill builder
  52. sb.add_renderer(JinjaTemplateRenderer())
  53. skill = sb.create()
  54. example_app/templates/responses.jinja
  55. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  56. .. code-block:: json
  57. {
  58. "outputSpeech": {
  59. "type": "SSML",
  60. "ssml": "<speak>{{ speech_text }}</speak>"
  61. },
  62. "card": {
  63. "type": "{{ card.type }}",
  64. "title": "{{ card.title}}",
  65. "content": "{{ card.content }}"
  66. },
  67. "shouldEndSession": "{{ should_end_session }}"
  68. }
  69. Installation
  70. ~~~~~~~~~~~~~~~
  71. Assuming that you have Python and ``virtualenv`` installed, you can
  72. install the package from PyPi as follows:
  73. .. code-block:: sh
  74. $ virtualenv venv
  75. $ . venv/bin/activate
  76. $ pip install ask-sdk-jinja-renderer
  77. Usage and Getting Started
  78. -------------------------
  79. Getting started guides, SDK Features, API references, samples etc. can
  80. be found at `Read The Docs <https://alexa-skills-kit-python-sdk.readthedocs.io/en/latest/>`_
  81. Got Feedback?
  82. -------------
  83. - We would like to hear about your bugs, feature requests, questions or quick feedback.
  84. Please search for the `existing issues <https://github.com/alexa/alexa-skills-kit-sdk-for-python/issues>`_ before opening a new one. It would also be helpful
  85. if you follow the templates for issue and pull request creation. Please follow the `contributing guidelines <https://github.com/alexa/alexa-skills-kit-sdk-for-python/blob/master/CONTRIBUTING.md>`_!!
  86. - Request and vote for `Alexa features <https://alexa.uservoice.com/forums/906892-alexa-skills-developer-voice-and-vote>`_!