Cloud telephony (VoIP, UCaaS etc.) design patterns
This section describes how to implement common integration use cases for cloud telephony SaaS vendors.
Examples of cloud telephony
SaaS vendors:
- VoIP providers
- UCaaS (Unified Communication as a Service) providers
- CPaaS (Communication Platform as a Service) providers
- Messaging (chat, video) providers
- Etc.
Please note that this is just a generic overview. Many variations are possible, as well as other use cases!
Below we discuss integration use cases that are common for cloud telephony.
Contact Sync from CRM's to a cloud telephony phonebook
Sync contacts from CRM's and other cloud applications into a directory or phone book of the Cloud Telephony platform, allowing users to search contacts in a phonebook. Sometimes also used for caller lookup (see below).
CRM to cloud telephony phonebook.
Pattern to build automations
- Incremental one-way sync from CRM or other cloud applications (source) to the Cloud Telephony platform (destination).
- Upsert of contacts in the Cloud Telephony platform, using the API of the Cloud Telephony platform.
Required API endpoints on Cloud Telephony platform
Add contact
&Update contact
.Find contact by phone number
(to check for existing contacts) orFind contact by external id
(assuming an external id from e.g. a CRM can be stored in the phonebook).
Typical fields that are synced
- Phone number
- First name & last name
- Company name
- External id (id from the CRM or other source)
- Link to the detail screen of the contact in the CRM or helpdesk platform or other source platforms. This link is typically shown in a softphone on an incoming call, so the agent can open the detail page of the caller.
- Custom field(s): any other data that can be displayed on a softphone. Sometimes done by putting a generic JSON object (key/values) in one field called
extra data
orcustom data
.
Remarks
- In CRM's, both contacts and companies can hold phone numbers. Companies can e.g. be synced as a
fake
contact into the phonebook. - Phone numbers should be normalized as part of the sync (remove non-numeric characters and spaces etc.)
- Ideally country codes are added to the phone number. If missing, sometimes the country field of the contact can be used to add the country code.
- Contact deletes can be desired: delete contacts in the Phone book when deleted in the CRM (source). This might require a full comparison on a regular basis (e.g. every 24 hours), except if the CRM supports
on delete
webhooks.
Caller lookup in incoming calls
Show the name of the incoming caller on a softphone or physical phone, and optionally include more data fields and a link to a detail page in a CRM.
Caller lookup.
This can be implemented using two different scenarios:
- Realtime lookup on incoming call, using an API call toQlik Application Automation for OEM. In this scenario, Qlik Application Automation for OEM holds a
shadow copy
of the data from the CRM. This is implemented using one-way sync from e.g. a CRM to the Qlik Application Automation for OEM CDP. - Lookup in the phonebook/directory of the Phone System. In this case, the above
Contact sync
is used.
Pattern to build automations for the Realtime lookup using the CDP:
- One-way sync automation from source (CRM or similar) to the Qlik Application Automation for OEM CDP.
- Triggered automation for lookup in the CDP. Input: phone number. JSON response: caller details such as name, company, etc.
- The Triggered automation is called using the SaaS API that allows calling an automation in a customer account. The customer id from the SaaS Provider is used in the URL. The automation name is used in the URL (not the guid). The name of the automation should be fixed, e.g.
caller_lookup
. The same name is used for this automation in all templates. - More details on the pattern Caller Lookup with CDP
Pattern to build automations for the Lookup in the phonebook/directory:
- See above under
Contact Sync
Remarks:
- A real-time lookup in an external system (CRM) might be too slow and is a risk to hit API rate limits. That's why a contact sync or shadow copy in the CDP is typically used.
Call logging to CRM's and other cloud applications
Once a call is completed, the details of the call are logged in a CRM, helpdesk platform or other cloud application. The most common use case is adding an activity
or event
to a contact in a CRM.
Call logging.
Pattern to build a call logging Blend:
- Lookup caller in CRM by phone number (in order to link the call log to this person). If the Qlik Application Automation for OEM CDP is used, the CDP can be used for the lookup. If the CRM id is stored in the Phone System as an external id, this id can be used and a lookup is not needed.
- Lookup the agent (employee/person answering the call) in the CRM, e.g. by searching in the Users table or by searching in the list of sales representatives (SDRs, etc.).
- Create the call log as an activity, task, event, note or similar
Common fields used in a call log:
- Date, time and duration of the call
- If the call was inbound or outbound
- Status/result of the call: answered, transferred, missed, declined call
- Link to call recording
- Caller details: by linking the call log to the correct contact or lead in the CRM
- Agent/employee details: by linking the call log to the correct user or sales rep in the CRM
- From/to phone numbers
Which blocks to use in automations to call logs, for major CRMs:
- Salesforce: Create task
- Hubspot: Log call (timeline event)
- MS Dynamics: Create Phone Call, Create note
- Zoho CRM: Create call in activities, Create Note
- SugarCRM: Create call, Create note
- Pipedrive: Create activity, create note
- Copper: Create task, create activity
- Active Campaign: Create task, Create note
- Zendesk: Format Call Log And Upsert Note In Zendesk (snippet)
- Intercom: Intercom Log Formatting And Upserting Snippet (snippet)
- Infusionsoft/Keap: Format Call Log And Upsert Note In Infusionsoft (snippet)
Remarks:
- If the call recording is not permanently stored on the Phone System, or if needed for backup/compliance reasons, an automation can be created that syncs call recording files from the Phone System to cloud storage (Dropbox, Google Drive, Box, MS OneDrive, AWS S3, etc.). In this scenario the upload must happen first, and the link to the uploaded file is stored in the call log.
- A delay is sometimes implemented in the call logging Blend, e.g. 10 minutes, to make sure that notes have been added after the call is finished.
- If call notes can be updated after the call was completed (e.g. notes can be added in a softphone or mobile app, minutes or hours after the call was completed) it might be necessary to implement Updates of call logs in the CRM. This can be challenging. Some CRM API's allow adding
activities
but not updatingactivities
. - The logic to log a call might be different based on the status/result of the call. For example, for a missed call a Task might be created.
Dynamic call routing
Incoming calls can be routed dynamically based on information in CRM's, helpdesk platforms, accounting platforms, databases, etc.
Dynamic call routing.
This can be implemented using two different scenarios:
- Triggered automation that performs realtime lookups on an incoming call. The automation is triggered on an incoming call (webhook from Phone System toQlik Application Automation for OEM). The automation will perform the required logic and send a JSON response, or it will call the API of the Phone System to update the call (e.g.
route call
). - Lookup in the Phone system's phonebook or directory. In this scenario, typically the required information (e.g. customer language, most recent purchase, outstanding invoice amount, etc.) is synced into the phonebook on a regular basis. See above under
Contact sync
.
Other use cases for cloud telephony
Other use cases are possible:
- Create new contacts in a CRM on incoming calls from an unknown number.
- Some Phone Systems act as a full-fledged CRM. In this case, a 2-way sync might be desired with other platforms (as opposed to a one-sync).
- Chatbots can be powered with Triggered automations to provide the fulfilment of chat requests.
- Push notifications or Slack notifications on incoming calls.
- Updating the status of a user (agent) on incoming calls (e.g. set to
busy
in Slack or other chat platforms). - Provisioning of users (agents) can be automated using automations.
- Creation of widgets for call center agents to perform common tasks (e.g.
Resend invoice
). In this case, a widget is created (using HTML and JS) that acts as a front-end to an automation. - Other ideas in mind? We look forward to hearing from you!
Did this page help you?
If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!