Skip to main content

Sample Renderer for Symphony Elements

Project description

sms-sdk-renderer-python

SDK renders symphony messages using precompiled Handlebars templates both in bots and in applications.

User Guide

Now, there are several message templates that you can choose:

Name Description
SIMPLE Renders a message in simple format
ALERT Renders a message formatted as an alert
INFORMATION Renders a general information messages
NOTIFICATION Renders a message formatted as a notification
TABLE Renders a collection of objects in the table format
LIST_TEMPLATE Renders a list of values
BUTTON Renders a button element
TEXTFIELD Renders a textfield element
CHECKBOX Renders a checkbox element
TEXTAREA Renders a textarea element
RADIOBUTTON Renders a radio button element
PERSONSELECTOR Renders a person selector element
DROPDOWN_MENU Renders a dropdown menu element
TABLE_SELECT Renders a table element
FORM Renders a form element

Prerequisites

Please make sure the following tools are installed:

  • pybars3==0.9.6

Install SDK

$ pip install sms-sdk-renderer-python

How to use

  • Import the sdk:
import sms_sdk_renderer_python.lib.sms_sdk_renderer as SmsRenderer
  • Create a message object like that, for the ALERT template:
alert_data = {
    "title": 'Informaiton Title',
    "content": 'This is a information message',
    "description": 'Information message description'
}

In the bot

  • In the code, compile your message using the command:
alert_message = SmsRenderer.renderInBot(alert_data, SmsRenderer.smsTypes['ALERT'])
  • Send the message with Symphony API SDK:
self.bot_client.get_message_client().send_msg(msg['stream']['streamId'], alert_message)
  • If you wish to create a form that contains many elements, use the renderForm(message, smsType):

A sample complex_form_data json object:

form_data = {
    "header" : {"title":"Test Form",
                "titleSize": 4,
                "formId": "test_form_id"},
    "body": [{"textfield":{
                "name":"exmaple-text-field",
                "placeholder": "example-placeholder",
                "required": "true",
                "masked": "true",
                "minlength": 1,
                "maxlength": 128
    }},
            {"textarea":{
                "name":"exmaple-text-area",
                "placeholder": "example-placeholder",
                "required": "true"
            }},
            {"checkbox":{
                "name":"example-name",
                "value":"example-value",
                "checked": "false",
                "text":"Red"
            }},
            {"dropdown_menu" : {
            "name":"dropdown-name",
            "required": "true",
            "options": [{"value":"value1", "selected":"true", "text":"First Option"},
                        {"value":"value2", "selected":"false", "text":"Second Option"},
                        {"value":"value3", "selected":"false", "text":"Third Option"} ]

            }},
            {"personselector":{
                "name":"person-selector-name",
                "placeholder":"example-placeholder",
                "required":"true"
            }},
            {"table_select":{
                    "select":{
                        "position":"right",
                        "type":"checkbox"
                    },
                    "header_list": ["H1", "H2", "H3"],
                    "body": [["A1", "B1", "C1"],
                             ["A2", "B2", "C2"],
                             ["A3", "B3", "C3"]],
                    "footer_list": ["F1", "F2", "F3"]
                    }}],
    "footer" : [
        {"button": {
            "name": "example-button",
            "type": "action",
            "text": "Submit"
        }},
        {"button": {
            "name": "example-button",
            "type": "reset",
            "text": "Cancel"
        }}],
    "form": ""

}

Render using:

SmsRenderer.renderForm(form_data, smsTypes['FORM'])

The output of the above function is:

<messageML>
  <form id="test_form_id">
    <h4>Test Form</h4>
    <text-field name="exmaple-text-field" placeholder="example-placeholder" required="true" masked="true" minlength="1" maxlength="128"></text-field>
    <textarea name="exmaple-text-area" placeholder="example-placeholder" required="true"></textarea>
    <checkbox name="example-name" value="example-value" checked="false">Red</checkbox>
    <select name="dropdown-name" required="true">
          <option value="value1" selected="true">First Option</option>
          <option value="value2" selected="false">Second Option</option>
          <option value="value3" selected="false">Third Option</option>
    </select>
    <person-selector name="person-selector-name" placeholder="example-placeholder" required="true"/>
    <table>
      <thead>
        <tr><td>H1</td><td>H2</td><td>H3</td><td><input type="checkbox" name="tablesel-header" /></td></tr>
      </thead>
      <tbody>
        <tr><td>A1</td><td>B1</td><td>C1</td><td><input type="checkbox" name="tablesel-header" /></td></tr><tr><td>A2</td><td>B2</td><td>C2</td><td><input type="checkbox" name="tablesel-header" /></td></tr><tr><td>A3</td><td>B3</td><td>C3</td><td><input type="checkbox" name="tablesel-header" /></td></tr>
      </tbody>
      <tfoot>
        <tr><td>F1</td><td>F2</td><td>F3</td><td><input type="checkbox" name="tablesel-header" /></td></tr>
      </tfoot>
    </table>
    <button name="example-button" type="action"> Submit</button>
    <button name="example-button" type="reset"> Cancel</button>
  </form>
</messageML>

In the client application

  • In the code, in the render function of the entity service, compile your message using the command:
compiledMessage = SmsRenderer.renderInApp(myMessageData, SmsRenderer.smsTypes.ALERT);
  • In the same render method, return the message like that:
return {
    template: compiledMessage
};

SDK API

Template type names are accessible by SmsRenderer.smsTypes constant, like so:

simpleMessageTemplate = SmsRenderer.smsTypes.SIMPLE;

Possible values are SIMPLE, ALERT, INFORMATION, NOTIFICATION, TABLE, LIST_TEMPLATE, BUTTON, TEXTFIELD, CHECKBOX, TEXTAREA, RADIOBUTTON, PERSONSELECTOR, DROPDOWN_MENU, TABLE_SELECT.

To get the compiled template in MessageML format, use the functions:

Syntax Parameters Where to use
SmsRenderer.renderInApp() messageData, messageType Extension application
SmsRenderer.renderInBot() messageData, messageType Bot
SmsRenderer.renderForm() messageData, messageType Bot

The complete list of message data object properties can be seen in the test examples:

Project details


Download files

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

Source Distribution

sms_sdk_renderer_python-0.1.8.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sms_sdk_renderer_python-0.1.8-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file sms_sdk_renderer_python-0.1.8.tar.gz.

File metadata

  • Download URL: sms_sdk_renderer_python-0.1.8.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for sms_sdk_renderer_python-0.1.8.tar.gz
Algorithm Hash digest
SHA256 2794d2169b207764856677b80a4fee6b398b81a3e027afed8704a8a5205bb6ab
MD5 ef29794829c1ae6c5bd105a99dec457a
BLAKE2b-256 d77012ddea138e1e6a1b293c69f4fa543ce01389b9baea43e49f7b108c5d16ca

See more details on using hashes here.

File details

Details for the file sms_sdk_renderer_python-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: sms_sdk_renderer_python-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for sms_sdk_renderer_python-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 19067dacb735c7cf9aad93f212cf6dda2a629f0952e52b6e16109b7ecdbcbe9c
MD5 ca2d176405a13b0dcd22f880223749b0
BLAKE2b-256 166b506228c1773760ee0293b6ed6790fd6d87bb47e698bf506f447863ecb091

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page