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

# SignalWire

> Connecting to the SignalWire Voice API

<Info>
  **New in 3.17**

  The SignalWire connector has been made generally available in Rasa Pro 3.17.
</Info>

Use this channel to connect your Rasa assistant to
[SignalWire](https://www.signalwire.com/). SignalWire is a cloud communications platform
that provides Voice APIs and phone numbers.

## Basic Rasa configuration

Create or edit your `credentials.yml` and add a new channel configuration:

```yaml title="credentials.yml" theme={null}
signalwire:
  server_url: "<your-domain>"
  username: "<username>"
  password: "<password>"
  asr:
    name: "deepgram"  # or "azure"
    # ASR-specific configuration
  tts:
    name: "deepgram"  # or "cartesia", "azure"
    # TTS-specific configuration
  interruptions:  # optional
    enabled: true
    min_words: 3
```

You can run that assistant using `rasa run`. To configure the SignalWire channel,
you will need a URL to your Rasa assistant. You can use a tunneling solution like
[ngrok](https://ngrok.com/) to expose your assistant for development.

<Info>
  **Bot URLs for development**

  Visit this [section](/docs/reference/channels/messaging-and-voice-channels#testing-channels-on-your-local-machine) to learn how to generate
  the required bot URL when testing the channel on your local machine.
</Info>

## Configuring SignalWire

To route calls to your Rasa assistant, you need to have a SignalWire account and a phone number.

1. Sign up for [SignalWire](https://www.signalwire.com/).
2. Once logged in, buy a phone number from SignalWire.
3. Create a *cXML Script* with *Calling* call type. To route calls to your assistant, choose to
   handle using External URL. You'll either need to deploy your assistant to a server
   or use a tunneling solution like [ngrok](https://ngrok.com/) for development.

   The External URL will be in the format
   `wss://<your-server>/webhooks/signalwire/webhook`

   or if using ngrok, it will look like this:
   `wss://recently-communal-duckling.ngrok-free.app/webhooks/signalwire/webhook`
4. You can add Status change URL.

   It will be in the format
   `wss://<your-server>/webhooks/signalwire/call_status`

   or in the case of ngrok look like this:
   `wss://recently-communal-duckling.ngrok-free.app/webhooks/signalwire/call_status`
5. After saving the script, in the *Addresses & Phone Numbers* section, add the chosen number to your application.

## Usage

You can call the SignalWire number from any other number in order to talk to the deployed bot.

### Audio format

The default audio format on SignalWire channel is **Linear 16 bit 24KHz PCM mono**


## Related topics

- [Call Recording](/docs/reference/config/call-recording.md)
- [Rasa Pro Change Log](/docs/reference/changelogs/rasa-pro-changelog.md)
- [Custom Connectors](/docs/reference/channels/custom-connectors.md)
- [Rasa Pro Port and Protocol Rules](/docs/reference/deployment/pro-port-and-protocol-rules.md)
- [A2A Server](/docs/reference/integrations/a2a-server.md)
