Digital Voice API powered by Zendesk Messaging

Digital Voice API powered by Zendesk Messaging

You can now let your customers place calls via the Messaging Widget. This article shows you how, and explains how to integrate Voice with your Zendesk Bot.


The Classic Zendesk widget was a powerful tool. It allowed for full customization, offered help center search, chat, webforms, authentication, pre-filling values and ... Zendesk Talk support out of the box.

The new Messaging widget has gradually catching up with its older sibling. The customisation API has been expanding with a lot more native features available in the admin panel, you can authenticate Zendesk Messaging, and, arguably, the new Zendesk Bot experience is way better than the old model search and forms flow.

This week brings the latest addition to its feature set: Voice integration that allows customers to call your CX team right from within the browser. No phone or other software required.
It's build on top of Zendesk Talk's Digital Lines feature where you can get Talk enabled in your environment without having a real number.

Feature overview

The new Voice feature works as follows:

  • You add a Call Us button on your website
  • When clicked you invoke a specific API endpoint for the new Messaging widget
  • The widget shows a Call now (or we're offline) view allowing customers to call you.
  • Calls appear in Agent Workspace and agents can handle them just like any other ticket.

You can test out the flow below:

Internal Note - Voice API for Messaging
Demo page to showcase the JWT Authentication for Zendesk Messaging

Enabling Voice via Messaging

Get a digital line

First you need to add a Digital Line to your Zendesk instance. Zendesk has a pretty good article explaining it:

Adding a Talk digital line
What’s my plan? In Understanding Talk Embedded voice, you learned the basics about how Talk digital lines can help you improve the experience for your customers, wherever…

Next you will need to find the Digital Line ID of your line. You can do this by going to https://yourdomain.zendesk.com/api/v2/channels/voice/lines in your browser while being logged in as an admin to your Zendesk instance.

In the returned data, search for the line_id of the line with line_type:digital

{
"lines": [
	{
        "line_type": "digital",
        "line_id": "6c0e70e6ef77d7a711a073f249ab6304",
        ...

Once you have your line_id you can invoke the Voice widget via:

zE('messenger:open', 'voice', '{{line_id}}')
//replace {{line_id}} with your value

Triggering the widget

Sadly there no native way (yet) to trigger the voice channel directly from the widget. However, there are a few ways you can show the option to your customers:

Call us button

The easiest way to trigger the feature is buy adding a button somewhere on your website that opens the widget.

<button type="button" onclick="zE('messenger:open', 'voice', '6c0e70e6ef77d7a711a073f249ab6304')">Call Us</button>

URL-based triggers

Sometime you might want to send customers directly to the widget without them needing to click on anything.

An example scenario might be a Call Us link in an email you send to your customers. For example, if I ask you to click on https://widget.internalnote.com?voice=true you will land on my demo page and the call widget will be immediately available to you.

By using the code below, you can automatically trigger a call based on the url parameter voice=true

$(function() {
  //check for URL parameter called "voice" and if it is set, open the voice channel
  var urlParams = new URLSearchParams(window.location.search);
  if (urlParams.has('voice')) {
    zE('messenger:open', 'voice', '6c0e70e6ef77d7a711a073f249ab6304')
  }
}); 

Triggering a call via the Zendesk Bot

One of the limitations of the Voice via Messaging feature is its lack of integration with the Zendesk Bot. Where the Classic Widget had a contactOptions feature which listed chat, forms and voice as options in a list, the current bot misses this feature.

If you do want to offer a similar feature, there's a small workaround you can use to make this work:

  1. Add the URL based trigger code above to your website
  2. Insert a Bot Message to your flow and add a button to the message
  3. Set the link of the button to https://domain.com?voice=true and give it a useful label
  4. Whenever a customer clicks the call us button it will open a new window with the call function enabled.

I sure hope this will be a native feature in the future.

Conclusion

Voice via Messaging is one of those feature additions that seem really cool, but in practice lack in functionality. Hacking this into the Zendesk Widget with an API and neglecting to enable any native way to trigger it makes me really wonder why this feature had to go live now.

I can understand adding it to the Bot Builder might require additional resources from different teams, but it feels like a natural step to add to that list of options.
Or, if that was not possible in the near future, even adding a Continue via phone option to this dropdown would have been nice.

That being said, it is a nice feature addition to Zendesk's omnichannel set of features that brings the Messaging widget yet one step closer to feature parity with the classic widget.