Objekt `channel` určuje, kterými kanály se zpráva odešle a v jakém pořadí. Je k dispozici v [Advanced transactional](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-transactional/2.0/) a [Advanced promotional](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-promotional/2.0/), pouze ve verzi API `2.0`.

## Tabulka kanálů

Každý klíč objektu `channel` je jeden kanál a nese vlastní objekt daného kanálu.

| KLÍČ         | OBJEKT KANÁLU                                                                                                                      |
|:-------------|:-----------------------------------------------------------------------------------------------------------------------------------|
| `sms`        | [SMS](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-sms/)                                                                                                       |
| `viber`      | [Viber – transakční](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-viber-transakcni/) / [Viber – promo](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-viber-promo/)                  |
| `rcs`        | [RCS](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-rcs/)                                                                                                       |
| `whatsapp`   | [WhatsApp](https://www.bulkgate.com/cs/dokumentace/advanced-api/advanced-whatsapp/)                                                                                             |

## Pořadí kaskády

**Pořadí klíčů v requestu je pořadím kaskády.** První klíč je primární kanál; pokud jím zprávu nelze doručit, použije se další kanál v pořadí.

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

Tady se nejdřív zkusí Viber, potom SMS. Prohození obou klíčů prohodí prioritu - nic jiného v requestu se nemění.

> [!IMPORTANT]
> SMS se na konec kaskády **nepřidává** automaticky. Pokud ji chcete jako poslední záchranu, uveďte objekt `sms` explicitně. Kaskáda `{"viber": {…}}` samotná žádnou záchranu nemá.

Když objekt `channel` neuvedete vůbec, odešle se zpráva jako SMS s výchozím odesílatelem.

## Přepnutí mezi kanály - `expiration`

Každý objekt kanálu má vlastní `expiration` - časový limit v sekundách, po jehož vypršení se použije další kanál v kaskádě. Hodnoty nižší než `60` se ignorují a nahradí se výchozí hodnotou daného kanálu.

| KANÁL      | VÝCHOZÍ `expiration` |
|:-----------|:---------------------:|
| `viber`    | `300`                 |
| `rcs`      | `60`                  |
| `whatsapp` | `180`                 |

## Který text se použije

`sms` a `viber` hledají text na třech místech, vyhrává první neprázdné:

| PRIORITA | MÍSTO                                     | POZNÁMKA                                                              |
|:--------:|:-------------------------------------------|:-----------------------------------------------------------------------|
| 1        | `number[].text`                            | text jednoho konkrétního příjemce, viz [Hodnota `number`](docs:cs:advanced-transactional:2.0) |
| 2        | `channel.sms.text` / `channel.viber.text`  | text pro jeden konkrétní kanál                                         |
| 3        | `text`                                     | text na nejvyšší úrovni requestu                                       |

`rcs` a `whatsapp` **nečtou ani jedno z nich**. Jejich obsah žije uvnitř vlastního objektu varianty (`message`, `template`, `card`, …), takže `text` na nejvyšší úrovni na ně nemá vliv.

## Chyby

| TYP                        | VÝZNAM                                                                       |
|:---------------------------|:-------------------------------------------------------------------------------|
| `invalid_rcs_variant`      | objekt `rcs` neobsahuje žádnou nebo obsahuje víc než jednu z variant `message`/`file`/`card`/`carousel` |
| `invalid_whatsapp_variant` | objekt `whatsapp` neobsahuje žádnou nebo obsahuje víc než jednu z variant `template`/`otp`/`message`/`file`/`location` |
| `no_recipients`            | request nevytvořil žádného platného příjemce                                  |

Všechny typy chyb pro Simple API i Advanced API najdete [zde.](https://www.bulkgate.com/cs/dokumentace/api-administrace-a-tokeny/typy-chyb-api/)
