
[Reading time: 21 minutes]
Overview
A voice smart routing is built as a tree of actions. Each action performs a specific task — playing an announcement, capturing DTMF or speech input, branching on a value, transferring the call, distributing to an agent, calling a web service, etc. — and connects to one or more output branches that determine which action runs next.

This article describes all actions available in a voice smart routing, grouped by category. For how to create and manage smart routings, see the Smart routing and versions: voice article.
Prerequisites
- A Smart license.
- Access to the Maker.
- The Smart routing permission enabled in your role.
- A voice smart routing in development (a production version cannot be edited).
- Depending on the actions used: value tables, variables, distribution queues, calendars, databases, CRM cards, web services, email/SMS templates, sound files, TTS voices, voicemails, SIP endpoints, IVR recorders, chat modules, payment modules, etc. pre-configured.
Common concepts
Output branches
Each action has one or more output branches (links). After the action runs, the smart routing continues along the branch matching the action’s result. The most frequent labels shown in the Maker are:
| Label | Meaning |
|---|---|
| OK | The action succeeded. |
| Error / Not OK | The action failed or returned a negative result. |
| Reference not found / Not found | A referenced item could not be found. |
| 0 … 9 / * / # | DTMF keys (used for voice announcements with input). |
| Link 1 … Link 10 | Numbered branches used for multi-choice or load-sharing actions. |
| By default | Fallback branch when no other condition matches. |
I know / I want
Many actions offer an I know selector (sometimes labelled I want) that lets you choose how the target entity is identified. The two options offered are always specific to the entity manipulated by the action. For example:
- For a queue: the queue or the queue reference.
- For a calendar: the schedule or the schedule reference.
- For a sound file: the sound file or the sound file reference.
- For a voice mailbox: the voice mailbox or the voice mailbox reference.
- For a SIP endpoint: the SIP endpoint or the SIP endpoint code. Etc.
The first option lets you pick the entity directly from a dropdown. The second option lets you provide a reference (static or dynamic via a variable), useful when the target depends on a flow variable. A few actions add extra options on top of these two (e.g. transferring to an explicit phone number, distributing to the preferred agent, recognizing yes/no via ASR).
Warning: If a referenced entity is deleted or its reference is changed, the action will no longer work.
Variables in text fields
Text inputs marked as “magic” accept dynamic references to flow variables (e.g. a value entered via DTMF, a value recognized by ASR, a field returned from a database query, or a CRM property). The variable is resolved at runtime.
1. Actions and action tree
1.1. Start
Entry point of the smart routing. Automatically created when a version is created and cannot be deleted. Every call entering the smart routing begins here.
Parameters: none.
Output branches: OK.
1.2. Load sharing
Randomly splits incoming traffic across up to 10 branches, according to configurable percentage weights. Useful for A/B testing or progressively rolling out a new flow.
Parameters:
- The loads (the sum must be equal to 100): 10 numeric inputs labelled Link load no. 1 to Link load no. 10. The total of all loads must equal 100.
Output branches: Link 1, Link 2, … Link 10, No link.
1.3. Add a checkpoint
Tags the call with a qualification tag. Useful to mark a specific step in the flow, to filter statistics later, or to trigger conditional logic downstream.
Parameters:
- I know: the checkpoint or the checkpoint reference.
Output branches: OK, Reference not found.
1.4. Pause
Holds the flow for a configured duration before continuing to the next action.
Parameters:
- Pause time (sec): duration in seconds.
Output branches: OK.
1.5. Node
Logical join / grouping point. Lets multiple upstream branches converge into a single downstream flow, or acts as a visual anchor to keep large trees readable.
Parameters: none.
Output branches: OK.
2. Voice
2.1. Voice announcement
Plays an audio prompt to the caller — either a pre-recorded sound file or a text-to-speech (TTS) message. Optionally, the caller’s DTMF input can be captured and stored in a variable, with control over which keys repeat, skip or end the input.
Parameters:
- Type: Text-to-speech or Sound file.
- If Text-to-speech:
- Voice (TTS voice/language).
- Text-to-speech text (max 3,000 characters; variables supported).
- If Sound file:
- I know: the sound file or the sound file reference.
- Maximum time to make the selection (sec): between 1 and 30 seconds. In the event of multiple digits, the timer returns to 0 after each digit entered.
- Number of plays: between 1 and 10.
- Message repeat key(s): DTMF keys that replay the prompt.
- Message skip key(s): DTMF keys that skip the prompt.
- Retrieve the entry: toggle. If enabled, the action captures the DTMF entry. When enabled:
- Number of digits: between 1 and 20.
- End of entry key: optional DTMF key that ends the input.
- Variable + Field: where the captured entry is stored.
Output branches: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *, #, End of the input, No action, Reference not found.
2.2. Speech recognition (ASR)
Plays a prompt to the caller and uses Automatic Speech Recognition to match the caller’s spoken response against a configured dictionary or to recognize “yes/no” input. The recognized code is stored in a variable.
Parameters:
- I want: to use a dictionary, to use dictionary with its reference, or to recognize “yes” / “no”.
- If to use a dictionary: Dictionary (entity).
- If to use dictionary with its reference: Dictionary reference.
- Variable + Field: where the CODE of the recognized dictionary word is stored.
Output branches: Recognized, Unrecognized, Error, Reference not found.
2.3. Test if the number is mobile
Branches based on whether the caller’s phone number is identified as a mobile number (HLR / MNP lookup).
Parameters: none.
Output branches: OK, Not OK.
2.4. Modify the caller ID
Changes the caller ID (CLI) presented to the agent for the current call.
Parameters:
- New caller ID value (variable supported). The caller ID is displayed to the advisor during the call presentation.
Output branches: OK.
2.5. Start a recording
Starts an IVR (smart routing) recording of the call. The recording is stored according to the IVR recorder configuration.
Parameters:
- I know: IVR recorder or the IVR recorder reference.
- Maximum recording time (sec).
Output branches: OK, Not found.
2.6. Stop a recording
Stops the current IVR (smart routing) recording.
Parameters: none.
Output branches: OK.
2.7. Digitalization
Sends the caller an SMS containing a link to a chat module, allowing the call to be converted into a chat session. The customer enters digits to validate or reject the conversion before the SMS is sent.
Parameters:
- The chat module: target chat module (the caller is redirected to this chat module).
- Audio file to play: prompt played while waiting for the validation/rejection digits.
- Number of plays (repeat limit).
- Validation keys: DTMF keys that confirm the digitalization.
- Rejection key: DTMF keys that cancel the digitalization.
- Maximum time to make the selection (sec).
- SMS number: sender number for the digitalization SMS.
- SMS template (with template variables to fill in if any). Must contain the
sys.digiLinkvariable; otherwise the link is added at the end of the SMS. - Variable + Field (optional): variable that can be retrieved in the chat session.
Output branches: OK, Error, Not mobile, Rejected.
3. Sending
3.1. Send an email
Sends a templated email from within the call flow. The send can be linked to the interaction (for tracking) or sent as a basic email.
Parameters:
- I know: the email template or the email template reference.
- Email template (or template reference). When a template is selected, its template variables appear and must be filled in.
- Type: Outgoing interaction (saves the send as an outgoing interaction) or Basic send.
- If Outgoing interaction: Distribution queue (sender context).
- If Basic send: Mailbox (sender context).
- TO, CC, BCC: recipients.
- Subject: overrides the template’s default subject if provided.
Output branches: OK, Partially sent, Reference not found, Error.
3.2. Send a SMS
Sends a templated SMS to the specified recipient.
Parameters:
- I know: the SMS template or the SMS template reference.
- SMS template (or template reference). When a template is selected, its template variables appear and must be filled in.
- Content: optional text that overrides the SMS template content.
- Type: Outgoing interaction or Basic SMS send.
- SMS number: sender number.
- Recipient: recipient phone number (variable supported). If the number is not entered, the caller’s number will be used.
Output branches: OK, Error, Not mobile, Reference not found.
4. Distribution
4.1. Distribution to queue
Routes the call to an ACD distribution queue (or queue group) so that an agent can take it. The caller hears the configured music-on-hold playlist while waiting.
Parameters:
- Distribution to: Queue or Queue group.
- I know:
- For a queue: the queue or the queue reference.
- For a queue group: the distribution group or the distribution group reference.
- Playlist: music-on-hold playlist for the caller while waiting (with optional None value).
- Prioritize: if enabled, the call is placed first in the queue.
Output branches: Processed, Unprocessed, Reference not found, Overflow – No user, Overflow – Maximum estimated waiting time, Overflow – Maximum number of waiting interactions, Overflow, Dissuasion – Maximum wait time reached, Dissuasion – By the user, Dissuasion (all types).
4.2. Distribution to a number
Transfers the call to an external phone number, a directory contact, or a directory contact identified by reference. While the call is being transferred, the caller hears the selected playlist.
Parameters:
- I know: the directory card, the directory card reference, or the phone number.
- If the directory card:
- Contact (directory item).
- Phone number: pick the phone field to dial (Pro, Pro 2, Mobile, Home, Fax, Assistant).
- If the directory card reference:
- Directory card reference.
- Phone number type: Pro, Pro 2, Home, Mobile, Fax, Assistant.
- If the phone number: Phone number (international format or variable).
- Playlist: music-on-hold playlist (with optional None value).
- Notification time before dissuasion (sec): ringing timeout.
Output branches: Busy, Failure, Finished, No response, Reference not found.
4.3. Distribution to a smart routing
Hands the call off to another voice smart routing. The target smart routing picks up processing from its Start action.
Parameters:
- I know: the smart routing or the smart routing reference. The target smart routing must use the same flow type and not be an end-of-interaction smart routing.
Output branches: Not found, Maximum number of distributions to a smart routing reached.
4.4. Distribution to a user
Assigns the call directly to a specific user / agent, bypassing the queue.
Parameters:
- I know: the user, the user reference, or I want to assign to the preferred agent.
Output branches: OK, Error, No response, Reference not found.
4.5. Distribution to a voice mailbox
Routes the call to a voice mailbox where the caller can leave a message.
Parameters:
- I know: the voice mailbox or the voice mailbox reference.
- End of entry key: DTMF key that ends the message recording (optional).
Output branches: OK, Reference not found, Error, Voicemail full.
4.6. Distribution to SIP endpoint
Forwards the call directly to a configured SIP endpoint.
Parameters:
- I know: the SIP endpoint or the SIP endpoint code.
- Phone number: target number on the SIP endpoint (variable supported).
Output branches: Processed, Unprocessed, Reference not found.
5. Cases & CRM
5.1. Associate the interaction with a case
Retrieves an existing case using its reference and attaches it to the current call.
Parameters:
- Reference of the case with which the interaction is associated: lookup value (variable supported). If the reference is not entered, the last case associated with this customer (out of the last 3) will be selected.
Output branches: OK, Not found.
5.2. Dissociate the case from the interaction
Detaches the case currently linked to the call.
Parameters: none.
Output branches: OK.
5.3. Create a new case and associate it with the interaction
Creates a new case of a given type and immediately attaches it to the call.
Parameters:
- New case title (variable supported).
- I know: the case type or the case type reference.
Output branches: OK, Error, Not found.
5.4. Modify a case
Updates fields of an existing case identified by its reference.
Parameters:
- Case reference: lookup value (variable supported). If no value is entered, the case linked to the workflow will be used.
- Field 1 … Field N (repeatable): each field combines a Case fields selector and a New value input.
Output branches: OK, Error, Not found.
5.5. Associate the interaction with a CRM card
Searches for a customer-contact CRM card using field-based search assertions. The matching card is linked to the call.
Parameters:
- CRM in which to search for the card: target customer-contact directory.
- Create a new file if not found: optional toggle (disabled for integration-backed CRMs).
- Confirm the test if: all the following assertions (AND) or at least one of the following assertions (OR).
- Search assertions: list of CRM card field + value.
Output branches: OK, Not OK, Not found, By default.
5.6. Create a CRM card
Creates a new customer-contact CRM card.
Parameters:
- CRM in which to search for the card.
- CRM card fields: list of CRM field + value.
- Associate the CRM card with the interaction: toggle to attach the newly created card to the current call.
Output branches: OK, Error.
5.7. Associate the interaction with a CRM V2 card
Retrieves a card via a configured CRM V2 scenario and attaches it to the call.
Parameters:
- CRM in which to search for the card.
- CRM scenario (filtered by the chosen CRM). If a default scenario exists, it can be selected.
Output branches: OK, Not OK, Not found, By default.
5.8. Create a CRM V2 card
Creates a new CRM V2 card for a given CRM and CRM object.
Parameters:
- CRM and CRM object.
- CRM card fields: list of CRM field + value.
- Associate the CRM card with the interaction: toggle.
Output branches: OK, Error.
5.9. Create a task
Creates a task linked to the call, with configurable start and end dates. If the task type is Salesforce, the Salesforce ID is stored in a variable.
Parameters:
- Task name (variable supported).
- Task category.
- Task kind. If Salesforce: Variable containing the Salesforce Query ID.
- Date to start the task: Now, At a later date, or No start date.
- If At a later date: Time interval (numeric value) + interval kind (Hours, Days, Weeks, Months).
- Date on which the task must end: End postponed or No end date.
- If End postponed: same time interval / kind as above.
Output branches: OK, Error.
6. Data
6.1. Assign values to variables
Writes one or more values into flow variables for later use.
Parameters:
- Variable 1 … Variable N (repeatable). Each block contains a Variable + Field selector and a New value input.
Output branches: OK, Error.
6.2. Test a value(s)
Evaluates one or more conditions on variables and branches accordingly.
Parameters:
- Confirm the test if: all the following conditions are valid (AND) or at least one of the following conditions is valid (OR).
- Condition 1 … Condition N (repeatable). Each block contains:
- Variable: a magic input referencing the value to test.
- Operator: comparison operator (=, ≠, ≥, ≤, contains, starts with, ends with, Exists, Does not exist, Is empty, Is true, Is false, Is a date, Is the morning, Is the afternoon, Is the weekend, Is an odd week, Is an even week, Regular expression).
- Value: the comparison value (hidden for unary operators such as Exists, Is empty, etc.).
Output branches: Yes, No, Error.
6.3. Values table
Looks up an input value in a values table and stores the returned value into a flow variable. Typically used for translation tables, mapping codes, or routing matrices.
Parameters:
- I know: the values table or the values table reference.
- Correspondence reference: the lookup value (variable supported).
- Variable in which to store the corresponding value: target Variable + Field.
Output branches: OK, Reference not found, No value.
6.4. Fill in the variables from a database
Queries a custom database and stores retrieved field values into flow variables.
Parameters:
- Database.
- Select a conforming database entry: all the following assertions (AND) or at least one of the following assertions (OR).
- Search assertions: list of Database column + value.
- Variable(s) in which to store the search result: list of Database column → Variable + Field.
Output branches: OK, Not found.
6.5. Save values to a database
Inserts a new row into a custom database.
Parameters:
- Database.
- Fields: list of Database field + value. Required fields are added automatically.
Output branches: OK, Not OK.
6.6. Modify the values of a database
Finds rows in a custom database matching the search assertions and updates selected fields.
Parameters:
- Database.
- Modify…: Only the first value found or All values found.
- Search assertions: list of Database column + value.
- Fields to modify: list of Field to modify + new value.
Output branches: OK, Error, Column(s) not found, No value found, No modification.
6.7. Date and time (retrieval and calculations)
Reads or computes a date and time value and stores it in a flow variable.
Parameters:
- Reference the date and time: of the passage in the action (now) or from a variable (input date).
- If from a variable: Variable input.
- Operation on the date and time: none, add, subtract, or set to.
- For add / subtract: Days, Hours, Minutes, Seconds.
- For set to: a toggle Use the day of the week switches between Day of the month and Day of the week, then Hours, Minutes, Seconds.
- Result storage: target Variable + Field.
Output branches: OK, Not OK.
6.8. Check the number of passages
Increments a counter each time the call passes through the action, then branches depending on whether the counter is below or above the configured threshold. Useful for retry loops or capping the number of attempts.
Parameters:
- Maximum number of passages of interaction in this action: numeric threshold.
- Reset the counter to 0 when the limit is reached: optional toggle.
Output branches: Less than or equal to, Greater.
6.9. Check Nth contact
Branches based on how many previous contacts the caller has had over a configurable time window. Useful to recognize returning callers or escalate repeat calls.
Parameters:
- Time interval to be counted (radio choices).
- Value: number of days / period.
- Link 1 … Link 10: 10 ordered numeric thresholds. The call takes the branch matching the closest threshold above the counted contacts. It is recommended to order them from smallest to largest (e.g. Link 1: 0, Link 2: 2, Link 3: 5).
Output branches: Link 1, Link 2, … Link 10, No link.
7. Time and dates
7.1. Test a schedule
Branches on whether the configured calendar is currently open or closed. Used to route out-of-hours calls to a different message or queue.
Parameters:
- I know: the schedule or the schedule reference.
Output branches: Open, Closed, Not found.
7.2. Test if it is an even or odd week
Branches on whether the current ISO week number is even or odd. Typically used for bi-weekly routing schemes.
Parameters: none.
Output branches: Even, Uneven.
8. Interconnection
8.1. Web service
Calls a configured external HTTP web service. In synchronous mode, response fields can be mapped into flow variables for downstream use.
Parameters:
- Web service: target definition.
- Request settings: input variables passed to the web service.
- Synchronous: toggle. If enabled, the smart routing waits for the response before continuing.
- If synchronous: Variables in which to store the web service return: list of response field → Variable + Field.
Output branches: OK, Not OK.
9. Campaigns
This section covers two kinds of actions: actions that insert a new target into an outbound campaign (useful to schedule an outbound contact back after a voice call) and actions that manage the current call’s voice campaign target (when the smart routing is invoked from a voice campaign).
9.1. Insert a target in a WhatsApp campaign
Inserts a new target into a WhatsApp outbound campaign.
9.2. Insert a target in a voice campaign
Inserts a new target into a voice outbound campaign.
9.3. Insert a target in the SMS campaign
Inserts a new target into an SMS outbound campaign.
Parameters (common to 9.1, 9.2 and 9.3):
- I know:
- For a WhatsApp campaign: the WhatsApp campaign or the WhatsApp campaign reference.
- For a voice campaign: the voice campaign or the voice campaign reference.
- For an SMS campaign: the SMS campaign or the SMS campaign reference.
- Insert if duplicate: toggle to bypass duplicate detection.
- Phone number: target phone number (variable supported). If the number is not entered, the caller’s number will be used.
- Start date: optional. If not entered, the current date will be used.
- Priority: variable or numeric value within the configured range.
- Campaign target layout (with optional None value).
- Campaign target fields: dynamic list of fields driven by the chosen layout (typed accordingly).
Output branches: OK, Reference not found, Error, Duplication, Invalid number.
9.4. Check the number of target attempts
When the smart routing processes a call from a voice campaign, branches according to the attempt number on that target. Useful to play different prompts on the first attempt vs. subsequent retries.
Parameters: none.
Output branches: Attempt no. 1, Attempt no. 2, … Attempt no. 10, Any attempt, No target.
9.5. Check the result of the target attempts
When the smart routing processes a call from a voice campaign, branches according to the result of the previous attempts on that target.
Parameters: none.
Output branches: Succeeded, No response, Answering machine, Error, Maximum number of repetitions reached, Unallocated, Attempt limit, Busy, Rescheduled, Expired, No target, All branches.
9.6. Reschedule an attempt
When processing a voice campaign call, reschedules a new attempt for the target at a later date and optionally assigns the future attempt to a specific user or team. There can only be a limited number of attempts per target — beyond that limit, the result is stored in the result.limit variable.
Parameters:
- Date: when the rescheduled attempt should occur (variable supported). If no date is entered, the action uses the current date.
- Assign to: None, User, or Team.
- If User: User (entity).
- If Team: Team (entity).
Output branches: OK, Error, Not found, Duplication.
10. Survey
10.1. Survey
Attaches a survey to the call so that the caller is invited to answer it (typically at the end of the call).
Parameters:
- I know: the survey or the survey reference.
Output branches: OK, Reference not found, Error.
11. Payment and billing
11.1. Search for invoice
Looks up an invoice based on a customer-provided identifier (number, phone, customer ID, etc.) and stores the matching invoice in the bill flow variable for downstream actions.
Parameters:
- I know (custom set of options for invoice identification):
- the invoice number
- the invoice mobile phone number
- the invoice landline number
- the customer number of the invoice
- the invoice ID
- the email address of the invoice
- Value: the lookup value matching the chosen identifier (variable supported). The label adapts to the selected identifier.
- If several invoices are found, select: the oldest or the most recent.
Note: The retrieved invoice is stored in the bill variable.
Output branches: OK, Not found.
11.2. Pay an invoice
Triggers a payment flow for an existing invoice or for a custom amount, through a configured payment module. Depending on the channel chosen, the caller is invited to pay via SMS link, email link or directly within the smart routing (Ino Pay only).
Parameters:
- Type: Invoice or Amount.
If Invoice:
- I know: same custom set of options as for Search for invoice.
- Value: lookup value (variable supported).
- If several invoices are found, select: the oldest or the most recent.
If Amount:
- Amount (max 2 decimals).
- Currency.
- Invoice name.
- Invoice reference.
- Customer reference.
- Comment.
- Customized data.
- Mobile phone number (must include the country code).
- Fixed phone number.
- Email.
Common to both types:
- Payment module (filtered to internal, active or sandbox modules).
- Mode: SMS, Email, or Smart routing (Smart routing mode only available for Ino Pay payment modules).
Output branches: Payment stopped, Bank transfer error, Invoice not found, Fraudulent payment, Failed payment, Payment error, Payment successful, Notification successfully sent.