# Say

> Speaks a line you write: greetings, confirmations, goodbyes. Can also speak what an AI decision wrote.

Source: https://voxio.in/docs/steps-say · voxioagent 2.0.0 · Index: https://voxio.in/docs/llms.txt

Type: `out`.

## What it does

1. Starts from `out_dict` exactly as written: usually `speak`, and sometimes `hangup` or your own keys.
2. Adds each value named in `variables` from the call's state. Names with no value yet are left out.
3. Sends the result to the caller. `speak` is spoken, `hangup: true` ends the call once it's said, and anything else travels with the turn to your webhook.

## Settings

Everything goes in the step's `parameters`. In the editor, click the step to open its settings.

- `interruption_type` (string): In the editor: **If the caller interrupts**. What happens when the caller talks over the agent. Default: `"full"`.
- `out_dict` (object): In the editor: **Also send** (More tab). Extra details sent to your webhook, not spoken — like end the call.
- `variables` (string[]): In the editor: **Pass along** (More tab). Values from earlier steps to send with it.
- `out_dict.speak` (string): In the editor: **What to say**. Spoken exactly as written. Leave it out to say nothing of your own.
- `interruption_metadata` (object): Numbers for the timed and length-based interruption types: `duration` (seconds), `length` (words), `ignore-words`.
- `remove` (boolean): Clean the `variables` before sending. With `remove_tts`, strips emotion cues such as `[laughs]` (for example, to show them in a transcript). Default `false`.
- `remove_tts` (boolean): Strip voice cues when `remove` is on. Default `false`.
- `remove_tts_name` (string): Which cue style to strip. Default `"eleven_v3"`.

## Examples

### A fixed line

A greeting that can’t be talked over:

```json
{
  "type": "out",
  "parameters": {
    "out_dict": {
      "speak": "Hi! Thanks for calling Sunrise Dental."
    },
    "interruption_type": "no"
  },
  "next": "ask_for_input"
}
```

### Speak what the AI decided

After an AI decision, speak its reply and pass on its hang-up decision:

```json
{
  "type": "out",
  "parameters": {
    "variables": [
      "speak",
      "hangup"
    ]
  },
  "next": "ask_for_input"
}
```

### Send data without speaking

Record an outcome for your webhook, silently:

```json
{
  "type": "out",
  "parameters": {
    "out_dict": {
      "stage": "booking_confirmed"
    },
    "variables": [
      "outcome"
    ]
  }
}
```

## Next steps

- [Steps](https://voxio.in/docs/steps.md): all the other steps.
- [Patterns](https://voxio.in/docs/workflows-patterns.md): see it in a full workflow.
