--- 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-10-30T10:53:30Z published: 2026-10-30T10:53:30Z canonical: "docs.sestek.com/dataflow-events" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.sestek.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 } } ``` | --- ### AgentSpeechState | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `State` *string* One of `"Silent"`, `"Started"`, `"Middle"` or `"Ending"`. The new state of the agent speech. | ```json { "Name": "AgentSpeechState", "Channel": -1, "StartMsec": -1, "EndMsec": -1, "GroupId": "", "Data": { "State": "Started" } } ``` | --- ### AudioLogReport | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `IncomingText` *string \| undefined* Present when incoming batch audio has the Text field. | ```json { "Name": "AudioLogReport", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "IncomingText": "Good morning DF." } } ``` | | | --- ### 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&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": "" } ] } } } ``` | --- ### Dtmf Press | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `Digit` *string* The DTMF digit that was pressed. Announced by Barge In Announcer as a Digit barge-in, and appended by Dtmf Merger to the digit string it is currently accumulating. | ```json { "Name": "Dtmf Press", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Digit": "5" } } ``` | --- ### 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" } ``` --- ### Filler Word Filter Result | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `Result` *string* `"Speech"` when the turn is accepted, `"No Speech"` when it is rejected as a filler word. --- `Reason` *string* One of: `"Audio Length Exceeded"`, `"Bypassed by session parameters"` , `"Bypassed since input has more than one word"`, `"Text is a non-filler word"`or `"Input is not on the allow list"` . | ```json { "Name": "Filler Word Filter Result", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Result": "Speech", "Reason": "Text is a non-filler word" } } ``` | --- ### 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" } } ``` | --- ### Interruptive Barge In | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `Type` *string* Either `Voice` or `Digit`. | ```json { "Name": "Interruptive Barge In", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Type": "Voice" } } ``` | --- ### Kore AI Response | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `event` *string* Currently only “event_ack” is expected. --- `status` *string* currently only “acked” is expected. --- `timestamp` *string* Timestamp of the acknowledge method. --- `originalMessage` *object* Contains the original message that was acknowledged. | ```json { "Channel": 0, "Data": { "event": "event_ack", "originalMessage": { "botId": "{your_bot_id}", "conversationId": "2da0f01c4ec84dd1", "event": "agent_message", "experience": "voice", "transcript": "Hello welcome to call center" }, "status": "acked", "timestamp": "2026-03-16T07:57:26.696Z" }, "GroupId": "", "Name": "Kore AI Response", "Tags": [] } ``` | --- ### 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 Buffer Increased | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `TotalBufferDurationMsec` *int* Remaining duration of all queued batch audio, including the newly added segment, in milliseconds. | ```json { "Name": "Merge Audio Buffer Increased", "Channel": -1, "StartMsec": -1, "EndMsec": -1, "GroupId": "a_valid_group_id", "Data": { "TotalBufferDurationMsec": 5400 } } ``` | --- ### Merge Audio Buffer Progress | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `CurrentMessageDurationMsec` *int* Remaining duration of the batch segment currently being merged, in milliseconds. --- `TotalBufferDurationMsec` *int* Remaining duration of all queued batch audio, in milliseconds. | ```json { "Name": "Merge Audio Buffer Progress", "Channel": -1, "StartMsec": -1, "EndMsec": -1, "GroupId": "a_valid_group_id", "Data": { "CurrentMessageDurationMsec": 1800, "TotalBufferDurationMsec": 3200 } } ``` | --- ### 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" } ``` --- ### Merged Dtmf | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `Text` *string* The concatenation of multiple DTMF Press events. | ```json { "Name": "Merged Dtmf", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Text": "12345" } } ``` | --- ### Noise Filter Result | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `Result` *string* `"Speech"` when the segment is forwarded, `"No Speech"` when it is discarded as non-speech noise. --- `Reason` *string* Either `"Audio Length Exceeded"` or `"Inference Completed"` --- `Score` *float\|undefined* Confidence score. Only present when `Reason` is `"Inference Completed"`. --- `InferenceDelayMilliseconds` *int\|undefined* How long the inference call took, in milliseconds. Only present when `Reason` is `"Inference Completed"`. | ```json { "Name": "Noise Filter Result", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "Result": "Speech", "Reason": "Inference Completed", "Score": 0.87, "InferenceDelayMilliseconds": 42 } } ``` | --- ### 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 No Recognizable Speech | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `DetectedContent` *string* The SR service's own `detectedAudioContent` value, passed through as-is whenever it isn't `"recognizable-speech"`. --- `Detail` *string* A JSON dump of the full SR service response body, for diagnostics. | ```json { "Name": "SR No Recognizable Speech", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "DetectedContent": "noise", "Detail": "{\"detectedAudioContent\":\"noise\"}" } } ``` | --- ### 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 Audio Processing Complete | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `EndOfConversation` *bool* Lets the receiver know if it is the end of conversation. Currently all use cases send **true**. | ```json { "Name": "VA Audio Processing Complete", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "EndOfConversation": true } } ``` | --- ### 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": "" } } ``` | --- ### VA Silence Detected | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `SilenceType` *string* **“empty”** when no VAD events are received. Otherwise copies the **DetectedContent** field from [SR No Recognizable Speech](/v1/docs/dataflow-events#sr-no-recognizable-speech) event. | ```json { "Name": "VA Silence Detected", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "SilenceType": "empty" } } ``` | --- ### VA TTS Report Result | **Explanations Of Data Contents** | **JSON** | | --- | --- | | `MessageId` *string* The `id` of the originating VA External message's ActivityObject. --- `Success` *bool* Communicates if the reporting was successful. --- `Response` *object* The full JSON response body returned by VA Orchestrator Service. | ```json { "Name": "VA TTS Report Result", "Channel":>=0, "StartMsec":>=0, "EndMsec":>=0, "GroupId": "", "Data": { "MessageId": "a1b2c3d4", "Success": true, "Response": {} } } ``` | --- ### 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" } } ``` |