> ## Documentation Index
> Fetch the complete documentation index at: https://docs.volubile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Step Nodes

> Steps are available when building your graph and offer specialized features.

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-step-nodes.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=65a8bd17aea50e1fbe0b070839210e7c" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-step-nodes.png" />
</Frame>

## Prompt

The Prompt node forms the intelligent core of your conversational agent by defining behavioral instructions and contextual responses. This feature allows you to structure conversational logic with maximum precision.

### Use Cases

* Definition of responses to specific requests
* Management of complex conversation graphs
* Integration of business logic into interactions

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-prompt.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=e3eebb935d2d891d8a374ed74d134248" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-prompt.png" />
</Frame>

| Field       | Description                               |
| ----------- | ----------------------------------------- |
| Action Name | Name of the node                          |
| Prompt      | Detailed content of behavioral directives |

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The prompt can be dynamic by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

### Instruction Structure

The prompt editor allows you to define:

* **Trigger Contexts**: Specific activation situations
* **Structured Responses**: Response scripts organized by scenarios
* **Conditional Actions**: Behaviors based on interactions

<Card title="Prompt" icon="align-left" href="../prompt" color="FDB52A" horizontal>
  Learn to configure and contextualize your prompt effectively.
</Card>

<Tip>
  #### Best Practices

  * Structure your instructions by use case
  * Use bullet points for clarity
  * Integrate precise conditions to avoid ambiguities
  * Activate only the actions necessary for the context
</Tip>

### Speech Recognition Configuration

This section allows you to enable customization of end-of-speech detection only for this step (in its entirety). This allows, for example, to indicate to the agent that it should wait longer before considering that its interlocutor has finished their sentence.

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-speech-recognition-customization.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=4c7f0f9174894936380294dc92cb8f49" width="1240" height="591" data-path="images/agents/truepath/volubile-truepath-speech-recognition-customization.png" />
</Frame>

**Example:**

* 400 ms: For a standard conversation
* 2500 ms: Optimal to let the user spell

### Global Action Calls

This section allows you to activate the visibility of [global actions](./global-actions) made available to the agent for this particular prompt.

### LLM Transitions (`tool call`)

The Prompt action also allows for configuring intelligent transitions between the steps of your conversation graph. This advanced feature makes it easier to create dynamic journeys based on artificial intelligence.

**Transition Parameters**

<Frame>
  <img src="https://mintcdn.com/weengage/1STKBOQ8nOwjQf0A/images/agents/truepath/volubile-truepath-prompt-transition.png?fit=max&auto=format&n=1STKBOQ8nOwjQf0A&q=85&s=e959182c90d332bf962fcd8ee8ba86ed" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-prompt-transition.png" />
</Frame>

| Field                           | Description                                                       | Required |
| ------------------------------- | ----------------------------------------------------------------- | -------- |
| Transition Name                 | Descriptive identifier for the transition (maximum 64 characters) |          |
| Transition Description (prompt) | Activation conditions for this transition in natural language     |          |
| Transition Message              | Message spoken by the agent during execution (optional)           |          |
| Extraction Variables            | Variables to capture during the transition for later use          |          |

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The prompt can be dynamic by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

**Transition Message Configuration**

The interface offers a button to enable the configuration of a custom message:

* **Enable**: Allows you to define a specific message that the agent will say
* **Enable** and **Empty Message**: The agent automatically generates an appropriate transition message
* **Disable**: The agent will not speak during the transition

**Example message:** `"We are creating the appointment in the salesperson's calendar, please wait"`

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The transition message can be dynamic by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

**Variable Extraction**

This feature allows you to capture information during the transition:

* **Variable Name**: Technical identifier for reference (e.g., `appointmentDay`)
* **Description**: Explanation of what this variable represents (e.g., "The appointment day provided by the user")
* **Required**: Optional configuration to make extraction mandatory
* **Type**: Type of variable to extract (`string`, `number`, `boolean`)

These variables can be reused in other steps of the graph to personalize the conversational experience.

<Tip>
  #### Best Practices

  * Use natural and precise language in your behavioral instructions
  * Systematically test your configurations before deployment
  * Structure your instructions with bullet points for clarity
  * Define clear variable names for easier maintenance
  * Configure informative transition messages to enhance user experience
</Tip>

## Say

The Say node allows the agent to communicate predefined or dynamic vocal messages during the phone interaction.

### Use Cases

* Personalized welcome messages according to context
* Communications of specific information during the call
* Confirmations and vocal acknowledgments

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-say.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=acc54ce3da4d03d080413d00a49582e9" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-say.png" />
</Frame>

