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.

Natywny konektor volai do Make możesz zainstalować za pomocą zaproszenia. Umożliwia wysyłanie SMS-ów, rozpoczynanie połączeń i wiadomości głosowych, odczytywanie informacji, takich jak saldo, agenci i numery, oraz automatyczne uruchamianie przy zdarzeniach SMS i połączeń. Konektor nie jest jeszcze wymieniony w publicznym katalogu aplikacji Make. Poniżej nadal dostępna jest też ręczna konfiguracja przez HTTP i Webhooks.

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?
Konektor volai do Make możesz zainstalować za pomocą zaproszenia. Obsługuje SMS-y, połączenia, wiadomości głosowe, operacje odczytu i automatyczne wyzwalacze zdarzeń SMS oraz połączeń. Konektor nie jest jeszcze wymieniony w publicznym katalogu aplikacji Make. Aby skonfigurować integrację ręcznie, wykonaj poniższe kroki z użyciem HTTP i Webhooks.
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?
Prawym przyciskiem na moduł HTTP proszę dodać error handler i wybrać Ignore, scenariusz działa wtedy dalej. Resume dostarcza zastępczy wynik, Break zatrzymuje wykonanie.
Dlaczego Custom webhook odpowiada od razu `Accepted`, jeszcze przed przejściem scenariusza?
Tak działa ten moduł: potwierdza odbiór od razu statusem 200, a scenariusz kończy się w tle. Wywołującemu (na przykład volai) wystarczy otrzymać 200 w ciągu kilku sekund.
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 od razu zwraca jego id. Wynik przychodzi później webhookiem call.completed, call.failed, call.no_answer lub call.missed.

Proszę wypróbować od razu

Proszę się zarejestrować, a pierwsze 10 zł salda dostają Państwo od nas.