Evo Voice is a multi-channel communication platform. This term has become overloaded in today's tech world, so let's explain what a channel is with respect to Voice and how Voice provides for a multi-channel paradigm.
Evo Voice supports 3 types of Channels, Voice, Chat, and Fax. Fax is a special Channel which we will not discuss here. This document will focus specifically on Voice and Chat.
Endpoints, Sessions, Channels, and Flows
As discussed in the main Endpoints topic, an Endpoint is something which is capable of initiating and/or receiving communication. For example a Phone Number receives incoming phone calls, a User can make outgoing phone calls or receive incoming phone calls. We use the term Session to refer to a single instance of communication, for example, it could be an incoming phone call or an incoming chat message. Every session is associated with a SINGLE Channel Type. For example, an incoming phone call is a Voice Channel Session.
Every new session is handled by the Flow associated with the Endpoint that receives the session. For example:
The Phone Number above is associated with the Incoming Calls Flow. This means that every time a new Session is started for this endpoint (incoming call or SMS message) - the Incoming Calls Flow will be executed.
You will notice that we only have a single setting for Flow but an Incoming Phone Number can receive both voice calls and SMS messages. To determine what type of Channel from within a Flow, we use the Channel Selector Node for example:
In the above example, if someone sends an SMS message to the phone number, we use a Say node, and if someone dials the phone number, we use a Dial node.
Voice is the primary communication channel that will be used in Voice as phone calls are still the pervasive means of communication in business scenarios.
Phone Numbers and Users
There are two ways that voice communication can be initiated in Evo Voice
- Someone dials one of your Incoming Phone Numbers
- A user dials out via the App, Soft Phone, or SIP endpoint
In both cases, when a voice session is initiated, Evo Voice will execute the Flow that is associated with the corresponding Endpoint.
For example, when someone from the outside world dials an Incoming Phone Number, Voice will execute the Flow associated with that Endpoint.
In general, the goal of a Flow will be to connect that voice caller with another party (or sometimes voicemail etc.) however, the Flow system allows for significant logic to happen before the Dial node is used to establish that connection.
A Voice session lasts for the duration of the phone call
Whereas a Voice session is easy to visualize because it consists of a single phone call a Chat session is a little bit more complicated and is best shown with a few examples.
In Evo Voice, Chat sessions are message based meaning that a session isn't started until a message is received and a paused session does not continue until another message is received.
As mentioned above, Chat is a Message based channel. Evo Voice supports various types of Chat endpoints including the following
- SMS (via an Incoming Phone Number)
- Skype Bots
- Slack Bots
- Facebook Bots
- Web Chat
- User Chat
It is important to note that regardless of Endpoint type, Chat flows will function the same. For example, the Say Node will always reply to the user regardless of actual mechanism, if you use a Say node in an SMS flow, we will send the resulting text back to the user via SMS. If the flow has an email sender, we will email back, etc.
Example 1: Reply to Chat Message
In this first example, we are going to have a single Say node in our Flow, e.g.
And if we send an SMS message to that number we'll get the following:
If we continue to send messages to the number, we will ALWAYS get the same result:
It is important to note that every time we send a message in for the above flow, a new session is created. This is because a Chat session ends when the Flow is completed.
Example 2: Reply and Gather
In the next example, we will say something to the sender and then we will prompt them for info using the Gather Node and then we will just repeat back what they said.
And when we send a message to the phone number, the resulting dialog looks like this:
In this example, the session did not end until after the Flow said to us our name back. The session was "paused" waiting for another message from the original sender. If we send a new message to the Flow, we will start a new session now.
Example 3: Chat with User
The above examples showed how a Chat based session starts when the first message is received and ends when the Flow is over. Let's show a real example with actual chatting between people.
Our flow is going to use a Chat node in order to invite Users to the Chat session such as below:
Now when we send a message into the phone number, the Una user is going to receive an invite to the Chat and from that point on, all chat messages will be directed to the chat conversation between the original sender and una
Here is how that looks with screenshots.
First the original party sends a message to the phone number:
The Una user receives a chat invite in her Voice app
And she replies:
And back on the mobile phone, the original sender gets an SMS message:
Una and the original party are now in a Chat session and will remain in that session until Una quits the session via the App or the sender sends a message "EXIT" which will remove him from the session.
Chat Flows are initiated when a new message is received on a Chat Endpoint (e.g. Phone Number via SMS, Email Address via a new email, a Skype Bot via a new message, etc.)
Chat Flows can be "paused" while waiting for more input, for example by using the Gather Node.
Chat sessions are finished as soon as the Flow they are associated with finish or if a Chat conversation is established, when someone in the Chat ends the session.
The Voice Flow system is a very flexible communication model which allows for very complicated situations to be handled relatively easily.
In general, the primary goal of every flow is to establish a communication Channel between a Caller and one or more Destinations. For example
- Connecting an incoming caller to a SIP phone
- Connecting an incoming caller to a Voice App user.
- Establishing a Chat session between an incoming SMS sender and an operator
The Dial Node is a very powerful Node which is used to establish a traditional "Phone Call" between a Caller and a Dialed party.
As shown in the above image, the Dial node supports ringing both Users in the Voice system as well as External Phone Numbers (e.g. 10 digit dialing).
The Chat Node is analogous to the Dial node, but for Chat based sessions. You will notice that there are far fewer options on the Chat node.
The Chat Node supports inviting 1+ parties to a Chat with the person that initiated the chat (via a Chat Message).