Cisco and Zoom recently announced a significant partnership aimed at improving the compatibility between Cisco devices (Room Bar, Room Kit, Board Pro and Desk Pro series) and the Zoom meeting platform. Eric Yuan, Jeetu Patel, and other Cisco executives made clear that work happens on multiple meeting services.

But what about Video phones?

In this article I’m presenting the results of my tests/experiments to exemplify what options are available for video phones registered to Webex Calling that want to join a Zoom meeting.

Note 1: This content is not sponsored, edited or endorsed by either Zoom or Cisco. The use of the Zoom logo, Zoom product screenshots and other brand items (such as Zoom CRC) have been authorized for educational purposes.

Note 2: all the images you see in this article, with the exception of the two Webex Control Hub screenshots, are real screen captures sourced from a Cisco 8875 running PhoneOS, none of them have been artificially manipulated. Identical results can be obtained on 8845 and 8865 running the MPP firmware, with the obvious difference being imposed by the smaller screen resolution.

High Level Overview

The results of my tests show that it is possible to dial into a Zoom Conference Room Connector (CRC) from a video-enabled Cisco IP Phone (8845, 8865, 8875) registered to Webex Calling, but we need to use the Local Gateway interconnection.

In terms of user experience, there are a couple of scenarios we can cover:

  • a generic video IVR that will prompt us for the meeting ID. We’ll call this IVR-based join flow;
  • direct dialing into a known meeting ID lobby, for when we provide the meeting number directly in the dialed string (very common when associated to a speed-dial configuration on the phone). This is referenced here as direct-join flow.

Functional Description

I’ve opted to use a short dial prefix that routes (video) calls to Zoom: the prefix can obviously be customized. In my case I went with the code *9 (i.e.: star - Zoom on the dialpad). If you don’t want to use the star, you can achieve identical results with a numeric steering code (like 96 for example, for Z - M on the keypad).

The complete flow is the following:

  1. the user dials *9 or *9 followed by the meeting ID (or simply presses a speed-dial button configured with either of these patterns);
  2. the *9 is converted into a prefix (96 in my case) followed by the meeting ID, if available;
  3. Webex Calling routes the call to a dial-plan, associated with a Local Gateway (LGW);
  4. the LGW sees the call coming from WxC and routes it to a specific outbound dial-peer based on the numeric prefix;
  5. the dial-peer points towards Zoom CRC over SIP TLS, using DNS to discover the specific Zoom CRC region’s point of presence.

Resulting Experience for the Meeting Participant

The possibility to dial two digits and being readily welcomed into Zoom CRC is pretty convenient, and once you join the conference, the size of the Phone’s screen is enough to have a good experience (if someone will be sharing dense text, of course this is not the ideal setup, but for a normal meeting with focus on the active speaker I have nothing to complain about).

  • For the IVR-based join method, after entering star - 9 you will be seeing the Zoom CRC IVR (as overlay you see the 8875 controls on screen):

zoom7.png

  • For the direct-join experience, the meeting ID must be post-pended to the steering prefix. This could be in the form of a speed dial (i.e.: * 9 <meeting ID>), or, by keying in the full string manually. Depending on how the meeting is configured, before entering the lobby, you might be prompted to enter the pass code:

zoom8.png

Once you are admitted into the meeting, the resulting view is this (active speaker mode):

zoom1.png

and it can be tuned with a number of options that you access through DTMF (like layout, display chats or closed captioning, etc…):

zoom3.png

The quality of the microphone and speaker of the Cisco phones does add to the overall quality of the user experience (for example, I tested closed captioning and translations for a couple of languages and it worked fine, although I have seen a slightly better close captioning performance using the one natively offered by the 8875, both in terms of text readability, and voice recognition accuracy). You can see an example of the Cisco native CC in the image below.

zoom5.png

Resulting Experience for the Meeting Host

If you are wondering what it’d be like to use your 8845, 8865 or 8875 as main device while being a meeting host, I can tell you that it’s a pretty solid experience too.

It would be obviously unfair to compare it to the UX of a full app in a computer screen, or the dedicated touch screen of a controlling Room Navigator. But you can effectively interact with the meeting controls in reasonable speed and accuracy.

As a host, you will connect most of the times to your Personal Meeting ID (PMI in Zoom terminology), and therefore it makes a lot of sense to have a speed dial that takes you straight into it.

The system will greet you with the request to enter the secret host PIN, after that, you will be in the meeting with all the additional controls reserved for meeting hosts.

Some examples of the controllable host capabilities include:

  • the configuration of the translation,
  • the activation of the AI assistant,
  • you also have a pretty good view on the lobby, as you can see in the example below.

