Data System

From Evo Voice
Jump to: navigation, search


Evo Voice has a rich and flexible Data System which allows for deep customization of its communication Flows

Before reading this section, it is recommended that you understand the basics of Endpoints, Flows, and Nodes, as these topics will not be reviewed in detail in this section.

Fields and Types

Fields are pieces of Data that have a specific Type. You have already been introduced to fields and you didn't even realize it, for example, the Say node below has a multiple Fields (Properties)


In the above screenshot, you can see all of the Fields listed as well as their Type (in parentheses) for example the What to Say field has a type String

There are various types in Evo Voice which are shown in the table below

Type Description
String Text. This is the most common data type, it is used for anything where text can be entered, e.g. "Hello World"
Number This is a numeric type with decimals allowed, e.g. 5, 10, -10, 45.2
Boolean A yes/no value
Date A specific date
Audio File A reference to an audio file (commonly used with the Play node)
Time Zone A reference to a time zone (typically used when time of day is involved)
Phone Number A reference to a purchased incoming phone number (typically used for specifying caller ID)
User A reference to a user
Endpoint A reference to any endpoint including Phone Numbers and Users
Time A reference to a specific time of day (typically used for time of day logic)
File A reference to a specific file (including audio files)
Fax Number A reference to a specific fax number

In general, the most common types that are used will be String, Number, Boolean, and Audio File.

Here are a few examples of the most common types to further solidify this concept:

String Example


Number Example


Boolean Example


Phone Number Example


Audio File Example


Nodes and Properties

As shown above, the Voice data system revolves around the concept of Fields and Types. Every Field has a Type, e.g. "What to Say" is a "String"

Every Node has a set of Properties which configure how the Node behaves, e.g.


By default, you directly specify the values for each Node by entering them in the editor that is provided, e.g.


Value Sources

In the image above, take note of the popup to the left of the field that says "Specific Value". Voice calls this the "Value Type Selector" and this dropdown determines where the value for that Property comes from.

There are multiple options for that list which are explained below


Each of the following Value Sources will be explained in much more detail below, but a brief summary is as follows:

Value Source Description
Specific Value This is the default choice. The value is entered directly into the field.
Expression This is only available with String fields, this allows you to put placeholders into the value
Session Parameter Session parameters are values such as Caller ID, Dialed Number, etc. which vary from call to call
Flow Parameter Flow Parameters are specified on the Parameters tab in the Flow Editor
Customer Data Customer data comes from the Customer associated with the Endpoint that initiated the Flow
Endpoint Data Endpoint data comes from the Endpoint that initiated the Flow, e.g. the Incoming Phone Number
User User data is a special source that only becomes valid after using a User Lookup Node.
System Setting System settings are configured in the System section under Global Data

Note All of the following sections will use the Say node as a reference

Specific Value

This is the default Value Source for a Node field. The value comes directly from what you enter into the field, for example


In the example above, the exact value Hello World will be spoken whenever that node is executed.


This is very similar to Specific Value, except it allows you to substitute data into the String that is formed to create expressions, for example, if we wanted to speak back to the caller and let them know their caller ID, we could do the following:


The drop down menus below the editor allow you to easily insert values

Session Parameters

Session (aka Call) parameters vary from session to session. For example the Caller ID will be different every time a Flow is executed. The following table describes the available Session Parameters

Not all Session Parameters are available every time (e.g. caller number will not be available during an email flow)

Value Source Description
Caller Number This is the CID "caller ID" for the incoming call
Caller Name The CID name for the incoming call (if available)
Dialed Number This is the number that the User dialed (in the case of a User flow)
Body For text based communication, e.g. SMS or Email, this is the body of the message.
Email From/To/etc. Email specific fields

Flow Parameters

Flow Parameters are defined on the Parameters tab. In general, Flow Parameters serve 3 purposes which will all be explained below

  1. As settings which can be specified while assigning the Flow to an Endpoint
  2. As placeholders for Output properties on a Node
  3. As settings which can be specified when using the Flow in another Flow

Flow + Endpoint Settings

Flow Parameters can allow customization to occur for a Flow on a PER ENDPOINT basis. For example, let's say that we want to have a custom message read back to the caller for each phone number

First, we can create a new Flow Parameter, let's call it Message and its type should be String (since we will be assigning it to the What to Say field which is also String)

Go ahead and check the Public box for the new Flow Parameter


Now back on our Say node, select Flow Parameter as the Value Source and choose Message, e.g.:


