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
renderfunction of theentityservice, compile your message using the command:
compiledMessage = SmsRenderer.renderInApp(myMessageData, SmsRenderer.smsTypes.ALERT);
- In the same
rendermethod, 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:
- SIMPLE message example
- ALERT message example
- INFORMATION message example
- NOTIFICATION message example
- TABLE message example
- LIST_TEMPLATE message example
- BUTTON message example
- TEXTFIELD message example
- RADIOBUTTON message example
- PERSONSELECTOR message example
- DROPDOWN_MENU message example
- TABLE_SELECT message example
- FORM message example
Metadata
Release files for sms-sdk-renderer-python 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sms_sdk_renderer_python-0.1.8.tar.gz | 6.4 kB | Without provenance | Details for sms_sdk_renderer_python-0.1.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sms_sdk_renderer_python-0.1.8-py3-none-any.whl | Python 3 | none | any | Details for sms_sdk_renderer_python-0.1.8-py3-none-any.whl |
Total release size: 21.4 kB
Release files / sms_sdk_renderer_python-0.1.8.tar.gz
| Download URL | sms_sdk_renderer_python-0.1.8.tar.gz |
|---|---|
| Size | 6.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2794d2169b207764856677b80a4fee6b398b81a3e027afed8704a8a5205bb6ab
|
|
BLAKE2b-256 checksum How to use checksums |
d77012ddea138e1e6a1b293c69f4fa543ce01389b9baea43e49f7b108c5d16ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / sms_sdk_renderer_python-0.1.8-py3-none-any.whl
| Download URL | sms_sdk_renderer_python-0.1.8-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19067dacb735c7cf9aad93f212cf6dda2a629f0952e52b6e16109b7ecdbcbe9c
|
|
BLAKE2b-256 checksum How to use checksums |
166b506228c1773760ee0293b6ed6790fd6d87bb47e698bf506f447863ecb091
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for sms-sdk-renderer-python 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.