Sending activities
On this page you will learn how to send activities using your bot framework.
This page also describes how activityParams
and sessionParams
properties are sent.
Refer to Changing call settings for more information.
AudioCodes Bot API
See Introduction for full description of the syntax of activities.
To summarize, activities should be sent as displayed throughout this guide, with the
addition of the attributes
id
and timestamp
.
For example:
{
"id": "59f09f09-feb6-40d4-8852-b960502d9841",
"timestamp": "2020-10-18T15:22:35.211Z",
"type": "event",
"name": "hangup"
}
If you want to include activityParams
or sessionParams
properties, you
should
just add
them to the activity. For example:
{ "id": "4ddc321e-6888-451f-9014-9446ec22d64d", "timestamp": "2020-10-18T15:27:12.837Z", "type": "event", "name": "hangup", "activityParams": { "hangupReason": "completed successfully" } }
Microsoft Bot Framework
Activities are natively supported on Microsoft Bot Framework, so you can send them as described in the Bot Framework documentation.
If you want to include activityParams
or sessionParams
properties, you
should place them inside a channelData
property. For example:
{ "type": "event", "name": "hangup", "channelData": { "activityParams": { "hangupReason": "completed successfully" } } }
Microsoft Copilot Studio
Activity and session params can be sent with message to the user (Sending messages).
The following sample shows a custom payload sent from composer to VoiceAI Connect:
{ "activityParams": { "<parameter name 1>": "<parameter value>", "<parameter name 2>": "<parameter value>" } }
Microsoft Copilot Studio legacy
Activities are sent via bot Composer Framework see Sending actions to VoiceAI Connect on how to send activities.
The following sample shows a custom payload sent from composer to VoiceAI Connect:
[Activity type = event name = <event name> channelData = ${json(' { "activityParams": { "<parameter name 1>": "<parameter value>", "<parameter name 2>": "<parameter value>" } } ')} ]
Google Dialogflow
The messages sent by a Dialogflow agent are based on intent’s responses (on Dialogflow CX, responses are called fulfillment), which have a different syntax than that of the activities described throughout this guide. To overcome this, VoiceAI Connect uses two approaches, both of which can be used by the bot.
The first approach is using native Dialogflow responses. VoiceAI Connect automatically
translates supported responses into activities. For example, a Text Response is translated into a message
activity (for playing the text to the user). As another example, an intent
that
is marked to end the conversation is translated into a hangup
activity.
The second approach is for the bot to send activities according to VoiceAI Connect syntax. For
doing this, a Custom Payload response with an activities
property should be added
(see
below). The value of the activities
property should contain an array of activities
to
be executed by VoiceAI Connect.
activities
property will be discarded.
The following example shows a Custom Payload response for performing the hangup
activity:
{ "activities": [ { "type": "event", "name": "hangup" } ] }
If you want to include activityParams
or sessionParams
properties, you
should
add
them to the activity. For example:
{ "activities": [ { "type": "event", "name": "hangup", "activityParams": { "hangupReason": "completed successfully" } } ] }
How to add Custom Payload responses?
As described above, Custom Payload responses are used for sending activities by the bot.
For advanced usages, Custom Payload responses could also be used for setting
activityParams
for the native Dialogflow response and sessionParams
which would be applied to the session
outside the scope of an activity.
Documentation regarding Custom Payload responses can be found in the following links:
The following table lists the properties that are supported on Custom Payload responses:
Property | Description |
---|---|
activities |
Array of activities to be executed by VoiceAI Connect. The activities will be executed after any native Dialogflow responses. |
activityParams | Parameters applied to the native Dialogflow response. |
sessionParams | Parameters applied to the whole session. |
The following example shows how Custom Payload can be configured through the Dialogflow user interface:
Dialogflow Webhook examples
This section provides advanced examples of using Dialogflow ES webhooks for sending activities.
This is an example of handling text messages and performing sendMetadata
:
function fallback(agent) { const participant = request.body.originalDetectIntentRequest.payload.parameters.participant; agent.add(new Payload('PLATFORM_UNSPECIFIED', { activities: [ { name: 'sendMetaData', type: 'event', value: { participant: participant, text: request.body.queryResult.queryText } } ] }, { rawPayload: true, sendAsMessage: true })); }
This is an example of a webhook that handles the WELCOME
event and
performs startRecognition
to all participants:
function welcome(agent) { const activities = request.body.queryResult.outputContexts.find( (c) => c.name.endsWith('welcome')).parameters.participants.map( (p) => ({ activityParams: { targetParticipant: p.participant }, name: 'startRecognition', type: 'event' })); const payload = new Payload( 'PLATFORM_UNSPECIFIED', { activities }, { rawPayload: true, sendAsMessage: true } ); agent.add(payload); }