Save our Flow. Now go into our Endpoints and edit one of our incoming Phone Numbers. Click the Flow tab and select the Flow you were just working on. You should see something similar to:


Note that we now have a Message field which we can edit. This allows us to have a different Message for EVERY Endpoint which uses this Flow.,

Output Properties

In general, most properties on Nodes are what we call "Input" properties, meaning that the Flow uses the value of the Property directly during its execution, however some Properties are what we call "Output" properties meaning that they are data that the Node provides after execution. For example:


In the image above, you can see the Record Audio node has two Output parameters, an Output Audio File called "Recorded File" and an Output String called "Recorded File URL"

If for example, we wanted to send a text message to someone that had a link to the audio file so that they could listen, we need to store the value temporarily so that we can use it in an SMS node, for example:

First - create a new Flow parameter called "RecordingUrl" of String type


Now, select our Record Audio node and change it's Recorded File URL Property, e.g.


This means that when the Record Audio node is done, it will save the URL to the audio file in our Flow Parameter.

Now select our SMS node, and change the Message to be value source: Expression and enter something like this:


Now when the SMS message is sent, we will create an expression and fill in the flow parameter URL so that the user can tap it to listen.

Flow Parameters with Other Flows

The final example for Flow Parameters is with other flows. This will be explained in greater detail in the Modularity section.

Customer Data

Customer Data source allows us to use data from the Customer that is associated with the Endpoint that initiated the Flow. For example, if we wanted our Say node to say something specific for each Customer, we could do the following

  1. Click on the System section on the left and click on the Customer Fields tab.
  2. Add a new field called Message of type String and then make sure you click Save.
  3. Edit one of your customers and you should now have a Message field that you can type into, add a greeting
  4. Edit one of your phone numbers and associate it with the customer you just modified. Assign it to the Flow you are testing with
  5. Finally, modify your Say node to use Customer data

The following screen shots will illustrate the above steps:


Endpoint Data

Endpoint Data is similar to Customer Data except in this case, we are using fields defined on the Endpoint itself. If we wanted to do the above example, but instead have a customizable message per endpoint, we would do the following

  1. Click on the System section on the left and click on the Endpoint Fields tab.
  2. Add a new field called Message of type String and then make sure you click Save.
  3. Edit one of your phone numbers and click on the Data tab, enter its Message.
  4. Finally, modify your Say node to use Endpoint data

The following screen shots will illustrate the above steps:


User Data

User data is a special case of Value Source. Every flow has "User Data" but by default it is empty. In order to use the "User Data" you must complete the following steps

  1. Create a new Endpoint field e.g. "Message" of type String (you can change the Endpoint type to be User if you want)
  2. Use either a Set User node or a User Lookup node in order to "set the user context"
  3. You can then use the user data fields, for example


System Settings (Global Data)

The last type of Value Source is Global Data. In general, there aren't many cases where global data will be used, but the option is there for those that need it. For example if we wanted a global greeting, we could do the following

  1. Click on the System section and add a new Global Data field.
  2. Give the Global data field a value, e.g. "Hello from the Global Settings"
  3. Now use that value in the flow

Users and Data Fields

Evo Voice allows users of the App to modify both User/Endpoint fields as well as Customer fields.

For example, let's say that we want to add a "Do Not Disturb" feature to a Flow.

We can create a new Endpoint:User field called "DoNotDisturb" as shown below:


Note that we have set the User Mode to "Read Write". This means that the user will be able to modify this field via the app.


User Mode can have the following values

Value Description
Hidden This field is not exposed to the user at all
Read Only This field is visible in the app, but the user cannot change it
Read Write This field is visible in the app and the user can freely change it

We can also expose Customer fields to the end users. For example, you may have a customer field called "After Hours". When this field is True, all calls go to voicemail.

Let's create a new Customer Field e.g.


Note that User Mode has the same choices as it does on the Endpoint Fields screen. However, by default, users CANNOT modify Customer level fields. In order for a specific user to be able to modify Customer data, we must enable that on the User screen, e.g.


Note that we have the same choices for Customer Fields: Hidden, Read Only, and Read Write.


In order for a customer level field to be exposed to a user, it must have a User Mode of Read Only or Read Write AND the user must have a Customer Fields value of Read Only or Read Write.

In order for a customer level field to be modifiable by a user, it must have a User Mode of Read Write 'AND the user must have a Customer Fields value of Read Write.


In this section we have taken a deep dive into the data system in Evo Voice. We have explored how Flow Parameters get their value (from all different places) and we have discussed different scenarios for pulling those values.