Links

Defining Custom Action Payloads

Valid JSON and Handlebars templates are allowed. Below is an example of a custom payload that uses all of the available attributes and their respective properties:
{
"automationName": "{{automationName}}",
"feedName": "{{feedName}}",
"text": "{{message.text}}",
"sentiment": "{{{message.sentiment}}}",
"sentimentScore": {{message.sentimentScore}},
"aspectSentiments": {{{toJSON message.aspectSentiments}}},
"aspectSentimentScores": {{{toJSON message.aspectSentimentScores}}},
"categories": {{{toJSON message.categories}}},
"intents": {{{toJSON message.intents}}},
"topics": {{{toJSON message.topics}}},
"actor": "{{{message.actor}}}",
"externalUserId": "{{{message.externalUserId}}}",
"originName": "{{{message.originName}}}",
"originUrl": "{{{message.originUrl}}}",
"conversationUrl": "{{{message.conversationUrl}}}",
"sourceName": "{{{message.sourceName}}}",
"id": "{{{message.id}}}",
"conversationId": "{{{message.conversationId}}}",
"externalId": "{{{message.externalId}}}",
"mentionedAt": "{{message.mentionedAt}}",
"createdAt": "{{message.createdAt}}",
"updatedAt": "{{message.updatedAt}}",
"originCreatedAt": "{{message.originCreatedAt}}"
}

Iterating message properties

If you have different needs—Handlebars provides built-in helpers like #each to iterate arrays:
{
"automationName": "{{automationName}}",
"feedName": "{{feedName}}",
"text": "{{message.text}}",
"sentiment": "{{{message.sentiment}}}",
"sentimentScore": {{message.sentimentScore}},
"aspectSentiments": [
{{#each message.aspectSentiments}}
{
"classifier": "{{{name}}}",
"sentiment": "{{sentiment}}"
},
{{/each}}
],
"aspectSentimentScores": [
{{#each message.aspectSentimentScores}}
{
"classifier": "{{{name}}}",
"score": {{sentiment}}
},
{{/each}}
],
"categories": [
{{#each message.categories}}
"{{.}}",
{{/each}}
],
"intents": [
{{#each message.intents}}
"{{.}}",
{{/each}}
],
"topics": [
{{#each message.topics}}
"{{.}}",
{{/each}}
],
"actor": "{{{message.actor}}}",
"externalUserId": "{{{message.externalUserId}}}",
"originName": "{{{message.originName}}}",
"originUrl": "{{{message.originUrl}}}",
"conversationUrl": "{{{message.conversationUrl}}}",
"sourceName": "{{{message.sourceName}}}",
"id": "{{{message.id}}}",
"conversationId": "{{{message.conversationId}}}",
"externalId": "{{{message.externalId}}}",
"mentionedAt": "{{message.mentionedAt}}",
"createdAt": "{{message.createdAt}}",
"updatedAt": "{{message.updatedAt}}",
"originCreatedAt": "{{message.originCreatedAt}}"
}
The example above will result in the following JSON output:
{
automationName: 'Complaints Sync',
feedName: 'Complaints',
text: 'Example message text',
sentiment: 'Very Negative',
sentimentScore: -0.7666666706403097,
aspectSentiments: [ { name: 'Complaint', sentiment: 'Very Negative' } ],
aspectSentimentScores: [ { name: 'Complaint', sentiment: -0.75 } ],
categories: [ 'Complaint' ],
intents: [],
topics: [],
actor: 'Full Name',
externalUserId: 'external-user-id',
originName: 'Tracker',
originUrl: 'https://example-issue-tracker.com/ticket/id',
conversationUrl: 'https://hub.caravelapp.com/conversations/e0e04197-7bae-4b0d-9fcb-c7cd214e58f4',
sourceName: 'Tracker',
id: 'a2cb012e-0162-4eb0-b979-2f339eecfd4e',
conversationId: 'e0e04197-7bae-4b0d-9fcb-c7cd214e58f4',
externalId: 'external-tracker-id',
mentionedAt: '2021-02-05T01:03:43.722',
createdAt: '2021-02-05T01:03:44.516',
updatedAt: '2021-02-05T01:03:48.349',
originCreatedAt: '2021-02-05T01:03:43.722'
}