O objeto `channel` determina por que canais e por que ordem a mensagem é enviada. Está disponível em [Advanced transactional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-transactional/2.0/) e [Advanced promotional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-promotional/2.0/), apenas na versão `2.0` da API.

## Tabela de canais

Cada chave do objeto `channel` corresponde a um canal e contém o objeto próprio desse canal.

| CHAVE        | OBJETO DO CANAL                                                                                                                    |
|:-------------|:-----------------------------------------------------------------------------------------------------------------------------------|
| `sms`        | [SMS](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-sms/)                                                                                                       |
| `viber`      | [Viber – transacional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-viber-transacional/) / [Viber – promocional](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-viber-promocional/)         |
| `rcs`        | [RCS](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-rcs/)                                                                                                       |
| `whatsapp`   | [WhatsApp](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-whatsapp/)                                                                                             |

## Ordem da cascata

**A ordem das chaves no pedido é a ordem da cascata.** A primeira chave é o canal principal; se a mensagem não puder ser entregue através dele, é utilizado o canal seguinte da lista.

```json
{
	"channel": {
		"viber": { "sender": "BulkGate" },
		"sms": { "sender_id": "gText", "sender_id_value": "BulkGate" }
	}
}
```

Aqui é tentado primeiro o Viber e depois o SMS. Trocar as duas chaves troca a prioridade - nada mais no pedido se altera.

> [!IMPORTANT]
> O SMS **não** é acrescentado automaticamente ao fim da cascata. Se quiser o SMS como última alternativa, indique explicitamente o objeto `sms`. Uma cascata apenas com `{"viber": {…}}` não tem qualquer alternativa.

Se `channel` for totalmente omitido, a mensagem é enviada como SMS com o remetente predefinido.

## Mudança entre canais - `expiration`

Cada objeto de canal tem o seu próprio `expiration` - o limite de tempo em segundos após o qual é utilizado o canal seguinte da cascata. Os valores inferiores a `60` são ignorados e substituídos pelo valor predefinido desse canal.

| CANAL      | `expiration` PREDEFINIDO |
|:-----------|:------------------------:|
| `viber`    | `300`                    |
| `rcs`      | `60`                     |
| `whatsapp` | `180`                    |

## Que texto é utilizado

`sms` e `viber` procuram o texto em três sítios; vence o primeiro que não estiver vazio:

| PRIORIDADE | SÍTIO                                 | NOTA                                                             |
|:----------:|:--------------------------------------|:-----------------------------------------------------------------|
| 1          | `number[].text`                       | texto de um destinatário específico, consulte [Valor `number`](https://www.bulkgate.com/pt/documentacao/advanced-api/advanced-transactional/2.0/) |
| 2          | `channel.sms.text` / `channel.viber.text` | texto apenas para esse canal                                 |
| 3          | `text`                                | texto de nível superior do pedido                                |

`rcs` e `whatsapp` **não leem nenhum deles**. O seu conteúdo encontra-se dentro do respetivo objeto de variante (`message`, `template`, `card`, …), pelo que o `text` de nível superior não tem qualquer efeito sobre eles.

## Erros

| TIPO                       | SIGNIFICADO                                                                  |
|:---------------------------|:-----------------------------------------------------------------------------|
| `invalid_rcs_variant`      | o objeto `rcs` não contém nenhum ou contém mais do que um de `message`/`file`/`card`/`carousel` |
| `invalid_whatsapp_variant` | o objeto `whatsapp` não contém nenhum ou contém mais do que um de `template`/`otp`/`message`/`file`/`location` |
| `no_recipients`            | o pedido não resultou em nenhum destinatário válido                          |

Todos os tipos de erros da Simple API e da Advanced API podem ser consultados [aqui](https://www.bulkgate.com/pt/documentacao/administracao-da-api/tipos-de-erro-api/).