zoom9.png


Implementation

Now that we have seen what is possible, if you are interested in replicating this setup, just follow the instructions below. So let’s move on with the implementation!

Note: If you need help in getting your LGW to register, check out the LGW configurator.

Control Hub

In Control Hub these are the steps we need to take:

  1. Decide on a prefix that is associated to Zoom. In my case I’ve picked *9 and 96 (from the Keypad Z-M) - you must have the numeric prefix, but the star code is optional. (If you decide that you are fine with just a numerical sterring prefix, skip the next ste and go straight to step 3, creating the dial-plan);
  2. Create the translation pattern for the *9 sequence (reason being that you can’t have * in Webex Calling dial plans);
  3. Create the Dial plan entries (I’ve considered meeting IDs of 10 and 11 digits)

Translation Pattern

db9a417e8622583b2675bf7008e18029.png

The two patterns are:

  • *9 which is replaced by 96
  • *9(!) which is replaced by 96$1

Dial Plan

The entries to add to the Dial Plan associated to the LGW are:

  • 96 (Z - M), this is used for the generic IVR in Zoom CRC;
  • 96XXXXXXXXXX (prefix plus ten digits) for personal meeting rooms (usually 10 digits long);
  • 96XXXXXXXXXXX (prefix plus 11 digits) for ad-hoc meetings whose ID is 11 digits long.

Phones

No specific configuration is needed on the phones, but I’ve noticed the 8845 and 8865 do not present a softkey for PIP (picture-in-picture) while you are connected, so you could consider fixing that by adding the softkey in the phone configuration, like this:

cc7cb2ac7859a32d977aec68beb6dd7a.png

Local Gateway

This is the piece of the architecture where the actual connection to CRC takes place. The Local Gateway can be registration-based, and can be virtualized. I’m assuming here that the LGW is already configured and able to receive inbound calls, so I’m not going to describe that part. It’s worth pointing out that depending on the pool of users you need to serve for this call flow, some sizing should be done on the LGW itself.

The following configuration assumes that you are able to perform digit-based routing (as opposed to any other routing sstrategy, for example dial-peer groups). If you are using dial-peer groups, then you have to create a specific trunk for this dial-plan and match on the OTG/DTG. I’m also assuming that DNS resolution works fine on the router.

We need to add these sections (this is the bare minimum):

voice translation-rule 9666
 rule 1 /^96$/ /0000/
 rule 2 /^96\(.*\)$/ /\1/
!
voice translation-profile OUTGOING-TO-ZOOM
 translate called 9666
!
voice class e164-pattern-map 9666
 description FOR ZOOM CRC INTEROP
  e164 ^96$
  e164 ^96..........$
  e164 ^96...........$
 !
!
voice class sip-profiles 9666
 rule 10 request INVITE sip-header SIP-Req-URI modify "sip:0000@" "sip:"
 rule 20 request INVITE sip-header To modify "sip:0000@" "sip:"
!
dial-peer voice 9666 voip
 description Outbound Towards ZOOM CRC
 translation-profile outgoing OUTGOING-TO-ZOOM
 video codec h264
 session protocol sipv2
 session target dns:zoomcrc.com
 session transport tcp tls
 destination e164-pattern-map 9666
 voice-class stun-usage 200
 voice-class sip profiles 9666
 dtmf-relay rtp-nte sip-kpml
 srtp
 codec opus
 no vad

You can replace the dns:zoomcrc.com domain with the geographic domain name that suits your deployment’s location. The list of locations (Australia, Canada, Germany, etc…) is available in the “H.323/SIP Room Connector” menu, under “Room Management” (you must be a site administrator to see this information).

I’ve reused a STUN voice class (for firewall traversal reasons), but if you need to configure it it’s very simple (the password is a placeholder, it’s not actually relevant unless you configure TRP on a Cisco Firewall):

voice service voip
 stun
  stun flowdata agent-id 1 boot-count 36
  stun flowdata shared-secret 6 <encoded random password>
!
voice class stun-usage 200
 stun usage firewall-traversal flowdata
 stun usage ice lite

Final Comments

Send me a message if you found this content useful, or if you have anything to add or correct, and obviously …the usual disclaimer:

this article is not sponsored/funded or endorsed by Cisco Systems or Zoom. This is for educational purposes only. Under no circumstance this post represents a design recommendation, and can not substitute specific IT architecture and engineering work for a given use case. In no event shall the author be liable for any loss or special, indirect or consequential damage of any kind resulting from the use of, access to, or reliance on the information contained within this website. No claim of official support can be made based on the sole content of this blog post.