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:
{
"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.
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
{
"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.