---
id: "twilio-flex"
type: "component"
kind: "contact-center"
provider: "default"
category: "messaging"
docs: "https://www.twilio.com/docs/flex/admin-guide/core-concepts/voice"
url: "https://localhost:3000/catalogue/components/twilio-flex"
---

# Twilio Flex

Twilio-hosted programmable contact center routed by TaskRouter skills-based routing.

| | |
|---|---|
| Provider | [default](https://localhost:3000/catalogue?provider=default) |
| Kind | [Contact center](https://localhost:3000/catalogue/kinds/contact-center) |
| Category | Messaging |
| Official docs | [https://www.twilio.com/docs/flex/admin-guide/core-concepts/voice](https://www.twilio.com/docs/flex/admin-guide/core-concepts/voice) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `callRecording` | boolean | — | no | false | **false** |
| `channelChat` | boolean | — | no | false | **true** |
| `channelVoice` | boolean | — | no | true | **true** |
| `conversationRelay` | boolean | — | no | false | inherited |
| `dualChannelRecording` | boolean | — | no | false | inherited |
| `emergencyCalling` | boolean | — | no | false | inherited |
| `managed` | boolean | — | no | false | **true** |
| `maxConcurrentContacts` | integer | — | no | — | inherited |
| `outboundDialing` | boolean | — | no | false | inherited |
| `recordingRetentionDays` | integer | — | no | — | inherited |
| `routing` | enum | `fifo`, `skills-based`, `attribute-based` | no | "fifo" | **"skills-based"** |
| `taskChannel` | enum | `voice`, `chat`, `sms`, `video`, `email`, `default` | no | — | inherited |
| `uiHosting` | enum | `twilio-hosted`, `self-hosted` | no | "twilio-hosted" | inherited |
| `workerCapacityConfigurable` | boolean | — | no | true | inherited |

Bold values are the ones this component pins.

## Rules that apply · 0

No rule selects this kind or its category.

## Other products of the same kind · 13

- [Cloud Call Center](https://localhost:3000/catalogue/components/alibaba-cloud-call-center.md) `alibaba-cloud-call-center` — alibabacloud
- [Amazon Connect](https://localhost:3000/catalogue/components/aws-connect.md) `aws-connect` — aws
- [Asterisk](https://localhost:3000/catalogue/components/asterisk.md) `asterisk` — default
- [Generic contact center](https://localhost:3000/catalogue/components/contact-center.md) `contact-center` — default
- [Five9](https://localhost:3000/catalogue/components/five9.md) `five9` — default
- [FreePBX](https://localhost:3000/catalogue/components/freepbx.md) `freepbx` — default
- [FreeSWITCH](https://localhost:3000/catalogue/components/freeswitch.md) `freeswitch` — default
- [Genesys Cloud CX](https://localhost:3000/catalogue/components/genesys-cloud.md) `genesys-cloud` — default
- [Kamailio](https://localhost:3000/catalogue/components/kamailio.md) `kamailio` — default
- [OpenSIPS](https://localhost:3000/catalogue/components/opensips.md) `opensips` — default
- [Talkdesk CX Cloud](https://localhost:3000/catalogue/components/talkdesk.md) `talkdesk` — default
- [3CX](https://localhost:3000/catalogue/components/threecx.md) `threecx` — default
- [Google Cloud CCaaS](https://localhost:3000/catalogue/components/google-ccaas.md) `google-ccaas` — gcp

## Use it in a design

```yaml
nodes:
  - { id: "twilio-flex", component: "twilio-flex" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Twilio Flex: Twilio-hosted "digital engagement center for sales and customer support teams",
# routed by TaskRouter, "a skills-based routing system that provides the heart of a contact center
# that you can control from your code", with per-TaskChannel worker capacity ("Flex", "TaskRouter").
# Call recording is off until it is turned on "on the Voice page in Flex Console", where dual-channel
# recording is the preferred mode and is inbound only ("Core concepts: Voice").
#
# conversationRelay is Twilio ConversationRelay, a Programmable Voice feature: the TwiML <Connect><ConversationRelay>
# noun turns a call's speech into text, streams it over a WebSocket to your application and speaks the replies with
# a chosen TTS voice ("ConversationRelay", https://www.twilio.com/docs/voice/conversationrelay). No component in the
# catalogue represents Twilio Voice alone, and Flex is the one that carries voice calls, so the flag sits here.
schemaVersion: "1"
type: "component"
id: "twilio-flex"
kind: "contact-center"
provider: "default"
docs: "https://www.twilio.com/docs/flex/admin-guide/core-concepts/voice"
defaults:
  managed: true
  channelVoice: true
  channelChat: true
  routing: "skills-based"
  callRecording: false
properties:
  taskChannel:
    type: "enum"
    values: ["voice", "chat", "sms", "video", "email", "default"]
  dualChannelRecording:
    type: "boolean"
    default: false
  workerCapacityConfigurable:
    type: "boolean"
    default: true
  uiHosting:
    type: "enum"
    values: ["twilio-hosted", "self-hosted"]
    default: "twilio-hosted"
  conversationRelay:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/twilio-flex
