Message types
Chatlayer.ai supports different types of chat messages, each with its own object structure. Chat messages can be sent:
- In the response from the API plugin
Each message has two mandatory fields:
- type: the messages type (carousel, buttons, list, media, text, …)
- config: the message configuration
A text message includes a simple bot text message.
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"text": "Hi, I'm a chatbot"
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Property | Value | Description |
text | string | The user test message. |
A button template includes a simple bot text message and an array of button objects.
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "button",
"text": "Hello, in which language can I help you?",
"buttons": [
{
"type": "postback",
"title": "Nederlands",
"payload": "437a034cde170b50de1b6a87d1cba104e39b1f6e"
},
{
"type": "postback",
"title": "English",
"payload": "a6a318dd6afe997f282b3c7472e038a2e0f4046a"
},
]
}
}
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Message object for button template:
Property | Value | Description |
attachment | object | The attachment object. |
Attachment object:
Property | Value | Description |
type | string | The attachment type (template) |
payload | object | The attachment payload object. The object structure depends of the attachment type |
Attachment payload object:
Property | Value | Description |
template_type | string | The template type (button) |
text | string (optional) | The text above the buttons ( only for a button template type) |
buttons | array | An array of button objects |
Button object:
Property | Value | Description |
type | string | The button type (web_url - postback - phone_number - element_share) |
title | string | The button caption |
payload | string (will contain the phone number when type is phone_number) - optional | The button payload. Only for postback type buttons.
This is an Opaque identifier please don't try to change or extract meaning out of it. |
url | string - optional | The button url. Only for url type buttons |
A quick reply message includes a simple bot text message and an array of quick reply objects.
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"text": "Hello, in which language can I help you?",
"quick_replies": [
{
"content_type": "text",
"title": "Nederlands",
"payload": "c3e30be2f30687fea0ae419acaeb9d77261631a9",
"image_url": "https://domain/logo.png"
},
{
"content_type": "text",
"title": "English",
"payload": "2e29412e82c8eea8c8b0c170661070d28929a900",
"image_url": "https://domain/logo.png"
},
]
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Message object for quick replies:
Property | Value | Description |
text | string | The text before the quick replies. |
quick_replies | array | An array of quick reply objects |
Quick reply object:
Property | Value | Description |
content_type | string | The quick reply content type (text) |
title | string | The button caption |
payload | string | The quick reply payload.
This is an Opaque identifier please don't try to change or extract meaning out of it. |
A generic template (carousel) includes a list of generic template elements. The generic template element is a simple structured message that includes a title, subtitle, image, and up to three buttons
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
"elements": [
{
"title": "Language",
"subtitle": "Please set your language",
"image_url": "https://domain/lang.png",
"item_url": "https://domain/lang",
"buttons": [
{
"type": "postback",
"title": "Nederlands",
"payload": "f0512bd2fcddc53963056dc0d63b52b8caa902ff"
},
{
"type": "postback",
"title": "English",
"payload": "4562ae76c34a13647fab90425c68a486b8acf356"
},
]
}
]
}
}
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Message object for generic template:
Property | Value | Description |
attachment | object | The attachment object. |
Attachment object:
Property | Value | Description |
type | string | The attachment type (template) |
payload | object | The attachment payload object. The object structure depends of the attachment type |
Attachment payload object:
Property | Value | Description |
template_type | string | The template type (generic) |
elements | array | An array of generic template elements (carousel cards) |
Generic template element object:
Property | Value | Description |
title | string | The carousel card title |
subtitle | string | The carousel card subtitle |
image_url | string | The carousel card image |
item_url | string | The carousel card url. When the user clicks the image the web page opens in a new browser tab. |
buttons | array | An array of button objects |
Button object:
Property | Value | Description |
type | string | The button type (web_url - postback - phone_number - element share) |
title | string | The button caption |
payload | string (will contain the phone number when type is phone_number) - optional | The button payload. Only for postback type buttons.
This is an Opaque identifier please don't try to change or extract meaning out of it. |
url | string - optional | The button url. Only for url type buttons |
The list template is a list of 2-4 structured items with an optional global button rendered at the bottom. Each item may contain a thumbnail image, title, subtitle, and one button. You may also specify a default_action object that sets a URL that will be opened when the item is tapped.
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "list",
"elements": [
{
"title": "Language",
"subtitle": "Select your language",
"image_url": "https://domain/lang.png",
"default_action": {
"type": "web_url",
"url": "default_url"
}
"buttons": [
{
"type": "postback",
"title": "Nederlands",
"payload": "76601d56d0619ef87552bbfbbfcd714c4fda513b"
}
]
}
],
"buttons": []
}
}
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Message object for list template:
Property | Value | Description |
attachment | object | The attachment object. |
Attachment object:
Property | Value | Description |
type | string | The attachment type (template) |
payload | object | The attachment payload object. The object structure depends of the attachment type |
Attachment payload object:
Property | Value | Description |
template_type | string | The template type (list) |
elements | array | An array of list elements |
buttons | array | An array of general list button objects |
List template element object:
Property | Value | Description |
title | string | The carousel card title |
subtitle | string | The carousel card subtitle |
image_url | string | The carousel card image |
default_action | object | The default action when the user taps the list item. |
buttons | array | An array of list item button objects |
Default action object:
Property | Value | Description |
type | string | The action type (web_url) |
url | string | The action ur. When the user taps the list element this web page will open in a new browser tab. |
Button object:
Property | Value | Description |
type | string | The button type (web_url - postback - phone_numberl - element share) |
title | string | The button caption |
payload | string (type phone_number) - optional | The button payload. Only for postback type buttons.
This is an Opaque identifier please don't try to change or extract meaning out of it. |
url | string - optional | The button url. Only for url type buttons |
An attachment represents a file such as images and video.
Request format:
{
"senderId": "a7355930-fa92-11e7-8308-2f056e75d1ee",
"message": {
"attachment": {
"type": "image"
"payload": {
"url": "image_url",
}
}
},
"messageCounter": 1,
"verifyToken": "8wMsLZkdDPT64nqh"
}
Message object for attachment:
Property | Value | Description |
attachment | object | The attachment object. |
Attachment object:
Property | Value | Description |
type | string | The attachment type (image-video) |
payload | object | The attachment payload object. The object structure depends of the attachment type |
Attachment payload object:
Property | Value | Description |
url | string | The attachment url |
Rich text is text to which formatting is applied. Possible formatting is bold, italic, underlined, hyperlink to URL, hyperlink to bot dialog, heading (1-4), bulleted list and ordered list.
Request format:
{
senderId: 'a7355930-fa92-11e7-8308-2f056e75d1ee',
verifyToken: 'e63131e1-459f-45aa-be42-666e1e4ef197',
message: {
template: {
__typename: 'RichTextMessageTemplate',
order: 1,
configTranslations: [Object]
},
richText: '<p>Paragraph</p>\n' +
'<p><strong>Bold</strong></p>\n' +
'<p><em>Italic</em></p>\n' +
'<p><u>Underlined</u></p>\n' +
'<p><a href="https://www.sinch.com" target="_blank" rel="noopener noreferrer">Hyperlink</a></p>\n' +
'<p><a href="f36f9056-2659-4d59-8940-4e9c7d3855a3" target="_blank" rel="noopener noreferrer">Go to bot dialog</a></p>\n' +
'<h1>Heading 1</h1>\n' +
'<h2>Heading 2</h2>\n' +
'<h3>Heading 3</h3>\n' +
'<h4>Heading 4</h4>\n' +
'<ul>\n' +
'<li>Bulleted list</li>\n' +
'</ul>\n' +
'<ol>\n' +
'<li>Ordered list</li>\n' +
'</ol>',
type: 'richText'
},
messageCounter: 2,
nlp: { intent: { name: null, score: null } },
dialogstate: {
id: 'f444b20b-370a-434d-af00-822cbce056ec',
name: 'Introduction',
label: null
}
}
Message object for attachment:
Property | Value | Description |
richText | string | The rich text message |
Last modified 11mo ago