| Field         | Description                                                  |
| ------------- | ------------------------------------------------------------ |
| Action Name   | Name of the node                                             |
| Phrase to Say | Textual content of the message that the agent will pronounce |

<Warning>The message must be written in the agent's primary language (in this example: American English) to ensure optimal pronunciation.</Warning>

<Tip>
  1. <Icon icon="brackets-curly" iconType="solid" /> The phrase can be dynamic by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
  2. #### Best Practices

  * Use natural and conversational language
  * Avoid overly long phrases that may lose attention
  * Integrate variables to personalize the experience
</Tip>

## Call Transfer

The Transfer node enables the intelligent redirection of a call to another agent or an external number. This strategic feature can be configured to execute at different times during the interaction.

### Use Cases

* Transfer to a specialized agent when a particular request is identified
* Redirection to an external service outside of business hours
* Automatic escalation to technical support for complex issues

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=50307e8343a2439578134ddd0e5d3cec" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-transfer.png" />
</Frame>

When configuring a transfer action, please provide the following information:

| Field                 | Description                                                                                                                           |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Action Name           | Name of the node                                                                                                                      |
| SIP Connection        | Selection of an existing SIP connection for the transfer (optional)                                                                   |
| Maximum Ring Duration | Maximum ring duration (in seconds) before interrupting the transfer and resuming the call by the agent (Min 5s, Max 45s, Default 20s) |

### Adding a Transfer Number

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer-phone.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=be1ddcb6bd37ad379326384fa12d673b" width="921" height="178" data-path="images/agents/truepath/volubile-truepath-transfer-phone.png" />
</Frame>

Add a phone number by entering a number in the international E.164 format (e.g., `+33612375667`).

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The phone number (in international E.164 format, e.g., `+33612375667`) can be dynamically injected by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

### SIP Connection

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer-sip.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=500c9ce858eab089b9d0f5715ec9e541" width="945" height="442" data-path="images/agents/truepath/volubile-truepath-transfer-sip.png" />
</Frame>

