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 to a body - 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.
{
"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 to a agentId 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.
{
"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í.
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 HTTP a Webhooks, 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/messagesa 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
Acceptedokamž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/callshovor jen spustí a vrátí jehoid- synchronně, během chvilky. Jestli se hovor doopravdy dovolal, dokončil, nebo selhal, se dozvíš až později přes webhookcall.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ýš.