Zum Inhalt springen
REST API

SMS und Anrufe direkt aus einem Make-Szenario

Make ruft die volai-REST-API über das allgemeine HTTP-Modul auf - so senden Sie aus einem Szenario SMS, starten Anrufe über einen Sprachagenten und erhalten das Ergebnis per Webhook.

Du kannst den nativen volai-Connector für Make über eine Einladung installieren. Damit lassen sich SMS senden, Anrufe und Sprachnachrichten starten, Informationen wie Guthaben, Agenten und Rufnummern abrufen sowie automatisch auf SMS- und Anrufereignisse reagieren. Der Connector ist noch nicht im öffentlichen App-Verzeichnis von Make aufgeführt. Die manuelle Einrichtung mit HTTP und Webhooks bleibt unten als Alternative verfügbar.

1Schlüssel als Verbindung vorbereiten

Fügen Sie im Modul HTTP > Make a request einen Header Authorization mit dem Wert Bearer vk_TVUJ_KLIC hinzu (den Schlüssel finden Sie im Portal im Bereich KI-Assistent). Speichern Sie ihn als wiederverwendbare Verbindung, damit Sie ihn nicht in jedes Modul einzeln abtippen müssen.

2SMS aus dem Szenario senden

Fügen Sie ein Modul HTTP > Make a request hinzu: Methode POST, URL https://volai.cz/v1/messages, Body vom Typ Raw (JSON) mit den Feldern to und body - mappen Sie die Werte am besten aus dem Bundle des vorherigen Moduls (Tabellenzeile, Webhook), statt sie von Hand abzutippen. Aktivieren Sie Parse response, damit priceHal (Preis in Hellern für alle Segmente) und segments aus der Antwort direkt im Bundle für das weitere Mapping bereitstehen - ohne diese Option erhalten Sie nur Rohtext und müssten ein separates Modul Parse JSON ergänzen. Bei Text mit Sonderzeichen entstehen mehr Segmente als bei einer reinen ASCII-Nachricht.

json
{
  "to": "+420777123456",
  "body": "Ihre Bestellung ist abholbereit."
}

3Anruf über den Sprachagenten starten

Fügen Sie ein zweites Modul HTTP > Make a request hinzu: POST https://volai.cz/v1/calls, Body Raw (JSON) mit to und der agentId eines vorhandenen Sprachagenten - dem Agenten muss eine eigene Nummer zugewiesen sein, sonst endet die Anfrage mit dem Fehler agent_no_number. Das Feld to tragen Sie meist nicht von Hand ein, sondern mappen es aus dem Bundle des vorherigen Moduls (zum Beispiel die Telefonnummer aus einer Google-Sheets-Zeile) - klicken Sie in das Feld und wählen Sie die Variable aus dem Menü. Auch hier lohnt sich Parse response: Es legt die id des gestarteten Anrufs direkt im Bundle ab, sodass sie sich ohne separates Modul Parse JSON weiter mappen lässt. Das Modul startet den Anruf nur - das tatsächliche Ergebnis (abgeschlossen, nicht angenommen, fehlgeschlagen) erfahren Sie erst aus dem Webhook im nächsten Schritt.

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

4Ereignisse per Custom webhook zurückempfangen

Fügen Sie ein Modul Webhooks > Custom webhook hinzu - Make erzeugt eine URL und bestätigt die eingehende Anfrage sofort (das erfüllt die Bedingung der schnellen Antwort 200 aus /docs/webhooky). Speichern Sie dieselbe Adresse über PUT /v1/webhook zusammen mit der Liste der Ereignisse, die Sie interessieren. Achtung: Ein leeres Feld events bedeutet nicht kein Ereignis, sondern alle - führen Sie die gewünschten daher immer einzeln auf. Die Antwort enthält auch ein secret - speichern Sie es sofort, GET /v1/webhook gibt es nicht mehr zurück.

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

5Szenario nach Ereignistyp verzweigen