If you have one or more existing SIP configuration(s) (see [SIP Connection](/en/telephony/outgoing-calls#integration-sip)), you can use them as the destination for the transfer action. Alternatively, enter the SIP identifier of your destination instead of a standard phone number.

**Custom Headers**

You can configure additional SIP headers specific to this transfer:

1. Click **Add** to add a new header
2. For each header, specify:
   * **Header Name**: Name of the SIP header
   * **Header Value**: Value associated with this header

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The destination ID and the value of a header can be dynamically injected by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

### Maximum Ring Duration

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer-ring-timeout.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=a5513466614e3ece9fc6689db023fc3c" width="976" height="362" data-path="images/agents/truepath/volubile-truepath-transfer-ring-timeout.png" />
</Frame>

You can adjust the maximum wait time before considering the transfer to have failed. The default parameter is `20 seconds` (Min 5s, Max 45s).

<Tip>
  #### Best Practices

  * Define time slots aligned with the actual availability of your teams
  * Use clear descriptions for each transfer destination
  * Perform comprehensive testing of the transfer journey to ensure a smooth experience
</Tip>

### Transfer List

The Transfer List node enables the intelligent selection of a transfer recipient from a predefined list of contacts or services. This feature seamlessly integrates into the conversational graph to automatically guide the caller to the right interlocutor.

### Use Cases

* Automatic selection of the appropriate service based on the customer's request
* Transfer to a specialist according to predefined criteria
* Centralized management of transfer contacts by service category

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer-list.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=9fd640635f452edff8905825611de6fc" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-transfer-list.png" />
</Frame>

| Field       | Description                                                                |
| ----------- | -------------------------------------------------------------------------- |
| Action Name | Name of the node                                                           |
| Prompt      | Contextual instructions defining the activation conditions for this action |

## Transfer List

The interface allows you to configure a structured list of contacts with all the necessary information:

| Column      | Description                                         |
| ----------- | --------------------------------------------------- |
| **column1** | e.g., Name or description of the service/department |
| **column2** | e.g., Phone number in international format          |
| **...**     |                                                     |
| **Actions** | Options for modifying and deleting entries          |

### Restricting Hours

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-transfer-restrictions.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=62fcc4ac39f00b811718072b799cc9d2" width="970" height="455" data-path="images/agents/truepath/volubile-truepath-transfer-restrictions.png" />
</Frame>

You can precisely define, by row of the table, the time slots that permit transfers:

1. Click on the **Edit Availability** icon in the corresponding row's actions
2. Select eligible days (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
3. Define the available hours (e.g., 09:00 - 17:00)
4. Click **Add** to validate this time slot.

<Tip>
  1) You have the option to define multiple daily time slots by selecting new time slots and clicking **Add** again
  2) A hidden column `isAvailable` will be automatically added to your row and as an output variable of the node to allow reusing the information in the following nodes
</Tip>

<Tip>
  #### Best Practices

  * Use clear and explicit service descriptions
  * Regularly check the validity of phone numbers
  * Organize your services by frequency of use
</Tip>

### Output Variables

The execution of this action automatically generates a `transferList` variable (the name of the variable is modifiable) that is an array of objects containing the previously configured information:

```json transferList theme={null}
[
    {
        "service": "Support",
        "phone": "+33612345679",
        "isAvailable": false
    },
    {
        "service": "Customer service",
        "phone": "+33612345678",
        "isAvailable": false
    }
]
```

<Note>
  <Icon icon="brackets-curly" iconType="solid" /> The variable `transferList` will be reusable in subsequent nodes of your graph and can be dynamically injected via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Note>

## List

The List node allows the creation and management of structured data lists usable throughout the interaction. This feature offers maximum flexibility for organizing and processing static information.

### Configuration Parameters

Two operating modes are available:

<Tabs>
  <Tab title="Table Mode" icon="table">
    Table mode allows for direct input of structured lists through a tabular interface.

    <Frame>
      <img src="https://mintcdn.com/weengage/1STKBOQ8nOwjQf0A/images/agents/truepath/volubile-truepath-list-mode-table.png?fit=max&auto=format&n=1STKBOQ8nOwjQf0A&q=85&s=0b2fc316dd10ca280eba656eb56b8aa1" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-list-mode-table.png" />
    </Frame>
  </Tab>

  <Tab title="Variable Reference" icon="code">
    Variable reference mode allows for the use of lists generated by other actions by referencing an `array` type variable from the data selector. [Use dynamic variables](#variables-and-data-selector)

    <Frame>
      <img src="https://mintcdn.com/weengage/1STKBOQ8nOwjQf0A/images/agents/truepath/volubile-truepath-list-mode-variable.png?fit=max&auto=format&n=1STKBOQ8nOwjQf0A&q=85&s=6dc5ff77d9d04ee6a5b405c4c38b7b8c" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-list-mode-variable.png" />
    </Frame>
  </Tab>
</Tabs>

| Field              | Description                                             |
| ------------------ | ------------------------------------------------------- |
| Action Name        | Name of the node                                        |
| List Prompt        | Contextual instructions for using this list             |
| Configuration Mode | Selection between "Table Mode" and "Variable Reference" |

### List Configuration

The interface allows for configuring a structured list with all your specific information:

| Column      | Description                                         |
| ----------- | --------------------------------------------------- |
| **column1** | e.g., Name or description of the service/department |
| **column2** | e.g., Phone number in international format          |
| **...**     |                                                     |
| **Actions** | Options for modifying and deleting entries          |

<Tip>
  #### Best Practices

  * Structure your data consistently
  * Use explicit column names
</Tip>

### Output Variables

The execution of this action automatically generates a `list` variable (modifiable) that is an array of objects containing the previously configured information:

```json list theme={null}
[
    {
        "service": "Support",
        "phone": "+33612345679"
    },
    {
        "service": "Customer service",
        "phone": "+33612345678"
    }
]
```

<Note>
  <Icon icon="brackets-curly" iconType="solid" /> The variable `list` will be reusable in subsequent nodes of your graph and can be dynamically injected via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Note>

## Workflow

This feature allows for developing sophisticated integrations with your external systems during the course of your communications.

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-workflow.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=a0a3e6a879d8f2b193cb028deaf2ba72" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-workflow.png" />
</Frame>

| Field             | Description                                                      |
| ----------------- | ---------------------------------------------------------------- |
| Action Name       | Name of the node                                                 |
| Select a Workflow | Selection of the workflow to call that was previously configured |
| var1              | Variable var1 requested as input for the workflow                |
| var2              | Variable var2 requested as input for the workflow                |
| ...               |                                                                  |

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> Input variables for the workflow (var1, var2, ...) can be dynamically injected by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

<Card title="Configure Workflows During the Call" icon="arrow-pointer" href="/en/integrations/workflows/live-call" horizontal>
  See how to configure workflows
</Card>

### Output Variables

The execution of this workflow must generate a `json` data structure as output to be used as a variable in subsequent nodes.

<Tip>You will be able to copy this return in the last step of your workflow and paste it here so that this data structure is taken into account in the data selector. [Use dynamic variables](#variables-and-data-selector).</Tip>

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-workflow-output.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=43c950c4dd6b58b5d522fba069fd515c" width="1581" height="694" data-path="images/agents/truepath/volubile-truepath-workflow-output.png" />
</Frame>

## Router

Configuring a hang-up action requires defining the following parameters:

### Configuration Parameters

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-router.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=0441e1106bf468f0ec61c1e454c44f45" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-router.png" />
</Frame>

| Parameter   | Description      |
| ----------- | ---------------- |
| Action Name | Name of the node |

### Use Cases

* Creation of conditional branches based on the interlocutor's responses
* Intelligent routing based on customer or contextual data
* Implementation of complex business logic with multiple conditions
* Personalization of conversation pathways based on variable parameters

### Transition Conditions

The Router action allows creating conditional branches in your conversation graph by defining complex logical rules. This strategic feature gives you the opportunity to guide your agent's behavior based on specific criteria and multiple conditions.

<Frame>
  <img src="https://mintcdn.com/weengage/DhTJGqKM0FN88ypW/images/agents/truepath/volubile-truepath-router-transition.png?fit=max&auto=format&n=DhTJGqKM0FN88ypW&q=85&s=464f1b13701a4225415b5d6a1f7cd3ad" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-router-transition.png" />
</Frame>

**Execute If (primary condition)**
Defines the primary condition that determines the execution of this branch:

* **First Value**: Enter the variable or value to evaluate (e.g., `isOpen`, `customerNumber`)
* **Operator**: Select the comparison operator appropriate for the data type
* **Second Value (optional depending on the operator)**: Reference value for comparison (e.g., `12345`)

**And If (additional conditions)**
Allows you to add additional conditions to refine the logic.

<Tip>
  <Icon icon="brackets-curly" iconType="solid" /> The first and second values can be dynamic by inserting a variable via the data selector. [Use dynamic variables](#variables-and-data-selector)
</Tip>

### Available Operators

The platform offers a complete range of operators for building your conditions:

**Boolean Operators**

* `Is false`: Checks if the value is false
* `Is true`: Checks if the value is true

**Date Operators**

* `Is after`: Checks if the date is later
* `Is before`: Checks if the date is earlier
* `Is equal to`: Checks date equality

**Field Operators**

* `Does not exist`: Checks for the absence of the field
* `Exists`: Checks for the presence of the field

**List Operators**

* `Contains`: Checks if the list contains the item
* `Does not contain`: Checks for the absence of the item
* `Is empty`: Checks if the list is empty
* `Is not empty`: Checks if the list contains items

**Temporal Operators (relative to now, at the time of the call)**

* `In timeslot`: Checks if within the time slot
* `Not in timeslot`: Checks if outside the time slot

**Numeric Operators**

* `Is equal to`: Numeric equality
* `Is greater than`: Strict superiority
* `Is less than`: Strict inferiority

**Text Operators**

* `Contains`: Contains the substring
* `Does not contain`: Does not contain the substring
* `Does not end with`: Does not end with
* `Does not exactly match`: Does not match exactly
* `Does not start with`: Does not start with
* `Ends with`: Ends with
* `Exactly matches`: Matches exactly
* `Starts with`: Starts with

### Advanced Conditional Logic

**Combining Conditions**

* Use the `+And` and `+Or` buttons to create complex logics
* Combine multiple conditions with boolean operators
* Create sophisticated routing rules for complex business scenarios

**Example Configuration:**

```
Transition Name: "Open"

Execute if:
- First Value: isOpen
- Operator: Is true

And if:
- First Value: customerNumber
- Operator: Is equal to
- Second Value: 12345
```

<Tip>
  #### Best Practices

  * Use explicit transition names for easier maintenance
  * Test each conditional branch individually
  * Document business logic for easier future modifications
  * Avoid overly complex conditions that could create errors
</Tip>

## Hang Up

The hang-up action allows for controlled termination of a communication under specifically defined conditions. This feature can be implemented at various stages of the interaction.

<Note>
  A default hang-up mechanism (not visible in this interface) is already integrated to avoid interaction loops while preserving the quality of the user experience.
</Note>

<Frame>
  <img src="https://mintcdn.com/weengage/1STKBOQ8nOwjQf0A/images/agents/truepath/volubile-truepath-hangup.png?fit=max&auto=format&n=1STKBOQ8nOwjQf0A&q=85&s=8c77f779adebcafc8095ac8c80f69b56" width="2800" height="1800" data-path="images/agents/truepath/volubile-truepath-hangup.png" />
</Frame>

### Use Cases

The hang-up action is particularly relevant when all conversation objectives have been achieved.

### Configuration Parameters

Configuring a hang-up action requires defining the following parameters:

| Parameter   | Description      |
| ----------- | ---------------- |
| Action Name | Name of the node |
