Sending outbound messages

Note:

The current messages version is v2. See versioning for more information.

For sending messages, the ConversationAPI format is used.

You need to implement the transformation between the ConversationAPI format and the format for your channel.

ConversationAPI specification derivations

Even though Chatlayer follows the ConversationAPI standard, some changes were made to match specific Chatlayer use-cases better.

Media Message

media_message also contains a type field representing the type of the media passed. This can be any of the following values:

type value
Image 0
Video 1
File 2
Audio 3
Unknown -1

An example of how the payload may look:

Copy
Copied
{
  "media_message": {
    "url": "https://foo.com/bar.png",
    "type": 1
  }
}

Sending out messages

bundle.inputData.messages contains all the messages you need to process. These need to be filtered and transformed and then you can trigger the required API to send out the message.

Copy
Copied
const performSend = async (sdk, bundle) => {
    const transformedMessages = bundle.inputData.messages.map(message => {
        // This is a simple text example, but we support all ConversationAPI message types
        return message.text_message.text
    })

    // This will typically be the API you are currently implementing
    await sdk.request({
        url: "https://api.messaging.com/messages",
        method: "POST",
        body: transformedMessages
    })
}

Custom message types

Certain message types are not supported in the native ConversationAPI format. We provide those under the explicit_channel_message.CHATLAYER key.

All the types specified below will be JSON stringified, meaning you need to extract the actual object with JSON.parse(explicit_channel_message.CHATLAYER)

Quick replies

Copy
Copied
{
  "text": "This is the quick reply title",
  "quick_replies": [
    {
      "title": "Click me",
      "content_type": "text",
      "payload": "ukgbkn24kjnb",
      "image_url": "https://image.com/image1"
    }
  ]
}

Versioning

It is important to take versioning into account when developing your app. bundle.version will contain the version number that corresponds to the used message format. It is very important to take this into account so that your integration keeps working when a major change is made in the messaging format.

We'd love to hear from you!
Rate this content:
Still have a question?
 
Ask the community.