Przejdź do treści
REST API

SMS-y i połączenia prosto ze scenariusza Make

Make wywołuje REST API volai przez ogólny moduł HTTP - ze scenariusza wysyłają Państwo SMS-y, uruchamiają połączenia przez agenta głosowego i odbierają wynik przez webhook.

1Przygotowanie klucza jako połączenia

W module HTTP > Make a request dodajcie Państwo nagłówek Authorization o wartości Bearer vk_TVUJ_KLIC (klucz znajdą Państwo w portalu w sekcji Asystent AI). Zapiszcie go jako połączenie wielokrotnego użytku, aby nie wpisywać go ręcznie w każdym module.

2Wysyłanie SMS-a ze scenariusza

Dodajcie moduł HTTP > Make a request: metoda POST, URL https://volai.cz/v1/messages, body typu Raw (JSON) z polami to i body - wartości najlepiej mapować z bundla poprzedniego modułu (wiersz tabeli, webhook), zamiast wpisywać je ręcznie. Włączcie Parse response, aby priceHal (cena w halerzach za wszystkie segmenty) i segments z odpowiedzi były od razu dostępne w bundlu do dalszego mapowania - bez tej opcji otrzymają Państwo tylko surowy tekst i musieliby dodać osobny moduł Parse JSON. Tekst ze znakami specjalnymi tworzy więcej segmentów niż wiadomość w czystym ASCII.

json
{
  "to": "+420777123456",
  "body": "Państwa zamówienie jest gotowe do odbioru."
}

3Uruchomienie połączenia przez agenta głosowego

Dodajcie drugi moduł HTTP > Make a request: POST https://volai.cz/v1/calls, body Raw (JSON) z to i agentId istniejącego agenta głosowego - agent musi mieć przypisany własny numer, w przeciwnym razie żądanie zakończy się błędem agent_no_number. Pole to zwykle nie wpisuje się ręcznie, lecz mapuje z bundla poprzedniego modułu (na przykład numer telefonu z wiersza Google Sheets) - kliknijcie w pole i wybierzcie zmienną z menu. Także tutaj warto włączyć Parse response: umieszcza id uruchomionego połączenia od razu w bundlu, dzięki czemu można je dalej mapować bez osobnego modułu Parse JSON. Moduł tylko uruchamia połączenie - faktyczny wynik (zakończone, nieodebrane, nieudane) poznają Państwo dopiero z webhooka w następnym kroku.

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

4Odbieranie zdarzeń zwrotnie przez Custom webhook

Dodajcie moduł Webhooks > Custom webhook - Make wygeneruje URL i natychmiast potwierdzi przychodzące żądanie (spełnia to warunek szybkiej odpowiedzi 200 z /docs/webhooky). Ten sam adres zapiszcie przez PUT /v1/webhook razem z listą zdarzeń, które Państwa interesują. Uwaga: puste pole events nie oznacza braku zdarzeń, lecz wszystkie - dlatego zawsze wymieniajcie potrzebne pojedynczo. Odpowiedź zawiera także secret - zapiszcie go od razu, GET /v1/webhook już go nie zwróci.

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"]}'

5Rozgałęzienie scenariusza według typu zdarzenia

Rozróżniajcie pole event w body webhooka (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) za pomocą modułu Router lub filtra na krawędzi gałęzi. Dodajcie weryfikację podpisu Volai-Signature (HMAC-SHA256 z {t}.{rawBody} przy użyciu Państwa secret) według dokładnego wzoru z /docs/webhooky - w scenariuszu wrażliwym (płatności, księgowość) nie pomijajcie jej.

Co Państwo z tym zrobią

Iterator wysyła SMS-y do całej listy kontaktów

Moduł Iterator rozbija tablicę kontaktów (na przykład z Google Sheets lub tablicy JSON) na pojedyncze wpisy, a moduł HTTP wywołuje następnie dla każdego z osobna POST /v1/messages - typowo zbiorowe powiadomienie lub przypomnienie dla całej grupy klientów naraz.

Filtr na połączeniu decyduje, do kogo zadzwonić

Make pozwala nałożyć warunek bezpośrednio na połączenie między dwoma modułami - filtr przepuszcza tylko wiersze spełniające warunek (na przykład: termin jest jutro, a klient jeszcze nie potwierdził) i dopiero one uruchamiają moduł HTTP dla POST /v1/calls.

Error Handler przechwytuje nieudane połączenie

Dodajcie do modułu HTTP wywołującego /v1/calls trasę Error Handler z dyrektywą Ignore - niepowodzenie pojedynczego połączenia (na przykład z powodu nieprawidłowego numeru) zapiszą Państwo w tabeli albo wyślą do ręcznego sprawdzenia na Slacka, bez przerywania całego scenariusza.

Często zadawane pytania

Czy volai ma własną aplikację w marketplace Make?
Jeszcze nie - wystarczą ogólne moduły HTTP i Webhooks, które Make zawsze udostępnia. Własna aplikacja w Make zależy od Make Technology Partner Program, którego obecnie nie realizujemy.
Ile operacji zużywa scenariusz z dwoma modułami HTTP?
Każde wykonanie modułu liczy się jako jedna operacja - scenariusz wywołujący /v1/messages, a potem /v1/calls, zużywa na jedno uruchomienie około dwóch do trzech operacji, zależnie od liczby modułów pomiędzy. Limit operacji wyznacza Państwa taryfa Make, nie volai.
Jak ustawić nad modułem HTTP Error Handler, aby niepowodzenie połączenia nie zatrzymywało całego scenariusza?
Kliknijcie Państwo prawym przyciskiem myszy moduł HTTP i dodajcie trasę Error Handler. Wybierzcie w niej dyrektywę Ignore - scenariusz zignoruje błąd i będzie działał dalej, jakby moduł nie zwrócił żadnego wyniku. Jeśli kolejne moduły potrzebują wartości zastępczej w miejsce brakującego wyniku, użyjcie Resume z własnym wynikiem zastępczym. Po Break sięgajcie tylko wtedy, gdy chcą Państwo natychmiast zatrzymać przebieg i powtórzyć wykonanie później, ręcznie lub automatycznie.
Dlaczego Custom webhook odpowiada od razu `Accepted`, jeszcze przed przejściem scenariusza?
Tak domyślnie działa moduł Custom webhook - natychmiast potwierdza odbiór statusem 200 i tekstem Accepted, a scenariusz działa dalej w tle. Wywołującemu (na przykład volai) wystarczy otrzymać 200 w ciągu kilku sekund - to jest spełnione.
Dlaczego moduł HTTP po POST /v1/calls od razu działa dalej, choć połączenie jeszcze się nie zakończyło?
POST /v1/calls tylko uruchamia połączenie i zwraca jego id - synchronicznie, w ułamku sekundy. Czy połączenie faktycznie doszło do skutku, zostało zakończone czy nie powiodło się, dowiedzą się Państwo dopiero później z webhooka call.completed / call.failed / call.no_answer / call.missed. Scenariusz nie musi więc na nic czekać ani o nic dopytywać - do tego wyniku wystarczy podpiąć opisany wyżej moduł Custom webhook.

Proszę wypróbować od razu

Proszę się zarejestrować, a pierwsze 50 kr salda dostają Państwo od nas.