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: December 2023
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 -> Calendars stab (or to x-bees tab in case of a PBX with x-bees licence)
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:
- In the Target field, indicate the URL where the data should be sent to.
- Secret is generated automatically and cannot be edited.
- Choose type of events:
- Call start
- Call update
- Call end
- User presence
b) In case of SQS transmission type:
- In the Target field, indicate the SQS URL where the data should be sent to.
- Enter SQS Key and Secret in the relevant fields.
- Choose type of events:
- Call start
- Call update
- Call end
- User presence
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.