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

# Jak nastavit SMS fallback pro WhatsApp zprávy

> Odešlete WhatsApp zprávu, která automaticky přejde na SMS, pokud doručení přes WhatsApp selže.

Tento návod ukazuje, jak odeslat WhatsApp zprávu s automatickou SMS zálohou pomocí pole `flow` v JSON API v2. SmsManager se nejprve pokusí doručit přes WhatsApp a v případě selhání automaticky přejde na SMS — bez psaní vlastní logiky pro opakování.

Návod předpokládá, že už umíte odeslat základní zprávu a máte API klíč. Pokud teprve začínáte s WhatsAppem, projděte nejdřív [Odeslání WhatsApp zprávy](/cs/guides/send-whatsapp).

## Jak fallback funguje

Pole `flow` je seřazený seznam kanálů. SmsManager je zkouší postupně od prvního k poslednímu a zastaví se u prvního, který zprávu doručí. Jakmile uvedete `whatsapp_template` (nebo `whatsapp_text`) jako první a `sms` jako druhý, získáte přesně fallback z WhatsAppu na SMS.

Podrobnosti o řazení kanálů a podmínkách selhání najdete v konceptu [Tok zpráv](/cs/concepts/message-flow) a [Kanály](/cs/concepts/channels).

<Note>
  Vždy uvádějte SMS jako **poslední** kanál ve `flow`. SMS funguje na každém mobilním telefonu bez instalace aplikace, takže je nejspolehlivější finální zálohou.
</Note>

## Předpoklady

* Připojený **WhatsApp Business účet** a jeho **Phone Number ID** — viz [Odeslání WhatsApp zprávy](/cs/guides/send-whatsapp).
* Pro proaktivní oslovení **předschválená šablona** s přesným názvem a kódem jazyka. Rozdíl mezi šablonou a volným textem popisuje [Typy WhatsApp zpráv](/cs/concepts/whatsapp-message-types).

## Sestavte požadavek s fallbackem

<Steps>
  <Step title="Nastavte kořenové body pro SMS zálohu">
    Kanál `sms` nemá vlastní obsah, takže jako text SMS použije kořenové pole `body`. Vždy jej nastavte — jinak by SMS záloha dorazila prázdná.

    ```json Kořen požadavku theme={null}
    {
      "body": "Ahoj Jane, vaše objednávka ORDER-123 byla odeslána!",
      "to": [{ "phone_number": "420777123456" }]
    }
    ```
  </Step>

  <Step title="Přidejte WhatsApp jako první krok flow">
    Uveďte `whatsapp_template` jako první prvek pole `flow`. Nastavte `sender` na vaše Phone Number ID, `template_name` na název schválené šablony a `language` na kód jazyka. Proměnné šablony předejte v poli `params`.
  </Step>

  <Step title="Přidejte SMS jako druhý (záložní) krok">
    Za WhatsApp přidejte objekt `sms`. Pokud WhatsApp krok selže — příjemce nemá WhatsApp, šablona není schválená nebo vyprší `ttl` — SmsManager automaticky přejde na SMS.
  </Step>
</Steps>

## Kompletní příklad

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.smsmngr.com/v2/message \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "body": "Ahoj Jane, vaše objednávka ORDER-123 byla odeslána!",
      "to": [{ "phone_number": "420777123456" }],
      "tag": "transactional",
      "callback": "https://yourapp.com/webhooks/sms",
      "flow": [
        {
          "whatsapp_template": {
            "sender": "514578330250514",
            "template_name": "order_update",
            "language": "cs",
            "params": ["Jan", "ORDER-123"],
            "ttl": 60
          }
        },
        {
          "sms": {
            "sender": "MujObchod",
            "gateway": "high"
          }
        }
      ]
    }'
  ```

  ```json Tělo požadavku theme={null}
  {
    "body": "Ahoj Jane, vaše objednávka ORDER-123 byla odeslána!",
    "to": [{ "phone_number": "420777123456" }],
    "tag": "transactional",
    "callback": "https://yourapp.com/webhooks/sms",
    "flow": [
      {
        "whatsapp_template": {
          "sender": "514578330250514",
          "template_name": "order_update",
          "language": "cs",
          "params": ["Jan", "ORDER-123"],
          "ttl": 60
        }
      },
      {
        "sms": {
          "sender": "MujObchod",
          "gateway": "high"
        }
      }
    ]
  }
  ```
</CodeGroup>

<Note>
  Chcete-li fallback z **volného textu** (v otevřeném 24hodinovém okně) na SMS, nahraďte první krok kanálem `whatsapp_text` s vlastním `body`. Kompletní pole obou kanálů popisuje [Kanály](/cs/concepts/channels).
</Note>

## Jak zjistit, který kanál doručil

Odpověď API potvrdí přijetí požadavku, ale samotné doručení proběhne asynchronně. Který kanál nakonec zprávu doručil, zjistíte z **doručovacích webhooků**: SmsManager pošle POST na vaši `callback` URL při každé změně stavu a payload obsahuje kanál, přes který byla zpráva odeslána.

Nastavení příjemce webhooků a strukturu payloadu popisuje [Doručovací webhooky](/cs/guides/webhooks). Sekvenci pokusů napříč kanály detailně vysvětluje [Tok zpráv](/cs/concepts/message-flow).

## Poznámky a řešení potíží

* **Prázdná SMS záloha** — kanál `sms` bez vlastního `body` použije kořenové `body`. Pokud kořenové `body` chybí, SMS dorazí prázdná. Vždy jej nastavte.
* **WhatsApp krok se přeskočí** — nejčastěji šablona ještě není schválená Metou, číslo nemá souhlas příjemce, nebo vyprší `ttl` před doručením. Ve všech těchto případech flow korektně přejde na SMS.
* **`whatsapp_text` mimo 24hodinové okno** — volný text lze odeslat jen v aktivním zákaznickém okně. Mimo něj kanál selže a flow přejde na SMS. Pro proaktivní oslovení použijte `whatsapp_template`.

<Warning>
  Kanály `whatsapp_template` a `whatsapp_text` mají odlišná pravidla doručitelnosti. Před sestavením flow ověřte, který typ odpovídá vašemu scénáři — viz [Typy WhatsApp zpráv](/cs/concepts/whatsapp-message-types).
</Warning>

## Další kroky

<CardGroup cols={2}>
  <Card title="Doručovací webhooky" icon="webhook" href="/cs/guides/webhooks">
    Přijímejte stav doručení a zjistěte, který kanál zprávu doručil.
  </Card>

  <Card title="Tok zpráv" icon="diagram-project" href="/cs/concepts/message-flow">
    Pochopte řazení kanálů a podmínky, za kterých flow přechází dál.
  </Card>
</CardGroup>
