How to set up Webhook integration

This guide explains how to configure Webhook integration with third-party web applications and services, for sending events related to calls.

Created: August 2023

Updated: March 2024

Permalink: https://wildix.atlassian.net/wiki/x/AYCODg

Introduction

Webhook integration (currently, in Beta) allows to connect different third-party web applications and services by sending events related to calls.  

Requirements 

  • WMS 6.03
  • Cloud Analytics enabled in WMS -> PBX -> Features (it is activated by default if a PBX or whole WMS Network are running in the Cloud). 
    For more details, see documentation WMS Settings Menu - Admin Guide (see the Features section).

How to configure the integration

1. Go to WMS -> PBX -> Integrations -> Cloud integrations tab

Note: In case of WMS version lower than 6.05.20240119.1, the tab is named Calendars (or x-bees in case of a PBX with x-bees license).

2. Click on the Webhook integration -> click Install 

3. On the Connect integration screen, fill out the following fields:

Select transmission type for sending the events:

  • WebHook: POST requests are sent to the URL, specified by customer
  • AWS SQS: events are sent to AWS SQS queue


a) In case of WebHook transmission type:

  1. In the Target field, indicate the URL where the data should be sent to. 
  2. Secret is generated automatically and cannot be edited. 
  3. Choose type of events: 
    1. Call start
    2. Call update
    3. Call end
    4. User presence
    5. User presence telephony


      User presence returns user status (e.g. Available, Away, Busy) status message and time, as well as location. For the User presence telephony option, the following statuses are supported:
      • registered (registered and idle)
      • ringing (in ringing state)
      • talking (in conversation)
      • rt (in conversation and ringing state)

b) In case of SQS transmission type:

  1. In the Target field, indicate the SQS URL where the data should be sent to.
  2. Enter SQS Key and Secret in the relevant fields. 
  3. Choose type of events: 
    1. Call start
    2. Call update
    3. Call end
    4. User presence
    5. User presence telephony

User presence returns user status (e.g. Available, Away, Busy) status message and time, as well as location. For the User presence telephony option, the following statuses are supported:

  • registered (registered and idle)
  • ringing (in ringing state)
  • talking (in conversation)
  • rt (in conversation and ringing state)

4. Click Install.

Once installed, you can see details about the new integration which includes Integration ID, Transmission type, URL, Secret, and types of events selected. 

Note: Editing of the integration is currently not supported. If you need to update any data, please delete the current Webhook integration and create a new one. 


Copy the Integration ID and use it in your web application / service.

Important: The timeout for Webhook reply is 5 seconds. 


Important: For security reasons, it is highly recommended that you validate the data received to your web application / service and make sure the data comes from Wildix and the data is not broken. 

For this, check `signature` for all received events:

  • For webhook transport, you can find signature in the request's header x-signature
  • For SQS transport, you can find signature in the MessageAttributes ['X-SIGNATURE']

Configuration example

See Webhook configuration example on this page.

Supported event types

Call start 

