SMS-uri și apeluri direct din scenariul Make
Make apelează REST API-ul volai prin modulul generic HTTP - din scenariu trimiteți SMS-uri, porniți apeluri prin agentul vocal și primiți rezultatul prin webhook.
1Pregătiți cheia ca o conexiune
În modulul HTTP > Make a request adăugați antetul Authorization cu valoarea Bearer vk_TVUJ_KLIC (cheia o găsiți în portal, în secțiunea Asistent AI). Salvați-o ca o conexiune reutilizabilă, ca să nu fie nevoie să o rescrieți în fiecare modul.
2Trimiteți un SMS din scenariu
Adăugați un modul HTTP > Make a request: metoda POST, URL https://volai.cz/v1/messages, corp de tip Raw (JSON) cu câmpurile to și body - valorile le puteți mapa din bundle-ul modulului anterior (un rând de tabel, un webhook) în loc să le rescrieți manual. Activați Parse response, ca priceHal (prețul în sutimi din unitatea monetară, pentru toate segmentele) și segments din răspuns să fie despachetate direct în bundle pentru maparea ulterioară - fără această opțiune primiți doar text brut și ar trebui să adăugați separat un modul Parse JSON. Un text cu diacritice ocupă mai multe segmente decât un mesaj pur ASCII.
{
"to": "+420777123456",
"body": "Comanda dumneavoastra este pregatita pentru ridicare."
}3Porniți un apel prin agentul vocal
Adăugați un al doilea modul HTTP > Make a request: POST https://volai.cz/v1/calls, corp Raw (JSON) cu to și agentId ale unui agent vocal existent - agentul trebuie să aibă un număr propriu atribuit, altfel cererea se încheie cu eroarea agent_no_number. Câmpul to de regulă nu îl completați manual, ci îl mapați din bundle-ul modulului anterior (de exemplu numărul de telefon dintr-un rând Google Sheets) - faceți clic în câmp și alegeți variabila din listă. Și aici se potrivește Parse response: despachetează id al apelului pornit direct în bundle, ca să poată fi mapat mai departe fără un modul Parse JSON separat. Modulul doar pornește apelul - rezultatul real (finalizat, fără răspuns, eșuat) îl aflați abia din webhook-ul din pasul următor.
{
"to": "+420777123456",
"agentId": "ag_kx91fa2b"
}4Primiți evenimentele înapoi printr-un Custom webhook
Adăugați un modul Webhooks > Custom webhook - Make generează un URL și confirmă imediat cererea primită (ceea ce îndeplinește condiția răspunsului rapid 200 din /docs/webhooky). Salvați aceeași adresă prin PUT /v1/webhook, împreună cu lista evenimentelor care vă interesează. Atenție: un câmp events gol nu înseamnă niciun eveniment, ci absolut toate - este mai bine să le enumerați întotdeauna. Răspunsul returnează și secret - salvați-l imediat, GET /v1/webhook nu îl mai returnează.
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"]}'5Ramificați scenariul după tipul evenimentului
Câmpul event din corpul webhook-ului (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) îl distingeți cu un modul Router sau cu un filtru pe marginea ramurii. Verificarea semnăturii Volai-Signature (HMAC-SHA256 peste {t}.{rawBody} cu secret-ul dumneavoastră) o adăugați conform formulei exacte din /docs/webhooky - într-un scenariu sensibil (plăți, scriere în contabilitate) nu o omiteți.
Ce puteți face cu el
Iteratorul trimite SMS-uri către o listă de contacte
Modulul Iterator descompune un tablou de contacte (de exemplu din Google Sheets sau dintr-un tablou JSON) în elemente individuale, iar modulul HTTP apelează apoi POST /v1/messages separat pentru fiecare - de obicei un anunț în masă sau un memento pentru un întreg grup de clienți deodată.
Un filtru pe conexiune decide cui i se telefonează
Make permite să plasați o condiție direct pe legătura dintre module - filtrul lasă să treacă doar rândurile care îndeplinesc condiția (de exemplu termenul este mâine, iar clientul nu a confirmat încă), iar numai acestea pornesc modulul HTTP către POST /v1/calls.
Un error handler prinde apelul eșuat
La modulul HTTP care apelează /v1/calls adăugați o rută error handler cu directiva Ignore - eșecul unui singur apel (de exemplu un număr invalid) îl scrieți astfel într-un tabel sau îl trimiteți pe Slack pentru verificare manuală, fără să cadă întregul scenariu.
Întrebări frecvente
- Există o aplicație dedicată volai în marketplace-ul Make?
- Deocamdată nu - sunt suficiente modulele generice HTTP și Webhooks, pe care Make le are întotdeauna la dispoziție. O aplicație proprie în Make ține de Make Technology Partner Program, pe care deocamdată nu îl urmărim.
- Câte operațiuni consumă un scenariu cu două module HTTP?
- Fiecare rulare a unui modul se numără ca o operațiune - un scenariu care apelează
/v1/messagesși apoi/v1/callsconsumă aproximativ două până la trei operațiuni pe rulare, în funcție de câte module se află între ele. Limita de operațiuni o stabilește planul dumneavoastră Make, nu volai. - Cum setez un error handler peste modulul HTTP, ca eșecul unui singur apel să nu oprească întregul scenariu?
- Faceți clic dreapta pe modulul HTTP și adăugați o rută error handler. În interior alegeți directiva Ignore - scenariul ignoră eroarea și continuă, ca și cum modulul nu ar fi returnat nicio ieșire. Dacă modulele următoare au nevoie de o valoare de înlocuire în locul ieșirii lipsă, folosiți Resume cu o ieșire de rezervă proprie. La Break apelați doar când doriți să opriți rularea pe loc și să repetați execuția ulterior, manual sau automat.
- De ce returnează Custom webhook `Accepted` imediat, înainte ca scenariul să se încheie?
- Așa funcționează modulul Custom webhook în setarea implicită - confirmă primirea cu starea 200 și textul
Acceptedimediat, iar scenariul se încheie apoi în fundal. Apelantului (de exemplu volai) îi este suficient să primească 200 în câteva secunde - iar aceasta este îndeplinită. - De ce continuă modulul HTTP imediat după POST /v1/calls, deși apelul nu s-a încheiat încă?
POST /v1/callsdoar pornește apelul și returneazăid-ul acestuia - sincron, în scurt timp. Dacă apelul a fost într-adevăr conectat, finalizat sau a eșuat, aflați abia mai târziu, prin webhook-ulcall.completed/call.failed/call.no_answer/call.missed. Scenariul nu trebuie așadar să aștepte nimic și nici să facă polling - este suficient să legați de acest rezultat modulul Custom webhook descris mai sus.
Încercați chiar acum
Înregistrați-vă și primii 50 kr sunt din partea noastră.