Categories:
Single messages response format
Description of the single message format, that allows sending a batch of messages at once
Introduction
The single message format consists on a way to send a batch of messages at once (in one single activity). Both the sender and the receiver should be capable of handling it, that is, “merging” several messages into a single one when sending, and do the reverse process when receiving.
When a channel enables singleMessage activity, it has to be prepared to process the activities sent, as they are not standard. This means doing the reverse process done in the bot, taking a single message and process every activity contained within as if they would have come
one by one. Note that if the content type is application/vnd.telefonica.aura.message.single.zip, the content must be unzipped first.
Configuration
To enable single message functionality in a channel, it must be configured with singleMessage property set to true.
This property belongs to Aura channel model: ResponseOptionsVersionParameters model.
Following is an example configuration of one channel with enabled singleMessage:
[
(...)
{
"responseOptions": {
"versions": {
"v1": {
"singleMessage": true,
}
}
},
"channel_id": "1234",
"name": "example"
(...)
}
(...)
]
How does single message format work?
If we want to send two simple messages, by default they will be processed as a batch, as explained in batch messages format, in order to ensure inputHint is correct.
We will, in this example, send two activities:
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"text": "Primer mensaje",
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "ignoringInput"
}
and
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"text": "Segundo mensaje",
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "acceptingInput"
}
However, if we active the single message mode as explained before (singleMessage: true) and try to send the same two messages in a batch, we will merge them together, in a container activity, and will send only this one:
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "acceptingInput",
"attachments": [
{
"contentType": "application/vnd.telefonica.aura.message.single",
"content": [
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"text": "Primer mensaje",
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "ignoringInput"
},
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"text": "Segundo mensaje",
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "acceptingInput"
}
],
"name": "singleMessage"
}
]
}
Note that all the activities in the batch are stored together in the content of one single attachment, with application/vnd.telefonica.aura.message.single content type and always inputHint set to acceptingInput. The channelData from the container activity (the outer-most), and therefore the correlator and dialogContext are copied from the last activity in the array (the last in the batch).
Single message mode (zipped)
If the content of a single message is big enough (specified in AURA_MAX_ATTACHMENT_JSON_SIZE env var, 10KB by default), the content will be zipped, and the content type will be application/vnd.telefonica.aura.message.single.zip.
With the previous example, we will send:
{
"type": "message",
"recipient": {
"id": "my-user",
"name": "test-user"
},
"channelData": {
"correlator": "5555",
"answersCallback": "http://localhost:3000"
},
"inputHint": "acceptingInput",
"attachments": [
{
"contentType": "application/vnd.telefonica.aura.message.single.zip",
"content": "eJztks1y0zAQx1/F6Bw7NnY+mhNMykxT6MAhDIdODmtpHYvYkiKtHUrww3DlNfpiSEmhDMxwgOGGTpb/uz/tx//2yAg/EFuw18395yfRC0e6i2DfyciAhQjedwJspHS07zDqNb//EhmLXDqwCRsxqUxHV1IFgtwqbaXarsI/r/EalMJmJbwmpE+iRir0gkPbS45vbeOVmsi4xXj8GJGUmioLLR603SVct+MA06pH64CkVmxxZDJQr/cf3z3PD8t6up5fTd9kl1V/8XISAxtGrLK6/R4InYVY9qCeSZEt7fJ68uqw81TlX/lRDomhOyMxtPQtOxMZZLM8zp9Oq7goOI8vsCziuchFXlTzNK34I6zz7Z0+TyzT3K316nfFfkpPp/AEujOB0KJzsD1NyiDs/ng5Dwu4BILQC9fWYgOkrSdWZcZhVk5inE8mcZEXGMM8z2Mh8pSnOMtmWe4RNbgbbfHmXJFjC7IdDsPo+GutQAS8bv3gfNhteE6Rv6zPcWBMI/lpfeNeiaSV3GqnK0o4WJHUaPV5y/Qw+bIj0iqgNsOwGbEGSgx+cd3WFxI47if/Aedo6L8B/8KA/8IxFTTOW2bzFZX1doo=",
"name": "singleMessage"
}
]
}