Data Systems
Introduction:
Evo Voice's Data System is a robust framework that facilitates intricate customization of communication Flows, offering
users extensive control over their interactions.
Before delving into this section, it's advisable to grasp the fundamentals of Endpoints, Flows, and Nodes, as these
concepts won't be extensively covered here.
Fields and Types:
Fields serve as containers for specific data types, such as String, Number, Boolean, etc. Each node within Evo Voice
utilizes these fields to execute tasks, with each node's behavior governed by its associated properties, determined by
the field types.
The provided screenshot below displays a comprehensive list of Fields along with their respective Types indicated in
parentheses. For instance, the "What to Say" field is classified as a String type.
Data Type Table:
Evo Voice encompasses various types, as illustrated in the table below. Typically, the most frequently utilized types
include String, Number, Boolean, and Audio File.
| Type | Description |
| --- | --- |
| String | Text. This is the most common data type, used for anything where text can be entered, e.g. "Hello World" |
| Number | 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 |
Data Type Examples:
String:
Number:
Boolean:
Phone number:
Audio File:
Nodes and Properties
In Evo Voice, Nodes and Properties are fundamental components that shape the behavior of communication flows. Let's
break down their roles:
Nodes are the building blocks of communication flows, each representing a specific action or functionality within the
system. They operate based on a set of defined properties that determine their behavior.
Every Node comes with a set of properties, which are configurable settings defining how the Node will execute its task.
These properties are akin to parameters that govern the Node's actions.
For instance, consider the "What to Say" property in the Say Node, which is a String type field. This property dictates
the text the Node will speak during a call or message interaction.
By default, these properties are configured by directly inputting values into the provided editor interface. This allows
users to customize the behavior of Nodes according to their specific requirements and preferences.
In the provided screenshots, you can observe how the properties of a Say Node are displayed in the editor interface.
These properties provide users with granular control over the behavior of each Node, ensuring tailored communication
flows.
Value Sources:
When configuring a property for a Node, you'll notice a dropdown menu referred to as the "Value Type Selector"
positioned to the left of the field. This selector, depicted in the provided image, allows users to choose the source
from which the property value will be derived.
This dropdown menu offers various options, each determining the origin of the property value.
Here's a breakdown of the available value sources:
| 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 |
Specific Value:
This is the default value source for a node field. It means that the value directly entered into the field is used. For
instance, in the provided example, the text "Hello World" will be spoken whenever that node is executed.
Expression:
This value source is similar to Specific Value but allows for more dynamic content generation. It enables the use of
placeholders and variables within the string. For example, if we want to incorporate the caller's ID into a spoken
response, we can use this value source. The drop-down menus below the editor facilitate the insertion of values into the
expression.
Session Parameters:
Also known as Call parameters, these values change with each session. For instance, the Caller ID will be unique for
every call. The availability of session parameters may vary depending on the type of communication. For example, the
caller number may not be accessible during an email flow.
Here's an overview of available Session Parameters:
| 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 crucial components defined within the Parameters tab, serving various essential functions in Evo
Voice. Here's a breakdown of their purposes:
1. Settings for Endpoint Assignment: Flow Parameters allow users to specify settings while assigning a Flow to an
Endpoint, enabling tailored configurations for different scenarios.
2. Placeholders for Node Output Properties: They act as placeholders for output properties on a Node, facilitating
dynamic content generation based on the specific requirements of each Flow execution.
3. Settings for Flow Integration: Flow Parameters also serve as settings that can be specified when integrating one
Flow into another, enhancing modularity and reusability.
Flow + Endpoint Settings
Flow Parameters offer the flexibility for customization on a per-Endpoint basis. For instance, consider a scenario where
a custom message needs to be conveyed to callers associated with different phone numbers. By creating a new Flow
Parameter, such as "Message," and setting its type to String, users can tailor messages specific to each Endpoint.
Additionally, marking the "Public" box ensures accessibility and visibility of the Flow Parameter for configuration
purposes.
After configuring the desired settings for our Say node, we proceed by selecting "Flow Parameter" as the Value Source
for dynamic content integration. Subsequently, we choose the specific Flow Parameter, such as "Message," to be
incorporated into the node's functionality. This ensures that the content displayed or spoken by the Say node is
dynamically determined by the value of the selected Flow Parameter.
Once the Flow is saved with these configurations, we navigate back to the Endpoints section to apply these settings.
Here, we edit one of the incoming Phone Numbers and access the Flow tab. Within this tab, we select the previously
configured Flow. Upon selection, a visual representation akin to the provided screenshot appears, showcasing the
editable "Message" field.
It's important to note that each Endpoint associated with this Flow will now have its own editable "Message" field. This
setup enables the customization of messages for every individual Endpoint utilizing this specific Flow, ensuring
tailored communication experiences based on distinct Endpoint configurations.
Output Properties
Output Properties in Evo Voice nodes are data points generated by a node after its execution, distinct from input
properties that drive the node's behavior during execution. For instance, consider the Record Audio node, which produces
two output parameters: an Output Audio File named "Recorded File" and an Output String titled "Recorded File URL," as
shown in the provided image.
Suppose we aim to send a text message containing a link to the recorded audio file for playback. To achieve this, we
first create a new Flow parameter named "RecordingUrl" of String type, as depicted in the screenshot.
Next, we modify the Recorded File URL Property of the Record Audio node to store the URL of the audio file in our newly
created Flow Parameter, ensuring its accessibility post-execution.
Subsequently, we configure the SMS node to utilize the "RecordingUrl" Flow Parameter by setting the Message value source
to Expression. This enables us to dynamically insert the URL into the message content, as demonstrated in the example
screenshot.
Upon sending the SMS message, the expression retrieves the URL stored in the Flow Parameter, allowing users to access
the audio file by tapping the link provided within the message.
Flow Parameters with Other Flows
Finally, Flow Parameters can also be utilized across different flows, enabling seamless integration and data sharing
between interconnected flows, a concept further elaborated upon in the Modularity section.
Customer Data
Customer Data in Evo Voice allows users to leverage data associated with the customer who initiated the flow from the
endpoint. For instance, suppose we want our Say node to deliver a personalized message to each customer. Here's how we
can achieve this:
1. Navigate to the System section and access the Customer Fields tab.
2. Add a new field named "Message" of type String, ensuring to save the changes.
3. Proceed to edit one of the customers in your database. Upon editing, you'll notice the newly added "Message" field,
allowing you to input a customized greeting or message for that customer.
4. Next, edit one of your phone numbers and link it to the previously modified customer. Assign the associated flow to
the phone number you're testing with.
5. Finally, customize your Say node to utilize the customer data. This involves configuring the Say node to access the
"Message" field from the customer data.
Endpoint Data
Endpoint Data in Evo Voice is akin to Customer Data, but it utilizes fields defined directly on the endpoint. Suppose we
aim to create a customized message for each endpoint, here's the process:
1. Access the System section and navigate to the Endpoint Fields tab.
2. Add a new field named "Message" with a String type, ensuring to save the changes.
3. Proceed to edit one of your phone numbers. Within the Data tab of the endpoint configuration, input the desired
message into the "Message" field.
4. Lastly, configure your Say node to utilize the endpoint data. This involves adjusting the Say node settings to fetch
the "Message" field from the endpoint data.
By following these steps, you can effectively leverage endpoint data to create personalized messages tailored to each
endpoint.
User Data
User Data in Evo Voice is a unique form of value source. Initially, every flow possesses "User Data," albeit it starts
empty by default. To harness the potential of "User Data," follow these steps:
1. Create a new Endpoint field, such as "Message," with a String type. Optionally, you can adjust the Endpoint type to
User if needed.
2. Utilize either a Set User node or a User Lookup node to establish the "user context," essentially populating the
user data.
3. Once the user data is set, you can freely access and employ the user data fields within your flow for various
purposes.
System Settings (Global Data)
System Settings in Evo Voice offer Global Data as a valuable value source. While not extensively utilized, it serves
specific needs. Here's how to leverage Global Data:
1. Navigate to the System section and access the Global Data field.
2. Add a new Global Data field and assign it a value, such as "Hello from the Global Settings."
3. Subsequently, integrate this global value into your flow as needed.
Users and Data Fields
Users of Evo Voice have the capability to modify User/Endpoint fields as well as Customer fields within the application.
Let's explore how to implement a "Do Not Disturb" feature as an example:
1. Create a new Endpoint:User field named "DoNotDisturb."
1. Set the User Mode to "Read Write" to grant users the ability to modify this field via the app.
User Mode in Evo Voice dictates the accessibility and permissions of fields within the application. It offers three
values:
- Hidden: Conceals the field entirely from users.
- Read Only: Displays the field in the app, but users cannot alter its content.
- Read Write: Exhibits the field in the app, allowing users to freely modify its content.
Additionally, users can access and modify Customer fields. To achieve this, follow these steps:
1. Create a new Customer Field, such as "After Hours."
2. Specify the User Mode as either Read Only or Read Write.
3. Enable modification of Customer data for specific users via the User screen.
It's essential to note that for a Customer field to be visible and modifiable by users, it must have a User Mode of Read
Only or Read Write, and users must possess Read Only or Read Write permissions for Customer Fields.
Summary
In summary, this section provides an in-depth understanding of Evo Voice's data system, including the origin of Flow
Parameters and various methods of retrieving values