SMS og opkald direkte fra et Make-scenarie
Make kalder volai REST API via det generelle HTTP-modul - fra scenariet kan der sendes SMS, startes opkald via en stemmeagent, og resultatet kommer tilbage som webhook.
1Gør nøglen klar som forbindelse
I modulet HTTP > Make a request tilføjes headeren Authorization med værdien Bearer vk_TVUJ_KLIC (nøglen findes i portalen under AI-assistent). Gem den som en genanvendelig forbindelse, så den ikke skal skrives ind i hvert modul for sig.
2Send SMS fra scenariet
Tilføj et modul HTTP > Make a request: metode POST, URL https://volai.cz/v1/messages, body af typen Raw (JSON) med felterne to og body - værdierne kan roligt mappes fra det foregående moduls bundle (en tabelrække, en webhook) i stedet for at blive skrevet af. Slå Parse response til, så priceHal (prisen i heller for alle segmenter) og segments fra svaret straks bliver foldet ud i bundlen til videre mapping - uden det fås kun rå tekst, og der skulle tilføjes et separat Parse JSON-modul. Ved tekst med danske og andre særlige tegn bliver der flere segmenter end ved en ren ASCII-besked.
{
"to": "+420777123456",
"body": "Din bestilling er klar til afhentning."
}3Start et opkald via stemmeagenten
Tilføj endnu et modul HTTP > Make a request: POST https://volai.cz/v1/calls, body Raw (JSON) med to og agentId for en eksisterende stemmeagent - agenten skal have tildelt et eget nummer, ellers ender forespørgslen med fejlen agent_no_number. Feltet to skrives som regel ikke i hånden, men mappes fra det foregående moduls bundle (for eksempel et telefonnummer fra en Google Sheets-række) - klik i feltet, og vælg variablen i menuen. Også her er Parse response nyttig: den folder id på det startede opkald ud i bundlen, så det kan mappes videre uden et særskilt Parse JSON-modul. Modulet starter kun opkaldet - det faktiske resultat (gennemført, ikke besvaret, fejlet) fås først fra webhooken i næste trin.
{
"to": "+420777123456",
"agentId": "ag_kx91fa2b"
}4Modtag hændelser tilbage via Custom webhook
Tilføj modulet Webhooks > Custom webhook - Make genererer en URL og bekræfter den modtagne forespørgsel med det samme (det opfylder kravet om hurtigt 200-svar fra /docs/webhooky). Gem den samme adresse via PUT /v1/webhook sammen med listen over de hændelser, der har interesse. Vær opmærksom: et tomt felt events betyder ikke ingen hændelser, men absolut alle - angiv dem altid eksplicit. Svaret returnerer også secret - gem den med det samme, GET /v1/webhook returnerer den ikke igen.
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"]}'5Del scenariet op efter hændelsestype
Feltet event i webhookens body (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) skelnes med et Router-modul eller et filter på kanten af hver gren. Verificering af signaturen Volai-Signature (HMAC-SHA256 over {t}.{rawBody} med den egen secret) tilføjes efter den præcise formel på /docs/webhooky - i et følsomt scenarie (betalinger, skrivning til regnskab) bør den ikke udelades.
Hvad den kan bruges til
Iterator sender SMS til en hel liste af kontakter
Modulet Iterator folder et array af kontakter (for eksempel fra Google Sheets eller et JSON-array) ud i enkeltposter, og HTTP-modulet kalder så POST /v1/messages for hver især - typisk en samlet meddelelse eller påmindelse til en hel gruppe kunder på én gang.
Filter på forbindelsen afgør, hvem der skal ringes op
Make kan placere en betingelse direkte på forbindelsen mellem moduler - filteret lader kun de rækker passere, der opfylder betingelsen (for eksempel at aftalen er i morgen, og kunden endnu ikke har bekræftet), og kun dem sender videre til HTTP-modulet med POST /v1/calls.
Error handler fanger et mislykket opkald
Tilføj en error handler-route med direktivet Ignore på HTTP-modulet, der kalder /v1/calls - et enkelt mislykket opkald (for eksempel et ugyldigt nummer) kan så skrives til en tabel eller sendes til Slack til manuel opfølgning, uden at hele scenariet fejler.
Ofte stillede spørgsmål
- Findes der en egen volai-app i Make-marketplace?
- Ikke endnu - de generelle moduler HTTP og Webhooks, som Make altid har til rådighed, rækker. En egen app i Make hænger sammen med Make Technology Partner Program, som vi endnu ikke arbejder på.
- Hvor mange operationer bruger et scenarie med to HTTP-moduler?
- Hver kørsel af et modul tæller som én operation - et scenarie, der kalder
/v1/messagesog derefter/v1/calls, bruger i størrelsesordenen to til tre operationer pr. kørsel, afhængigt af hvor mange moduler der ligger imellem. Grænsen for operationer sættes af Make-abonnementet, ikke af volai. - Hvordan sættes en error handler på HTTP-modulet, så ét mislykket opkald ikke stopper hele scenariet?
- Højreklik på HTTP-modulet, og tilføj en error handler-route. Vælg indeni direktivet Ignore - scenariet ignorerer fejlen og fortsætter, som om modulet ikke havde returneret noget output. Hvis efterfølgende moduler har brug for en erstatningsværdi i stedet for det manglende output, bruges Resume med eget reserveoutput. Break bør kun bruges, når kørslen skal stoppes med det samme og siden gentages manuelt eller automatisk.
- Hvorfor returnerer Custom webhook `Accepted` med det samme, før scenariet er færdigt?
- Sådan opfører modulet Custom webhook sig som standard - det bekræfter modtagelsen med status 200 og teksten
Acceptedøjeblikkeligt, og scenariet kører derefter færdigt i baggrunden. Den, der kalder (her volai), behøver blot at få 200 inden for få sekunder - og det er opfyldt. - Hvorfor fortsætter HTTP-modulet straks efter POST /v1/calls, selvom opkaldet endnu ikke er slut?
POST /v1/callsstarter kun opkaldet og returnerer detsid- synkront, på et øjeblik. Om opkaldet faktisk kom igennem, blev gennemført eller fejlede, fås først senere via webhookencall.completed/call.failed/call.no_answer/call.missed. Scenariet behøver derfor hverken at vente eller polle - det er nok at knytte modulet Custom webhook beskrevet ovenfor til dette resultat.
Prøv det med det samme
Opret en konto, og de første 50 kr i saldo er på os.