SMS Enabled IVR with Webex Connect

Cisco acquired IMI Mobile in early 2021 to fill out its cloud omni-channel strategy. IMI Mobile has a large global presence and does most of the same things as Twilio and Signalwire. I do miss Cisco’s first stab at programmable communications with Tropo, but that’s no more. After the acquisition closed, Cisco brought IMI under the Webex umbrella rebranding the three pillars of the IMI platform into Webex: Webex Connect, Webex Engage, and Webex Notify which can now be purchased as a stand-alone platform as well as part of a Contact Center Flex subscription. Webex Connect powers the omni-channel methods in Webex Contact Center and Contact Center Enterprise. This blog will be focused on the Webex Connect standalone offering. If you’d like to give the platform a try you can signup for a sandbox account and I will be posting the “Flow” that is used at the end to give you a quick start.

Flow Overview:

The Flow builder in Webex Connect is what happens when a developer thinks drag-and-drop programming is cool and then learns it’s actually hard, but instead of giving up builds it anyways. The logic available within the Flow builder is fairly straightforward, and there is a lot of flexibility around timeout and error conditions as well as your standard successful paths. These paths can cause a lot of extra configuration, but the payoff is that you can account for errors and potentially recover instead of losing the contact. Webex Connect also provides most of your standard channel interactions via APIs so you can use the same numbers and service for sending notifications, handle multi-factor authentication requests and other tasks.

The main purpose of the Flow builder is to take inbound “triggers” and perform logic and take actions. These inbound triggers could be anything from simple webhook requests to SMS, voice, email, WhatsApp, and more. In our test setup, we will use a combination of Voice and SMS, both available out of the box in the sandbox environment.

Our Example Flow:

In this example, we are going to handle actions from an inbound call. This is a traditional IVR setup that you may be used to, but we will leverage Webex Connect to not only handle the voice call but also send SMS messages to the caller based on the selected DTMF option.  Our menu is pretty straightforward forward with 3 tasks:

  1. Reply with an SMS link to our Charlotte office that the caller can open in Google Maps
  2. Fetch the current list of blogs from our website and send the caller a link to the latest posting
  3. Forward the caller to Cisco Support



When you log into your Webex Connect Sandbox, you’ll see “My First Service” created and ready for you. A service is a grouping of tasks related to the use case you have. This use case could be something like “Customer Service”, “MFA”, or whatever your need is.


When you click the “Flows” tab this will list out all of the Flows that are configured. You can have multiple flows and multiple triggers per Service. We are going to start with a basic inbound voice flow. Create a new flow on the top right and give it a name. You can select to start from scratch, upload a file you’ve already got, or copy another flow that’s already been configured. If you wanted to process replies on the SMS channel you could create a new Flow that was triggered based on SMS under this same service.

Trigger Setup:

When you click into the Flow the first time It will ask you to configure the trigger. Select “Voice” and then on the next page we are going to select the triggering action as “Inbound Call” and then select the “Incoming Number” that is provisioned in your sandbox.

Flow Canvas:

Next, you’ll see the Flow canvas. This is where we will create the logic and diagram that will provide the routing for our caller. In this layout, we have “nodes” on the left and the drawing area for the rest. These nodes represent actions that can be taken within a Flow and are separated into node types. The orange Utilities icons are built around programming logic. You can even run JavaScript by using the “Evaluate” node.  Channels represent different contact channels so you’ll see SMS, Voice, WhatsApp, etc. in this area for sending and receiving customer interactions. The Integration section would be pre-built and custom integrations with stuff like CRM, Webex Contact Center, or Engage.

The voice channel displays slightly different than other channels by creating a “node group”. Actions that are related to the voice call should be placed within the node group, but once the call is disconnected you can continue logic if needed outside of this grouping.  You’ll notice a common scheme that each node has an input on the left center and then timeout, success, and errors along the right. These options could expand and it’s not uncommon to have three or more error types for each node.

Node Configuration:

We’ll drag over the IVR step, wire it up, and look at what’s available in the node’s configuration. In the main panel, you will have all of the options around configuring the node. Here we are creating a TTS prompt and specifying our menu options. In the right pane the “Node Outcomes” is selected and you can see each of the timeout, success, and error outcomes after this node completes. As additional IVR options get created, you will see additional green “success” outcomes.

Node Variables:

If we look under the input and output variables in the same right panel we can see what variables are available to reference within the node and what variables exist after the node completes.

When you reference a variable within a node it will be based on the following format $(n4.ivr.inout).  “n4” represents the Node ID that you’ll see at the bottom left when the node is open, or next to the variable group. The second piece is the node name and then the variable object. You may have further nested objects depending on the task.

We’ll continue to build out the Flow until it meets our needs.  Here we will use the “SMS” node to compose our messages, and the “Call Patch” node to redirect the caller and then fill in with the logic needed for retrieving the latest blog post via a JSON/RSS converter and a branch step that will allow us to track loops through the IVR so we can prevent a user from hanging out in the IVR too long. This is an example where the SMS text references the blog post using variables to build out the message.



This blog is designed as an overview of capabilities, but if you want to try and build the flow out or take a closer look at the logic used you can upload this Webex Connect SMS Enabled IVR workflow to your Service. Note that there are some limitations on the Connect Sandbox, specifically that SMS numbers have to be verified before sending messages so you will need to complete that process first.

Final Flow: