---
title: "Events"
slug: "dataflow-events"
description: "This page explains how event objects are handled within the Knovvu Data Flow platform. It introduces the concept of JSON-formatted events that trigger node processing and influence the flow of operations."
updated: 2026-03-11T09:01:45Z
published: 2026-03-11T09:01:45Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.knovvu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Events

## General Structure

| **Explanations** | **JSON** |
| --- | --- |
| `Name` *string* The name of the event. --- `Channel` *int* Channel of the event, first channel starts from 0. **Magic Channel Indexes** - **-1**: Invalid - **-2**: All --- `StartMsec` *int* Starting millisecond of the event. **Magic Millisecond Specifiers** - **-1**: Invalid --- `EndMsec` *int* End millisecond of the event. **Magic Millisecond Specifiers** - **-1**: Invalid --- `GroupId` *string* Utterance group this event belongs to. A new group is generated any time an [Audio Splitter](/v1/docs/dataflow-nodes-audio-splitters) detects speech. --- `Tags` *array of strings* The list of tags assigned to this event by [Event Tagger](/v1/docs/dataflow-nodes-event-tagger). --- `Data` *object \| null* The JSON object that contains the event specific data. This field makes each event unique in its own right. | ```json { "Name":"", "Channel":-1, "StartMsec":-1, "EndMsec":-1, "GroupId":"", "Tags":[], "Data":{} } ``` |

---

---

## Special Event Structures

---

