sms-sdk-renderer-node
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 | Renders a list of values |
BADGE | Renders a badge, to be used with other elements |
RFQ_CARD | Renders a Card, Base component for RFQ's |
RFQ_VALUE | Renders a Value panel, base component for RFQ's |
RFQ_QUOTE | Renders a RFQ Quote, main component for RFQ's |
RFQ_START_ACK | Renders a RFQ Quote with the rfq_acknowledged or rfq_initiated state |
RFQ_PRICED | Renders a RFQ Quote with the rfq_priced state |
RFQ_AGREED_PAY | Renders a RFQ Quote with the rfq_agreed_pay state |
RFQ_CONFIRMED | Renders a RFQ Quote with rfq_confirmed state |
RFQ_PASSED | Renders a RFQ Quote with rfq_passed state, it also handles timeout |
Prerequisites
Please make sure the following tools are installed:
- node.js (v8.11.3)
- npm (5.6.0)
Install SDK
- Add to your
package.json
file in the"dependencies"
property, this line:"sms-sdk-renderer-node": "github:SymphonyPlatformSolutions/sms-sdk-renderer-node"
- If you're developing client application, add this to your
webpack.config.js
file:
module: {
rules: [
{
test: /\.hbs$/,
loader: "handlebars-loader"
}
]
},
resolve:
{
alias: {
'handlebars': 'handlebars/dist/handlebars.js'
}
},
node: {
fs: 'empty'
}
How to use
- Import the sdk:
const { SmsRenderer } = require('sms-sdk-renderer-node');
- Create a message object like that, for the ALERT template:
const myMessageData = {
title: 'Message Title',
content: 'Message Content'
};
In the bot
- In the code, compile your message using the command:
const compiledMessage = SmsRenderer.renderBotMessage(myMessageData, SmsRenderer.smsTypes.ALERT);
- Send the message with Symphony API SDK:
Symphony.sendMessage(message.stream.streamId, compiledMessage, null, Symphony.MESSAGEML_FORMAT);
In the client application
- In the code, in the
render
function of theentity
service, compile your message using the command:
const compiledMessage = SmsRenderer.renderAppMessage(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:
const simpleMessageTemplate = SmsRenderer.smsTypes.SIMPLE;
Possible values are SIMPLE, ALERT, INFORMATION, NOTIFICATION, TABLE, LIST
.
To get the compiled template in MessageML
format, use the functions:
Syntax | Parameters | Where to use |
---|---|---|
SmsRenderer.renderAppMessage() | messageData, messageType | Extension application |
SmsRenderer.renderBotMessage() | messageData, messageType | Bot |
The complete list of message data object properties can be seen in the unit test examples.
Common Elements
SIMPLE
{
title: 'Simple Title',
content: 'This is a simple message'
};
ALERT
{
title: 'Alert Title',
content: 'This is a danger alert'
};
INFORMATION
{
title: 'Informaiton Title',
content: 'This is a information message',
description: 'Information message description'
};
NOTIFICATION
{
title: 'My Title',
// OPTIONAL - used to render alert syle notification
alert: true,
// Content can be a smiple text
content: 'My content',
// or an object that is rendered in </card>
content: {
header: 'Content header',
body: 'Content body'
},
description: 'My description',
comment: {
body: 'My comments'
},
assignee: {
displayName: 'John Smith'
},
showStatusBar: true,
type: {
name: 'message type'
},
priority: {
name: 'message priority'
},
status: {
name: 'message status'
},
labels: [
{
text: 'label1'
},
{
text: 'label2'
}
]
};
LIST
{
title: 'Phones List',
// Content can be a list of strings
content: [
"iPhone", "Samsung Galaxy", "Google Pixel 3"
]
// or a list of objects, header is rendered in bold
content: [
{
header: "iPhone",
body: " is an Apple device"
}
]
};
TABLE
[
{ "Manufacturer": "Apple", "Phone": "iPhone", "Operating System": "iOS" },
{ "Manufacturer": "Samsung", "Phone": "Galaxy", "Operating System": "Android" },
{ "Manufacturer": "Google", "Phone": "Google Pixel 3", "Operating System": "Android" }
];
Financial Elements
RFQ Initiated
dealerName: 'Hydra' state: state: 'rfq_initiated' action: 'sms-sparc/start-rfq' rfqId: 'f152f549-a2d9-4c92-9a60-f7dedc9f823c' product: product: 'IRS' currency: 'USD' index: '3M-LIBOR' clearingHouse: 'EUREX' start: date: 'spot' type: 'spot' tenor: date: '1y' type: 'single' value: firstValue: 1 sizeType: 'DV01' size: currency: 'USD' value: '3' sizeMultiplier: 'k' size: 'USD3k' payDirection: 'PAY' rate: 'Rate' colorIndex: 6 shortCode: 'w7' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568975971 shorthandMessage: 'RFQ sent.'
RFQ Aknowledged
dealerName: 'Hydra' state: messageId: '3x5S4lN27iH77E9nJ-k9kH___pKxvooAbQ' timestamp: 1568975975935 state: 'rfq_acknowledged' userId: 351775001411612 action: 'sms-sparc/dealer-ack' rfqId: 'f152f549-a2d9-4c92-9a60-f7dedc9f823c' product: product: 'IRS' currency: 'USD' index: '3M-LIBOR' clearingHouse: 'EUREX' start: date: 'spot' type: 'spot' tenor: date: '1y' type: 'single' value: firstValue: 1 sizeType: 'DV01' size: currency: 'USD' value: '3' sizeMultiplier: 'k' size: 'USD3k' payDirection: 'PAY' rate: 'Rate' colorIndex: 6 shortCode: 'w7' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568975971 shorthandMessage: 'Hydra acknowledged. Waiting for price.'
RFQ Priced
dealerName: 'Hydra' state: messageId: 'L_SVjfZGkjVbUp06rqVH_n___pKxvnNFbQ' timestamp: 1568975981754 state: 'rfq_priced' userId: 351775001411612 pay: price: '8' active: true receive: price: '5' active: false action: 'sms-sparc/dealer-price' rfqId: 'f152f549-a2d9-4c92-9a60-f7dedc9f823c' product: product: 'IRS' currency: 'USD' index: '3M-LIBOR' clearingHouse: 'EUREX' start: date: 'spot' type: 'spot' tenor: date: '1y' type: 'single' value: firstValue: 1 sizeType: 'DV01' size: currency: 'USD' value: '3' sizeMultiplier: 'k' size: 'USD3k' payDirection: 'PAY' rate: 'Rate' colorIndex: 6 shortCode: 'w7' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568975971 shorthandMessage: 'Hydra Price received.'
RFQ Agreed
dealerName: 'Hydra' state: messageId: 'F-nA1oeJwZGO5Psn1v95U3___pKxvmbVbQ' timestamp: 1568975984938 state: 'rfq_agreed_pay' userId: 351775001411610 pay: price: '8' action: 'sms-sparc/buyer-agree-pay' rfqId: 'f152f549-a2d9-4c92-9a60-f7dedc9f823c' product: product: 'IRS' currency: 'USD' index: '3M-LIBOR' clearingHouse: 'EUREX' start: date: 'spot' type: 'spot' tenor: date: '1y' type: 'single' value: firstValue: 1 sizeType: 'DV01' size: currency: 'USD' value: '3' sizeMultiplier: 'k' size: 'USD3k' payDirection: 'PAY' rate: 'Rate' colorIndex: 6 shortCode: 'w7' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568975971 shorthandMessage: 'Stark Industries agrees to pay 8.'
RFQ Confirmed
dealerName: 'Hydra' state: messageId: 'XsouTQ6gEoJ0vLMonkR1-X___pKxvkFZbQ' timestamp: 1568975994534 state: 'rfq_confirmed' userId: 351775001411612 userName: 'Clark Kent' action: 'sms-sparc/dealer-done' rfqId: 'f152f549-a2d9-4c92-9a60-f7dedc9f823c' product: product: 'IRS' currency: 'USD' index: '3M-LIBOR' clearingHouse: 'EUREX' start: date: 'spot' type: 'spot' tenor: date: '1y' type: 'single' value: firstValue: 1 sizeType: 'DV01' size: currency: 'USD' value: '3' sizeMultiplier: 'k' size: 'USD3k' payDirection: 'PAY' rate: 'Rate' colorIndex: 6 shortCode: 'w7' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568975971 shorthandMessage: 'Done @ 8. Hydra agrees to receive, Stark Industries agrees to pay.'
RFQ Timeout
state: state: 'rfq_passed' action: 'sms-sparc/dealer-timeout' rfqId: '58e0704a-ca59-4c01-a2e2-c3212622458a' product: product: 'OTC Option' rawText: 'Buy SPX US 07/31/19 P2425 European CASH 1' colorIndex: 7 shortCode: 'y9' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568984171 shorthandMessage: 'RFQ has ended.'
RFQ Passed
state: messageId: '5Mtui0pnyBSj1WWResDvFH___pKxNeeEbQ' timestamp: 1568984930427 state: 'rfq_passed' userId: 351775001411612 action: 'sms-sparc/dealer-pass' rfqId: '79191c6d-5b99-402b-ba4b-5d92ebc7f8aa' product: product: 'OTC Option' rawText: 'Buy SPX US 07/31/19 P2425 European CASH 1' colorIndex: 8 shortCode: 'e2' initiatorUserId: 351775001411610 initiatorCompanyName: 'Stark Industries' startTime: 1568984917 shorthandMessage: 'RFQ has ended.'