{
  "id": "it_w118741_1693389850.110",
  "pbx": "221100001bab",
  "time": 1693389850810,
  "company": "it_w118741",
  "type": "call:start",
  "integrationId": "8qkmnq",
  "data": {
    "status": "CONNECTING",
    "caller": {
      "type": "LOCAL",
      "phone": "1001",
      "name": "admin",
      "company": null,
      "email": "vladimir.gorobets@wildix.com",
      "userId": "1257510555",
      "userExtension": "1001",
      "userDepartment": null,
      "groupId": "62177694",
      "groupName": "Admin",
      "userAgent": "Wildix Zero Distance 4.0.1 WebRTC-f2a0f5f1-6c4e-444f-b99f-a968bb5f7297",
      "userDevice": "COLLABORATION_WEB"
    },
    "callee": null,
    "service": null,
    "destination": "10020",
    "trunkName": null,
    "queueName": null,
    "queueId": null,
    "tags": [],
    "flags": [],
    "endCause": null,
    "endCauseStr": null,
    "endBy": null
  }
}
```

Call update

{
  "id": "it_w118741_1693389850.110",
  "pbx": "221100001bab",
  "time": 1693389850810,
  "company": "it_w118741",
  "type": "call:update",
  "integrationId": "8qkmnq",
  "data": {
    "status": "CONNECTING",
    "caller": {
      "type": "LOCAL",
      "phone": "1001",
      "name": "admin",
      "company": null,
      "email": "vladimir.gorobets@wildix.com",
      "userId": "1257510555",
      "userExtension": "1001",
      "userDepartment": null,
      "groupId": "62177694",
      "groupName": "Admin",
      "userAgent": "Wildix Zero Distance 4.0.1 WebRTC-f2a0f5f1-6c4e-444f-b99f-a968bb5f7297",
      "userDevice": "COLLABORATION_WEB"
    },
    "callee": {
      "type": "LOCAL",
      "phone": "10020",
      "name": "user20",
      "company": null,
      "email": "vladimir.gorobets+3@wildix.com",
      "userId": "5753746",
      "userExtension": "10020",
      "userDepartment": null,
      "groupId": "874629312",
      "groupName": "Default",
      "userAgent": null,
      "userDevice": null
    },
    "service": null,
    "destination": "10020",
    "trunkName": null,
    "queueName": null,
    "queueId": null,
    "tags": [],
    "flags": [],
    "endCause": null,
    "endCauseStr": null,
    "endBy": null
  }
}
```

Call end

{
  "id": "it_w118741_1693389850.110",
  "pbx": "221100001bab",
  "time": 1693389853611,
  "company": "it_w118741",
  "type": "call:end",
  "integrationId": "8qkmnq",
  "data": {
    "status": "CONNECTING",
    "caller": {
      "type": "LOCAL",
      "phone": "1001",
      "name": "admin",
      "company": null,
      "email": "vladimir.gorobets@wildix.com",
      "userId": "1257510555",
      "userExtension": "1001",
      "userDepartment": null,
      "groupId": "62177694",
      "groupName": "Admin",
      "userAgent": "Wildix Zero Distance 4.0.1 WebRTC-f2a0f5f1-6c4e-444f-b99f-a968bb5f7297",
      "userDevice": "COLLABORATION_WEB"
    },
    "callee": {
      "type": "LOCAL",
      "phone": "10020",
      "name": "user20",
      "company": null,
      "email": "vladimir.gorobets+3@wildix.com",
      "userId": "5753746",
      "userExtension": "10020",
      "userDepartment": null,
      "groupId": "874629312",
      "groupName": "Default",
      "userAgent": null,
      "userDevice": null
    },
    "service": null,
    "destination": "10020",
    "trunkName": null,
    "queueName": null,
    "queueId": null,
    "tags": [],
    "flags": [],
    "endCause": "21",
    "endCauseStr": "Call Rejected",
    "endBy": "CALLER"
  }
}
```

Use cases

Below you can find some examples of Webhook integration usage:

  • CRM Integration

You can integrate the Webhook to automatically log and update customer call details in the CRM system. This can helps in maintaining accurate customer records and improve follow-up processes.

  • Marketing automation

You can trigger marketing automation campaigns based on call events. For example, you can send follow-up emails or SMS messages when a call ends, which could help to nurture leads and provide better customer support.

  • Customer feedback and surveys

After a call ends, the Webhook can trigger the delivery of customer satisfaction surveys or feedback requests. This helps businesses to gather valuable input for improving the service in future.

  • Ticketing system integration

You can automatically generate support tickets or service requests when a call starts or ends, which would streamline the customer support processes.

  • Custom notifications

You can set up customized notifications based on call events. For example, you can receive an SMS alert when a high-priority call starts or when a call remains on hold for too long.