### Age Change

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Age`*int* Age value in integer form. | ```json { "Name":"Age Change", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Age":43 } } ``` |

---

### CallStateUpdate

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `CallProperties`*object* Call properties for the event. You can see the Properties of CallProperties [here](/v1/docs/dataflow-messages#start). | ```json { "Name": "CallStateUpdate", "Channel": 0, "Data": { "CallProperties": { "ExternalId": "c1263961-d2eb-4", "UserProperties": { "PbxAgentId": "john.doe.pbx", "DeviceId": "", "AgentName": "", "ExternalId": "" }, "CustomerPhoneNumber": "0123456789", "Direction": 1, "AttachedData": {}, "CallerNumber": "0123456789", "CalledNumber": "9876543210", "CallStartTime": "1998-10-04 16:42:43.778 +0300" }, "EventTime": "1998-10-04 16:42:43.778 +0300", "EventType": 1 } } ``` |

---

### Change Insights

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Insights` string Semicolon separated insights. The names of the insights can be found in the GenerativeAI / Conversation Insights endpoint | ```json { "Name":"Change Insights", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Insights": "negative_feedbacks;improvement_areas;follow_up_actions" } } ``` |

---

### Chat Message

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string* Text Content of the chat message. Used for text based integrations. | ```json { "Name":"Chat Message", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Text": "Good morning DF." } } ``` |

---

### Chat Response

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string* Content of the first message. i.e what ChatGPT would respond within the UI. --- `ChatGPTResult` *array of objects* The “choices” object from ChatGPT response. The number of objects and their contents may be changed by OpenAI . You can check the choices object reference [from here](https://platform.openai.com/docs/api-reference/chat/object#chat/object-choices)*.* | ```json { "Name":"Chat Response", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "ChatGPTResult": [ { "finish_reason": "stop", "index": 0, "logprobs": null, "message": { "annotations": [], "content": "Good morning DF.", "refusal": null, "role": "assistant" } } ], "Text": "Good morning DF." } } ``` |

---

### Conversation Analyzer Result

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| .`Agent&amp;Customer` *object* Acoustic and sentiment analysis of the channel. **Show Properties** `AngerDurationMsec` *float* Total detected anger duration. --- `AverageSentimentResult` *float* Average of all sentiment results. --- `Blocks` *object* Also used as **Monologue,**when a channel speaks for a long time without stopping. **Show Properties** `BlockCount` *int* How many times a block-monologue occured. --- `BlockPerMinute` *float* BlockCount / Minute --- `BlockRatio` *float* BlockCount(channel)/BlockCount(total) --- `Blocks` *array of objects \| null* Information about each block. --- `TotalBlockDurationMsec` *float* Total duration of blocks for channel. --- `Confidence` *int* Average confidence score of all Speech Recognition outputs. --- `Hesitation` *object* Hesitation information of channel **Show Properties** `Hesitations` *array of objects* List of hesitation objects, each hesitation object consists of **StartMsec, EndMsec**and **Duration**information. --- `HesitationsPerMinute` *float* Number of hesitations / minute --- `Interrupt` *object* Interrupt information of channel **Show Properties** `Interrupts` *array of objects* List of Interrupt objects. Each object consists of **StartMsec, EndMsec**and **Duration**of the interruption. --- `InterruptsPerMinute` *float \| null* Number of Interrupts / minute --- `MaxAngerProbability` *float* Maximum probability of anger observed in conversation. --- `MonotonicityRatio` *int* Total Normal Speech Duration / Total Conversation Duration --- `SR` *array of objects* List of SR objects, for reference you can check [SR Milestone Event](/v1/docs/events#sr-milestone). --- `SpeechDurationMsec` *float* Speech duration in milliseconds --- `SpeedLetterPerSecond` *float* Total spoken letters / (SpeechDurationMsec / 1000) --- `CallDurationMsec` *int* Total Call Duration in milliseconds --- `ConclusionSentiment` *float* Conclusion sentiment score of conversation. | ```json { "Name": "Conversation Analyzer Result", "Channel": -1, "StartMsec": -1, "EndMsec": -1, "GroupId": "", "Data": { "Agent": { "AngerDurationMsec": 0.0, "AverageSentimentResult": 0.0, "Blocks": { "BlockCount": 0, "BlockPerMinute": 0.0, "BlockRatio": 0.0, "Blocks": null, "TotalBlockDurationMsec": 0.0 }, "Confidence": 0, "Hesitation": { "Hesitations": null, "HesitationsPerMinute": 0.0 }, "Interrupt": { "Interrupts": null, "InterruptsPerMinute": null }, "MaxAngerProbability": 0.0, "MonotonicityRatio": 0, "SR": [ { "AngerProbability": 0.0, "Confidence": 0.949999988079071, "EndTimeMsec": 4500, "Monotonicity": 0.0, "Sentiment": { "SentimentPhrases": null, "SentimentScore": 0.0 }, "StartTimeMsec": 37, "Text": "good morning ", "TurnId": "", "Words": null } ], "SpeechDurationMsec": 0.0, "SpeedLetterPerSecond": 0.0 }, "CallDurationMsec": 39361, "ConclusionSentiment": 0.0, } ``` |

---

### Conversation Insights

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `ServiceResult` *object* Contains the whole result in JSON Format responded from Generative AI - Conversation Insights end point. **Object Properties** `results` array of objects \| null contains the results in an array of objects **Object Properties** `actions` array of strings \| null Contains the actions taken in the call --- `conversation_result` string \| null Contains the conversation result --- `follow_up_actions` array of strings \| null Contains the list of actions to be taken after the call --- `Id` string \| null Id of the call --- `improvement_areas` array of strings \| null Contains a list of improvement areas related to the call --- `negative_feedbacks` array of strings \| null Contains a list of negative feedbacks to the agent in the call. --- `positive_feedbacks` array of strings \| null Contains a list of positive feedbacks to the agent in the call. --- `summary` string \| null Summary of the call. --- `topic` string \| null Detected topic of the call. | ```json { "Name":"Conversation Insights", "Channel":-2, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "ServiceResult":{ "results":[ { "actions":[], "conversation_result":"", "follow_up_actions":[], "id":"", "improvement_areas":[], "negative_feedbacks":[], "non_resolution_risk":"", "positive_feedbacks":[], "summary":"", "topic":"" } ] } } } ``` |

---

### Early Speech Ended

```json
{
        "Name": "Early Speech Ended",
        "Channel":-1|0|1,
        "StartMsec": >0,
        "EndMsec": >0,
        "GroupId": "a_valid_group_id"
        }
```

---

### Emotion

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `AngerProbability` *float* 0.0-1.0 exclusive anger probability of the audio content. --- `MonotonicityScore` *float* 0.0-1.0 exclusive monotonicity score of the audio content. --- `Prediction` *string* Emotion prediction of the audio data, can be either “**normal**” or “**angry**”. --- `Predictions` *array of objects* Array of objects, each object has the confidence score for it’s prediction. **Show Properties** `Label` *string* The prediction label, either “**normal**” or “**angry**” --- `Confidence` *float* 0.0-1.0 exclusive. The confidence of the prediction, | ```json { "Name":"Emotion", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "AngerProbability": 0.31643643975257874, "MonotonicityScore": 0.556348979473114, "Prediction": "normal", "Predictions": [ { "Confidence": 0.6835635900497437, "Label": "normal" }, { "Confidence": 0.31643643975257874, "Label": "angry" } ] } } ``` |

---

### End Of Segment

```json
{
        "Name": "End Of Segment",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### End Of TTS Fragment

```json
{
        "Name": "End Of TTS Fragment",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### Final Result

```json
{
        "Name": "FinalResult",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": ""
        }
```

---

### Gender Change

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Gender`*string* Detected Gender information. Can be either `male` or `female` | ```json { "Name": "Gender Change", "Channel":>=0, "StartMsec": >=0, "EndMsec": >=0, "GroupId": "a_valid_group_id", "Data": { "Gender":"male" } } ``` |

---

### Language Change

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Language`*string* Language tag. The language tags follow IETF standards. i.e. "en-US". | ```json { "Name": "Language Change", "Channel":>=0, "StartMsec": >=0, "EndMsec": >=0, "GroupId": "a_valid_group_id", "Data": { "Language":"en-US" } } ``` |

---

### Language Detected

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Language`*string* Language tag. The language tags follow IETF standards. i.e. "en-US". | ```json { "Name": "Language Detected", "Channel":>=0, "StartMsec": >=0, "EndMsec": >=0, "GroupId": "a_valid_group_id", "Data": { "Language":"en-US" } } ``` |

---

### Merge Audio Ended

```json
{
        "Name": "Merge Audio Ended",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### Merge Audio Started

```json
{
        "Name": "Merge Audio Started",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### RTG Notification

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `externalConversationId` *string* Id of conversation taken from startMessage.CallProperties.ExternalId. --- `scenarioId` *int* Id of the scenario defined in RTG Scenarios page. --- `agentId` *string* Agent id as it is defined in CA Users, it is acquired from sending a *Determine-User*request with parameters taken from [startMessage](/v1/docs/dataflow-messages-requests#Start).CallProperties.UserProperties. --- `typeId` *string* Can be one of the values below. `{ WORD: "1", SPEED: "2", MONOTONICITY: "3", SENTIMENT: "4" }` --- `notificationTime` *string* The date-time of when the notification was triggered. --- `value` *string* The type specific value of the event. i.e. in a *Word*scenario, the value is the word that triggered the notification. In a *Speed*scenario, it is the Letters Per Second value. etc. --- `sentence` *string \| undefined* In a **word**scenario, is the **whole sentence**the word originated from. --- `hasTriggeredAChecklist` *bool \| undefined* If the scenario trigger has started a checklist, the value is **true**, otherwise, it can be either **false**or ***undefined***. --- `checklistId` *int \| undefined* If this trigger was **originated**from an **agent checklist**, and not a *normal scenario*, the value **is the id**of the checklist. Otherwise, it is **undefined**. --- `checkedStatus` *bool \| undefined* If the checklist was triggered before its word count, this value is set to **true**, if the word count is reached, but the awaited words weren’t spoken, this event is triggered with the value **false**. On root scenarios this is always **undefined.** | ```json { "Name": "RTG Notification", "Channel":0, "StartMsec": -1, "EndMsec": -1, "GroupId": "0", "Data": { "externalConversationId": "string", "scenarioId":123 "agentId": "a_valid_agent_id", "typeId": "1", "notificationTime":"2025-04-28T08:44:33.308Z", "value": "appreciate", "sentence":"Thank you so much, I appreciate it." "hasTriggeredAChecklist":false, "checklistId":291, "checkedStatus":false } } ``` |

---

### RTG Scenarios

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Scenarios` *array of objects* The **agent**and **attached data**specific **scenarios that will be monitored in this session** as JSON objects. For the current object schema, refer to the *Conversational Analytics/ ext-api/v1/real-time-scenarios* | ```json { "Name": "RTG Scenarios", "Channel":0, "StartMsec": -1, "EndMsec": -1, "GroupId": "0", "Data": { "Scenarios":[] } } ``` |
|  |  |

---

### RTG State

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `externalConversationId` *string* Id of conversation taken from startMessage.CallProperties.ExternalId. --- `agentId` *string* Agent ID as it is defined in **CA Users**, it is acquired by sending a *Determine-User*request with parameters taken from [startMessage](/v1/docs/dataflow-messages-requests#Start).CallProperties.UserProperties. --- `eventType` *string* Can be one of the values below. `{CONVERSATIONSTART : 1, CONVERSATIONEND : 2, CONVERSATIONPAUSE : 3, CONVERSATIONRESUME : 4}` --- `eventTime` *string* The date-time of when the event occured. --- `payload` *string* *Stringified* JSON Payload object. **Payload** `languageCode` *string* Language code for the conversation, taken from node config and start message. The language tags follow IETF standards. i.e. "en-US" --- `textBased` *bool* **true** if the call is happening on text, **false** if communication is done through audio. --- `caStartMessage` object \| null Object directly copied from [**StartMessage.CA**](/v1/docs/dataflow-messages-requests#Start) | ```json { "Name": "RTG State", "Channel":0, "StartMsec": -1, "EndMsec": -1, "GroupId": "0", "Data": { "externalConversationId": "cd74c7b315384ca0", "agentId": "036d3721-7cc6-ade0-0842-39fcfd9ca1a6", "eventType": 1, "eventTime": "2025-04-28T07:53:40.638Z", "payload": "\"languageCode\":" "\"en-US\",\"textBased\":false,\"caStartMessage\":", } } ``` |
|  |  |

---

### RTG Supervisor Message

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `message` *string* Message content. --- `messageTime` *string* Creation datetime of the message --- `supervisorName`*string* Name of the supervisor. --- `supervisorSurname`*string* Surname of the supervisor. --- `supervisorId`*string* Id of the supervisor. | ```json { "Name": "RTG Supervisor Message", "Channel":0, "StartMsec": -1, "EndMsec": -1, "GroupId": "0", "Data": { "message":"a valid message from supervisor", "messageTime":"2024-05-13T14:31:17.1551801Z", "supervisorName":"admin", "supervisorSurname":"sys", "supervisorId":"5897290a-ebec-3abf-094d-39fc716458af" } } ``` |

---

### RTG Transcript

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `agentId` *string* Agent id as it is defined in **CA Users**, it is acquired from sending a *Determine-User*request with parameters taken from [startMessage](/v1/docs/dataflow-messages-requests#Start).CallProperties.UserProperties. --- `channel` *int* 1 for **agent**, 2 for **customer**. --- `externalConversationId` *string* Id of conversation taken from startMessage.CallProperties.ExternalId. --- `sentence`*string* Sentence spoken by the agent or the customer.. --- `sentimentResult` *int \| undefined* 1 for **positive,**2 for **negative**, 3 for **neutral**. Only available in Customer channel. --- `sentimentScore` *string \| undefined* *Stringified*sentiment score taken from the [Sentiment](/v1/docs/events#sentiment)event. Only available in Agent channel. --- `transcriptTime` *string* Date-time of when the sentence was spoken. | ```json { "Name": "RTG Transcript", "Channel":0, "StartMsec": -1, "EndMsec": -1, "GroupId": "0", "Data": { "agentId": "a_valid_agent_id", "channel": 1, "externalConversationId": "a83b8e569e634ca4", "sentence": "good morning", "sentimentResult": 3, "sentimentScore": "0", "transcriptTime": "2025-04-28T08:44:33.308Z" } } ``` |

---

### Sentiment

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `score` *float* ‘-1.0’ to ‘1.0’ inclusive sentiment score of the sentence for the group. --- `sentiment_phrases` *array of objects* An array of Sentiment Phrase objects, is generally empty if sentiment is neutral or v2 API is being used. **Sentiment Phrase Properties** `content` *string* The word that made the score non-neutral.. --- `sentiment` *string* The sentiment score of the word, can be **positive, negative, neutral, irony**. --- `severity` *string* How much the word affects the overall sentiment, can be **low, medium, high.** | ```json { "Name": "Sentiment", "Channel":>=0, "StartMsec": >=0, "EndMsec": >=0, "GroupId": "", "Data": { "score": -0.19, "sentiment_phrases": [ { "content": "terrifying", "sentiment": "negative", "severity": "medium" }, { "content": "amazing", "sentiment": "positive", "severity": "low" } ] } } ``` |

---

### Speech Ended

```json
{
        "Name": "Speech Ended",
        "Channel":-1|0|1,
        "StartMsec": >-1,
        "EndMsec": >-1,
        "GroupId": "a_valid_group_id"
        }
```

---

### Speech Started

```json
{
        "Name": "Speech Started",
        "Channel":-1|0|1,
        "StartMsec": >-1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### Speech Quality

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Mos` *float* 1.0-5.0 exclusive. MOS (Mean Opinion Score) value in float form. | ```json { "Name":"Age Change", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Mos":3.5134799480438232 } } ``` |

---

### SR Milestone

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string* Speech recognition result. --- `TextAttributes` *string* Comma separated attributes each service introduced into the event. **Possible Text Attributes** - recognized - punctuated, - normalized - corrected - filtered - streaming --- `Confidence` *float* 0.0-1.0 exclusive confidence of the utterance between StartMsec and EndMsec in Channel. --- `Words` *array \| null* An array of Word objects for each word in Text. Only available in certain Speech Recognition models. **Word Properties** `Word` *string* The word without any punctuation. --- `WordType`*string* Word type, can be **Normal**. --- `Confidence` *int* 0-100 exclusive confidence of recognized word --- `StartTimeMsec`*int* Start Time of word **from the beginning of the conversation**in milliseconds --- `EndTimeMsec`*int* End Time of word **from the beginning of the conversation**in milliseconds | ```json { "Name":"SR Milestone", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Text":"Good morning!", "TextAttributes":"recognized, punctuated", "Confidence": 0.92, "Words": [ { "Confidence":99, "EndTimeMsec": 279, "StartTimeMsec": 239, "Word": "good", "WordType":"Normal" }, { "Confidence":99, "EndTimeMsec": 879, "StartTimeMsec": 559, "Word": "morning", "WordType":"Normal" } ] } } ``` |

---

### SR Partial

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string \| undefined* Speech recognition result in an unpunctuated sentence form --- `PartialText` *string \| undefined* Partial text data, defined if raised by an SR Http node. --- `Words` *array of objects\| undefined* Defined if raised by an SR Http node. **Word Properties** `Word` *string* The word without any punctuation. --- `WordType`*string* Word type, can be **Normal**. --- `Confidence` *int* 0-100 exclusive confidence of recognized word --- `StartTimeMsec`*int* Start Time of word **from the beginning of the conversation**in milliseconds --- `EndTimeMsec`*int* End Time of word **from the beginning of the conversation**in milliseconds --- `Confidence` *float \| undefined* Confidence, is defined if raised by SR Http node. | ```json { "Name": "SR Partial", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Text": "Good morning!", "PartialText": "Good morning!", "Confidence": 0.92, "Words": [ { "Confidence": 99, "EndTimeMsec": 279, "StartTimeMsec": 239, "Word": "good", "WordType": "Normal" }, { "Confidence": 99, "EndTimeMsec": 879, "StartTimeMsec": 559, "Word": "morning", "WordType": "Normal" } ] } } ``` |

---

### Start Of Segment

```json
{
        "Name": "Start Of Segment",
        "Channel":-1,
        "StartMsec": -1,
        "EndMsec": -1,
        "GroupId": "a_valid_group_id"
        }
```

---

### Start Of TTS Fragment

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string \| undefined* The text used for the synthesis. --- `HasWaveHeader` *bool \| undefined* Declares if the TTS Fragment has a Wave Header. Must be considered **true** if undefined. | ```json { "Name": "Start Of TTS Fragment", "Channel": 0, "StartMsec": -1, "EndMsec": -1, "GroupId": "a_valid_group_id", "Data": { "Text": "okay mister john", "HasWaveHeader": false }, "Tags": [] } ``` |

---

### Subtitle Generated

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Subtitle Format` *string* A valid .**srt**formatted string. instead of line breaks, `\n` characters are placed instead.. | ```json { "Name":"Subtitle Generated", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Subtitle Format":"\n1\n00:00:00,037 --> hello" } } ``` |

---

### Summarize

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Summary` *string* Summary of the session in a punctuated string.. | ```json { "Name":"Summarize", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Summary":"A short summary of input" } } ``` |

---

### Topic Detected

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Topics` *array of objects* Top 3 detected topics for the session, in object form. **Object Properties** `Topic` *string* Topic detection response in a punctuated sentence. . | ```json { "Name":"Topic Detected", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "Topics": [ { "Topic": "Greetings and Address Confirmation" }, { "Topic": "Contact Information Update" }, { "Topic": "Customer Service Interaction" } ] } } ``` |

---

### Translation

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `Text` *string* Translated text result. --- `SourceText` *string \| null* Source text of translation. --- `SourceLanguage` *string \| null* Source Text’s Language tag. The language tags follow IETF standards. i.e. "en-US". --- `TargetLanguage` *string \| null* Outputted Text’s Language tag. The language tags follow IETF standards. i.e. "en-US". | ```json { "Name":"Translation", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"a_valid_group_id", "Data": { "Text":"Good morning!", "SourceText":"Buenos Dias!", "SourceLanguage":"es-ES", "TargetLanguage":"en-US" } } ``` |

---

### VA Async Output

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| The data contents are defined as an Activity Object. To learn more about activity objects, you can check [this link](https://learn.microsoft.com/en-us/dotnet/api/microsoft.bot.schema.activity?view=botbuilder-dotnet-stable) | ```json { "Name": "VAAsyncOutput", "Channel": 0, "StartMsec": -1, "EndMsec": -1, "GroupId": "", "Data": { "action": null, "attachmentLayout": null, "attachments": [], "callerId": null, "channelData": { "BargeInType": 0, "CustomAction": null, "CustomActionData": null, "CustomProperties": {}, "EndUser": { "Email": null, "Id": null, "Name": null, "Phone": null, "Twitter": null }, "HasExternalAudioContent": false, "IsSynchronizer": false, "ProjectName": "trial", "ResponseType": 0, "SrConfidence": null }, "channelId": "webchat-external", "code": null, "conversation": { "aadObjectId": null, "conversationType": null, "id": "f0d7cce8a6514cde", "isGroup": null, "name": null, "role": null, "tenantId": null }, "deliveryMode": null, "entities": null, "expiration": null, "from": null, "historyDisclosed": null, "id": "0d61639c-e572-48fa-8e58-641ad022f945", "importance": null, "inputHint": null, "label": null, "listenFor": null, "localTimestamp": null, "localTimezone": null, "locale": null, "membersAdded": null, "membersRemoved": null, "name": null, "reactionsAdded": null, "reactionsRemoved": null, "recipient": null, "relatesTo": null, "replyToId": null, "semanticAction": null, "serviceUrl": , "speak": null, "suggestedActions": null, "summary": null, "text": "trial hello", "textFormat": null, "textHighlights": null, "timestamp": null, "topicName": null, "type": "message", "value": null, "valueType": null } } ``` |
|  |  |

---

### VA Activity Object

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `ActivityObject` *object* **Must contain** the whole activity object in it. “serviceUrl”, “channelId”, “.conversation.id” will be added to the object if not provided. | ```json { "Name": "VA Activity Object", "Channel": 0, "StartMsec": -1, "EndMsec": -1, "GroupId": "", "Data": { "ActivityObject":{} } } ``` |

---

### VA External

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `ActivityObject` *object* Contains the activity object output of VA Sync API. --- `Text` *string \| undefined*** Contains the ActivityObject.text field if exists. | ```json { "Name": "VA External", "Channel": *any, "StartMsec": *any, "EndMsec": *any, "GroupId": "", "Data": { "ActivityObject":{} , "Text":"" } } ``` |

---

### VBCallEvent

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `AgentIdentifier` *string* Agent Id as defined in VB Interface --- `CallIdentifier` *string* Call Id as it is defined in [StartMessage](/v1/docs/dataflow-messages-requests#start).CallProperties.ExternalId --- `CallMetaData` *array of objects \| null* Call relevant *metadata* defined in VB. --- `CustomerPhoneNumber` *string* Customer Phone Number as defined in [StartMessage](/v1/docs/dataflow-messages-requests#start).CallProperties.CustomerPhoneNumber --- `EventType` *string* Event Type Enum in string format. --- `TenantId` *string* Tenant Id defined in VB --- `UserCode` *string* User code given to customer in VB. | ```json { "Name": "VBCallEvent", "Channel": 0, "StartMsec": -1, "EndMsec": -1, "GroupId": "", "Data": { "AgentIdentifier": "1234", "CallIdentifier": "459df5fd32c24317", "CallMetaData": [], "CustomerPhoneNumber": "12341234", "EventType": "CallStarted", "TenantId": "3a1b0a86-1030-e5f7-e730-91216357c85f", "UserCode": "12341234" } } ``` |

---

### VBStreamState

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `State` *string* Can be one of “**Start”, “Stop”**. --- `TransactionId` *string* VB transaction ID for starting or stopping transaction. | ```json { "Name":"VBStreamState", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId":"", "Data": { "State":"Start", "TransactionId":"a_valid_transaction_id" } } ``` |

---

### VBTransactionEvent

| **Explanations Of Data Contents** | **JSON** |
| --- | --- |
| `AgentIdentifier` *string* Agent Id as defined in VB Interface --- `CallIdentifier` *string* Call Id as it is defined in [StartMessage](/v1/docs/dataflow-messages-requests#start).CallProperties.ExternalId --- `CallMetaData` *array of objects \| null* Call relevant *metadata* defined in VB. --- `CustomerPhoneNumber` *string* Customer Phone Number as defined in [StartMessage](/v1/docs/dataflow-messages-requests#start).CallProperties.CustomerPhoneNumber --- `OperationResult` *object* **Object Properties** `ResultText` *string* Result information of the transaction event. --- `ResultType` *string* Result type in string enum. --- `TransactionDetails` *object* Contains the transaction specific details such as id, status, type, and completeness. **Object Properties** `IsComplete` *bool* Completeness of transaction. --- `Status` *string* Status enum in string format. --- `TransactionId` *int* Id of the transaction. --- `TransactionType` *string* Transaction type in string enum. --- `VoiceDetails` *object* Contains speech information such as total, stored, discarded, and required. **Object Properties** `DiscardedSpeech` *int* Length of discarded speech in milliseconds. --- `ProcessResult` *string* Result message of the process. --- `SpeechResult` *string* Result of the speech that was received. --- `StoredSpeech` *int* Length of total stored speech. --- `TotalRequiredSpeech` *int* How long the speech should be in milliseconds to finish transaction. --- `TotalSpeech` *int* DiscardedSpeech + StoredSpeech in milliseconds. --- `TenantId` *string* Tenant identifier defined in VB. --- | ```json { "Name":"VBTransactionEvent", "Channel":0, "StartMsec":-1, "EndMsec":-1, "GroupId":"", "Data": { "AgentIdentifier": "1234", "CallIdentifier": "459df5fd32c24317", "CallMetaData": null, "CustomerPhoneNumber": "12341234", "OperationResult": { "ResultText": "Audio collector started. Votg transaction is ongoing.", "ResultType": "Ongoing", "TransactionDetails": { "IsComplete": false, "Status": "Ongoing", "TransactionId": 26, "TransactionType": "Authentication" }, "VoiceDetails": { "DiscardedSpeech": 0, "ProcessResult": "ProcessResultNone", "SpeechResult": "SpeechStored", "StoredSpeech": 0, "TotalRequiredSpeech": 5000, "TotalSpeech": 0 } }, "TenantId": "3a1b0a86-1030-e5f7-e730-91216357c85f" } } ``` |