Unterscheiden Sie das Feld event im Webhook-Body (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) mit einem Modul Router oder einem Filter an der Kante des Zweigs. Ergänzen Sie die Prüfung der Signatur Volai-Signature (HMAC-SHA256 über {t}.{rawBody} mit Ihrem secret) nach der genauen Formel unter /docs/webhooky - bei einem sensiblen Szenario (Zahlungen, Buchhaltung) lassen Sie sie nicht weg.

Was Sie damit tun können

Iterator versendet SMS an eine ganze Kontaktliste

Das Modul Iterator zerlegt ein Array von Kontakten (etwa aus Google Sheets oder einem JSON-Array) in einzelne Einträge, und das HTTP-Modul ruft dann für jeden separat POST /v1/messages auf - typischerweise eine Sammelmitteilung oder Erinnerung für eine ganze Kundengruppe auf einmal.

Ein Filter an der Verbindung entscheidet, wer angerufen wird

Make erlaubt es, eine Bedingung direkt auf die Verbindung zwischen zwei Modulen zu legen - der Filter lässt nur Zeilen passieren, die die Bedingung erfüllen (etwa: der Termin ist morgen und der Kunde hat noch nicht bestätigt), und erst diese lösen das HTTP-Modul für POST /v1/calls aus.

Ein Error Handler fängt einen fehlgeschlagenen Anruf ab

Fügen Sie dem HTTP-Modul, das /v1/calls aufruft, eine Error-Handler-Route mit der Direktive Ignore hinzu - das Scheitern eines einzelnen Anrufs (zum Beispiel wegen einer ungültigen Nummer) tragen Sie so in eine Tabelle ein oder schicken es zur manuellen Prüfung an Slack, ohne dass das gesamte Szenario abbricht.

Häufige Fragen

Gibt es für volai eine eigene App im Make-Marktplatz?
Du kannst den volai-Connector für Make über eine Einladung installieren. Er unterstützt SMS, Anrufe, Sprachnachrichten, Lesezugriffe und automatische Auslöser für SMS- und Anrufereignisse. Der Connector ist noch nicht im öffentlichen App-Verzeichnis von Make aufgeführt. Für eine manuelle Einrichtung folge den Schritten mit HTTP und Webhooks weiter unten.
Wie viele Operationen verbraucht ein Szenario mit zwei HTTP-Modulen?
Jede Ausführung eines Moduls zählt als eine Operation - ein Szenario, das /v1/messages und danach /v1/calls aufruft, verbraucht pro Lauf etwa zwei bis drei Operationen, je nachdem, wie viele Module dazwischen liegen. Das Limit der Operationen bestimmt Ihr Make-Tarif, nicht volai.
Wie richte ich über dem HTTP-Modul einen Error Handler ein, damit das Scheitern eines Anrufs nicht das ganze Szenario stoppt?
Klicken Sie mit der rechten Maustaste auf das HTTP-Modul, fügen Sie einen Error-Handler hinzu und wählen Sie Ignore, dann läuft das Szenario weiter. Resume liefert eine Ersatzausgabe, Break hält den Lauf an.
Warum antwortet Custom webhook sofort mit `Accepted`, noch bevor das Szenario durchgelaufen ist?
So funktioniert das Modul: Es bestätigt den Empfang sofort mit dem Status 200, und das Szenario läuft im Hintergrund zu Ende. Dem Aufrufer (etwa volai) genügt es, innerhalb weniger Sekunden ein 200 zu erhalten.
Warum läuft das HTTP-Modul nach POST /v1/calls sofort weiter, obwohl der Anruf noch nicht beendet ist?
POST /v1/calls startet den Anruf nur und gibt sofort seine id zurück. Das Ergebnis kommt später über den Webhook call.completed, call.failed, call.no_answer oder call.missed.

Probieren Sie es gleich aus

Registrieren Sie sich und die ersten € 2 gehen auf uns.