Přeskočit na obsah
REST API

SMS a hovory přímo ze scénáře Make

Make zavolá REST API volai přes obecný modul HTTP - ze scénáře tak odešleš SMS, spustíš hovor přes hlasového agenta a výsledek dostaneš webhookem.

1Připrav si klíč jako connection

V modulu HTTP > Make a request přidej hlavičku Authorization s hodnotou Bearer vk_TVUJ_KLIC (klíč najdeš v portálu v sekci API a MCP). Ulož si ho jako znovupoužitelné připojení, ať ho nemusíš opisovat do každého modulu zvlášť.

2Pošli SMS ze scénáře

Přidej modul HTTP > Make a request: metoda POST, URL https://volai.cz/v1/messages, tělo typu Raw (JSON) s poli tobody - hodnoty klidně namapuj z bundlu předchozího modulu (řádek tabulky, webhook) místo ručního opisování. Zapni Parse response, ať se priceHal (cena v haléřích za všechny segmenty) a segments z odpovědi rovnou rozloží do bundlu k dalšímu mapování - bez toho dostaneš jen syrový text a musel bys přidat zvlášť modul Parse JSON. U textu s diakritikou vyjde segmentů víc než u čistě ASCII zprávy.

json
{
  "to": "+420777123456",
  "body": "Objednavka je pripravena k vyzvednuti."
}

3Spusť hovor přes hlasového agenta

Přidej druhý modul HTTP > Make a request: POST https://volai.cz/v1/calls, tělo Raw (JSON) s toagentId existujícího hlasového agenta - agent musí mít přiřazené vlastní číslo, jinak požadavek skončí chybou agent_no_number. Pole to obvykle nevypisuješ ručně, ale namapuješ z bundlu předchozího modulu (třeba telefonní číslo z řádku Google Sheets) - klikni do pole a vyber proměnnou z nabídky. I tady se hodí Parse response: rozloží id spuštěného hovoru rovnou do bundlu, ať ho jde namapovat dál bez zvláštního modulu Parse JSON. Modul jen hovor spustí - o skutečném výsledku (dokončil se, nezvedl se, selhal) se dozvíš až z webhooku v dalším kroku.

json
{
  "to": "+420777123456",
  "agentId": "ag_kx91fa2b"
}

4Přijmi události zpátky přes Custom webhook

Přidej modul Webhooks > Custom webhook - Make ti vygeneruje URL a přijatý požadavek rovnou potvrdí (splňuje podmínku rychlé odpovědi 200 z /docs/webhooky). Tu samou adresu ulož přes PUT /v1/webhook spolu se seznamem událostí, které tě zajímají. Pozor: prázdné pole events neznamená žádnou událost, ale úplně všechny - radši je vždy vyjmenuj. Odpověď vrátí i secret - ulož si ho hned, GET /v1/webhook ho už nevrátí.

bash
curl -X PUT https://volai.cz/v1/webhook \
  -H "Authorization: Bearer vk_TVUJ_KLIC" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hook.eu2.make.com/xxxxxxxx", "events": ["call.completed", "message.sent"]}'

5Rozveď scénář podle typu události

Pole event v těle webhooku (call.completed, call.failed, call.no_answer, call.missed, message.sent) rozliš modulem Router nebo filtrem na hraně větve. Ověření podpisu Volai-Signature (HMAC-SHA256 nad {t}.{rawBody} se svým secret) doplň podle přesného vzorce na /docs/webhooky - u citlivého scénáře (platby, zápis do účetnictví) ho nevynechávej.

Co s tím uděláš

Iterator rozešle SMS napříč seznamem kontaktů

Modul Iterator rozloží pole kontaktů (třeba z Google Sheets nebo z JSON pole) na jednotlivé položky a modul HTTP pak pro každou zavolá POST /v1/messages zvlášť - typicky hromadné oznámení nebo připomínka pro celou skupinu zákazníků najednou.

Filtr na spojnici rozhodne, komu se má zavolat

Make umí podmínku umístit přímo na spojnici mezi moduly - filtr pustí dál jen řádky, které splňují podmínku (třeba že termín je zítra a zákazník ještě nepotvrdil), a teprve ty spustí modul HTTP na POST /v1/calls.

Error handler zachytí neúspěšný hovor

Na modul HTTP, který volá /v1/calls, přidej error handler route se směrem Ignore - selhání jednoho hovoru (třeba neplatné číslo) tak zapíšeš do tabulky nebo pošleš na Slack k ruční kontrole, aniž by spadl celý scénář.

Časté otázky

Existuje pro volai vlastní app v Make marketplace?
Zatím ne - stačí obecné moduly HTTPWebhooks, které má Make vždy k dispozici. Vlastní app v Make je otázka Make Technology Partner Programu, který zatím neřešíme.
Kolik operací spotřebuje scénář se dvěma moduly HTTP?
Každé spuštění modulu se počítá jako jedna operace - scénář, který zavolá /v1/messages a pak /v1/calls, spotřebuje řádově dvě až tři operace za běh, podle toho, kolik modulů stojí mezi nimi. Limit operací určuje tvůj plán Make, ne volai.
Jak nastavím error handler nad modulem HTTP, ať selhání jednoho hovoru nezastaví celý scénář?
Klikni pravým tlačítkem na modul HTTP a přidej error handler route. Uvnitř zvol direktivu Ignore - scénář chybu ignoruje a pokračuje dál, jako by modul nevrátil žádný výstup. Když další moduly potřebují náhradní hodnotu místo chybějícího výstupu, použij Resume s vlastním záložním výstupem. Po Break sáhni, jen když chceš běh rovnou zastavit a spuštění si pak ručně nebo automaticky zopakovat.
Proč Custom webhook vrátí `Accepted` hned, ještě než scénář doběhne?
Tak Custom webhook modul funguje ve výchozím nastavení - potvrdí příjem stavem 200 a textem Accepted okamžitě, scénář pak doběhne na pozadí. Volajícímu (třeba volai) stačí dostat 200 do pár sekund - to splňuje.
Proč modul HTTP po zavolání POST /v1/calls hned pokračuje dál, i když hovor ještě neskončil?
POST /v1/calls hovor jen spustí a vrátí jeho id - synchronně, během chvilky. Jestli se hovor doopravdy dovolal, dokončil, nebo selhal, se dozvíš až později přes webhook call.completed / call.failed / call.no_answer / call.missed. Scénář proto nemusí na nic čekat ani nic pollovat - stačí na tenhle výsledek navázat modulem Custom webhook popsaným výš.

Vyzkoušej to hned

Zaregistruj se a prvních 50 Kč je na nás.