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

  • From your webhook to Chatlayer.ai

Each message has two mandatory fields:

  • type: the messages type (carousel, buttons, list, media, text, โ€ฆ)

  • config: the message configuration

Text

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.

Button Template

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

Quick replies

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.

Generic template

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

List template

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

Attachment

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

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 updated

#1191: creation of subpage for multilanguage voice bots

Change request updated