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.

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?
Noch nicht - es genügen die allgemeinen Module HTTP und Webhooks, die Make immer bereitstellt. Eine eigene App in Make hängt am Make Technology Partner Program, das wir derzeit nicht verfolgen.
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 und fügen Sie eine Error-Handler-Route hinzu. Wählen Sie darin die Direktive Ignore - das Szenario ignoriert den Fehler und läuft weiter, als hätte das Modul keine Ausgabe geliefert. Benötigen nachfolgende Module einen Ersatzwert anstelle der fehlenden Ausgabe, verwenden Sie Resume mit einer eigenen Ersatzausgabe. Greifen Sie zu Break nur, wenn Sie den Lauf sofort anhalten und die Ausführung später manuell oder automatisch wiederholen möchten.
Warum antwortet Custom webhook sofort mit `Accepted`, noch bevor das Szenario durchgelaufen ist?
So arbeitet das Modul Custom webhook standardmäßig - es bestätigt den Empfang sofort mit dem Status 200 und dem Text Accepted, das Szenario läuft anschließend im Hintergrund weiter. Dem Aufrufer (etwa volai) genügt es, innerhalb weniger Sekunden ein 200 zu erhalten - das ist erfüllt.
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 seine id zurück - synchron, innerhalb eines Augenblicks. Ob der Anruf tatsächlich zustande kam, abgeschlossen wurde oder fehlgeschlagen ist, erfahren Sie erst später über den Webhook call.completed / call.failed / call.no_answer / call.missed. Das Szenario muss deshalb auf nichts warten und nichts abfragen - knüpfen Sie an dieses Ergebnis einfach das oben beschriebene Modul Custom webhook an.

Probieren Sie es gleich aus

Registrieren Sie sich und die ersten 50 kr gehen auf uns.