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 !

Before diving into the below details, please make sure to check out general information for SaaS Providers:

Cloud telephony integration use cases

Following integration use cases are common for cloud telephony:

Contact Sync

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).

Pattern to build Blends:

  • Incremental one-way sync from CRM or other cloud application (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) or "Find 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 (no kidding !)
  • 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 platform. 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 in a softphone. Sometimes done by putting a generic JSON object (key/values) in one field called "extra data" or "custom 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

Show name of incoming caller on soft phone or physical phone.

This can be implemented using 2 different scenario's:

  • Realtime lookup on incoming call, using an API call to Blendr.io. In this scenario Blendr.io holds a "shadow copy" of the data from the CRM. This is implemented using a one-way sync from e.g. a CRM to the Blendr.io CDP.
  • Lookup in the phonebook/directory of the Phone System. In this case the above "Contact sync" is used.

Pattern to build Blends for the Realtime lookup using the CDP:

  • One-way sync Blend from source (CRM or similar) to the Blendr.io CDP.
  • Triggered Blend for lookup in the CDP. Input: phone number. JSON response: caller details such as name, company etc.
  • The Triggered Blend is called using the SaaS API that allows calling a Blend in a customer account. The customer id from the SaaS Provider is used in the URL. The Blend name is used in the URL (not the guid). The name of the Blend should be fixed, e.g. "caller_lookup". The same name is used for this Blend in all templates.
  • More details on the pattern Caller Lookup using CDP

Pattern to build Blends 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.

Cal logging

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.

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 Blendr.io CDP is used, the CDP can be used for the lookup. If the CRM id is stored in the Phone System as 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 (SDR's 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 Blends 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 of backup/compliance reasons, a Blend can be created that syncs call recording files from the Phone System to cloud storage (Dropbox, Google Drive, Box, MS OneDrive, AWS S3 etc.).
  • 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 updating "activities".
  • 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 routing

Incoming calls can be routed dynamically based on information in CRM's, helpdesk platforms, accounting platforms, databases etc.

This can be implemented using 2 different scenario's:

  • Triggered Blend that performs realtime lookups on an incoming call. The Blend is triggered on an incoming call (webhook from Phone System to Blendr.io). The Blend 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

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 Blends to provide 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 platform).
  • Provisioning of users (agents) can be automated using Blends.
  • 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 a Blend.
  • Other ideas in mind ? We look forward to hearing from you !
Did this answer your question?