Hangup Events and Triggered Analytics

Overview

The Parloa Hangup Event is automatically triggered when a call ends, and it is represented in the debugger as both a Request and a Response type. This feature facilitates effective monitoring and troubleshooting of call flows. Additionally, the Hangup Event is recorded in the Analytics transactions, offering valuable insights into user engagement and system performance without necessarily triggering any additional events itself.

When a conversation is reset, variables with the "session" lifetime are set back to their default value, an empty string. Variables related to previous prompts are also cleared.

Custom Ending Actions

To perform custom actions when a call ends –

  1. Create a custom intent named PARLOA.EndConversation.

  2. Add this intent to the Global Intents Block.

  3. Define the actions to take place when the call ends, such as making a service call or updating the system status.

  4. Connect the intent to an End Conversation block.

The Hangup Event is specific to phone-based interactions. For other platforms like Textchat V2, different events signify the conversation's end.

Analytics and Webhooks

The Hangup Event is recorded as part of an Analytics Transaction, offering critical insights into user interactions and system performance. This record is made regardless of who ends the call, whether it's initiated by Parloa or the caller. To fully leverage this data, ensure that your Analytics Webhook is configured to acknowledge and process these specific transaction records.

After the call has ended, the Start Conversation block is triggered, marking the conversation's restart.

Here is an example of an Analytics Hangup Event:

[
  {
    "transactionId": "xxx",
    "requestTimestamp": "2023-03-02T17:11:45.602Z",
    "responseTime": 12,
    "userContextId": "xxx",
    "releaseId": "xxx",
    "requesterId": "+491xxx",
    "intent": {
      "name": "PARLOA.EndConversation",
      "initialState": {
        "id": "STATE.base",
        "name": "Conversation start",
        "dialogName": "main"
      },
      "handledByState": {
        "id": "",
        "name": "",
        "dialogName": ""
      },
      "handled": "locally",
      "explicitlyHandled": false,
      "nextState": {
        "id": "STATE.base",
        "name": "Conversation start",
        "dialogName": "main"
      }
    },
    "meta": {
      "errors": {
        "occurrences": 0,
        "affectedSteps": []
      },
      "warnings": {
        "occurrences": 0,
        "affectedSteps": []
      }
    },
    "variables": [],
    "platform": "phoneV2",
    "request": {
      "callMeta": {
        "instanceId": "xxx",
        "callId": "xxx",
        "callerId": "+491xxx",
        "sessionId": "+491xxx",
        "customerId": "xxx-demo",
        "production": false,
        "isPrivacyEnabled": false
      },
      "event": "HANGUP"
    },
    "response": {
      "callControlMessages": [],
      "continueListening": false,
      "prompt": "",
      "reprompt": "",
      "callMeta": {
        "instanceId": "xxx",
        "callId": "xxx",
        "callerId": "+491xxx",
        "sessionId": "+491xxx",
        "customerId": "xxx-demo",
        "production": false,
        "isPrivacyEnabled": false
      },
      "customSTT": {
        "type": "prebuild",
        "id": "generic"
      }
    }
  }
]

In the JSON example above, all identifiable information, such as ID's and phone numbers have been masked with "xxx" for privacy reasons.

Last updated