Sms och samtal direkt från ett Make-scenario
Make anropar volais REST-API via den allmänna HTTP-modulen - från scenariot skickas sms, ett samtal startas via en röstagent och resultatet kommer tillbaka som webhook.
1Förbered nyckeln som connection
I modulen HTTP > Make a request läggs rubriken Authorization till med värdet Bearer vk_TVUJ_KLIC (nyckeln finns i portalen under AI-assistent). Spara den som en återanvändbar anslutning, så att den inte behöver skrivas om i varje modul för sig.
2Skicka sms från scenariot
Lägg till modulen HTTP > Make a request: metod POST, URL https://volai.cz/v1/messages, en kropp av typen Raw (JSON) med fälten to och body - värdena mappas gärna från föregående moduls bundle (en tabellrad, en webhook) i stället för att skrivas in för hand. Slå på Parse response, så att priceHal (priset i hal för alla segment) och segments från svaret genast delas upp i bundle för vidare mappning - utan det kommer bara rå text tillbaka och en separat Parse JSON-modul måste läggas till. Med text som innehåller diakritiska tecken blir det fler segment än med ett rent ASCII-meddelande.
{
"to": "+420777123456",
"body": "Objednavka je pripravena k vyzvednuti."
}3Starta ett samtal via röstagenten
Lägg till en andra modul HTTP > Make a request: POST https://volai.cz/v1/calls, kropp Raw (JSON) med to och agentId för en befintlig röstagent - agenten måste ha ett eget nummer tilldelat, annars slutar förfrågan med felet agent_no_number. Fältet to skrivs vanligtvis inte in för hand utan mappas från föregående moduls bundle (till exempel telefonnumret från en rad i Google Sheets) - klicka i fältet och välj variabeln i listan. Även här är Parse response praktiskt: det delar upp id för det startade samtalet direkt i bundle, så att det kan mappas vidare utan en separat Parse JSON-modul. Modulen startar bara samtalet - det verkliga resultatet (avslutades, obesvarat, misslyckades) framgår först av webhooken i nästa steg.
{
"to": "+420777123456",
"agentId": "ag_kx91fa2b"
}4Ta emot händelser tillbaka via Custom webhook
Lägg till modulen Webhooks > Custom webhook - Make genererar en URL och bekräftar den mottagna förfrågan direkt (vilket uppfyller kravet på snabbt svar 200 från /docs/webhooky). Spara samma adress via PUT /v1/webhook tillsammans med en lista över de händelser som är intressanta. Obs: ett tomt fält events betyder inte ingen händelse utan absolut alla - räkna hellre alltid upp dem. Svaret returnerar även secret - spara det genast, GET /v1/webhook returnerar det inte 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"]}'5Förgrena scenariot efter händelsetyp
Fältet event i webhookens kropp (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) skiljs åt med modulen Router eller ett filter på grenens kant. Verifieringen av signaturen Volai-Signature (HMAC-SHA256 över {t}.{rawBody} med den egna secret) kompletteras enligt den exakta formeln på /docs/webhooky - i ett känsligt scenario (betalningar, bokföring) ska den inte utelämnas.
Vad du kan göra med det
Iterator skickar sms till en hel kontaktlista
Modulen Iterator delar upp en lista med kontakter (till exempel från Google Sheets eller ett JSON-fält) i enskilda poster, och HTTP-modulen anropar sedan POST /v1/messages för var och en separat - typiskt ett massutskick eller en påminnelse till en hel kundgrupp på en gång.
Filter på kopplingen avgör vem som ska ringas
Make kan placera ett villkor direkt på kopplingen mellan moduler - filtret släpper bara vidare de rader som uppfyller villkoret (till exempel att tiden är i morgon och kunden ännu inte har bekräftat), och först de startar HTTP-modulen mot POST /v1/calls.
Error handler fångar upp ett misslyckat samtal
På HTTP-modulen som anropar /v1/calls läggs en error handler route med direktivet Ignore - ett enskilt samtals misslyckande (till exempel ett ogiltigt nummer) skrivs då till en tabell eller skickas till Slack för manuell kontroll, utan att hela scenariot går ned.
Vanliga frågor
- Finns det en egen volai-app i Make marketplace?
- Ännu inte - de allmänna modulerna HTTP och Webhooks, som Make alltid har tillgängliga, räcker. En egen app i Make hänger på Make Technology Partner Program, vilket vi ännu inte driver.
- Hur många operationer förbrukar ett scenario med två HTTP-moduler?
- Varje körning av en modul räknas som en operation - ett scenario som anropar
/v1/messagesoch därefter/v1/callsförbrukar i storleksordningen två till tre operationer per körning, beroende på hur många moduler som ligger emellan. Gränsen för operationer sätts av Make-planen, inte av volai. - Hur ställs en error handler in på HTTP-modulen så att ett enskilt samtals misslyckande inte stoppar hela scenariot?
- Högerklicka på HTTP-modulen och lägg till en error handler route. Välj direktivet Ignore inuti den - scenariot ignorerar felet och fortsätter, som om modulen inte hade returnerat någon utdata. Om följande moduler behöver ett ersättningsvärde i stället för den saknade utdatan, använd Resume med en egen reservutdata. Välj Break bara om körningen ska stoppas genast och sedan upprepas manuellt eller automatiskt.
- Varför returnerar Custom webhook `Accepted` genast, innan scenariot hunnit klart?
- Så fungerar modulen Custom webhook i standardläget - den bekräftar mottagandet med status 200 och texten
Acceptedomedelbart, och scenariot körs sedan klart i bakgrunden. Den som anropar (till exempel volai) behöver bara få 200 inom några sekunder - det uppfylls. - Varför fortsätter HTTP-modulen direkt efter POST /v1/calls, trots att samtalet inte har avslutats?
POST /v1/callsstartar bara samtalet och returnerar dessid- synkront, inom en kort stund. Om samtalet verkligen kom fram, avslutades eller misslyckades framgår först senare av webhookencall.completed/call.failed/call.no_answer/call.missed. Scenariot behöver därför varken vänta på något eller pollla - det räcker att fånga det resultatet med modulen Custom webhook som beskrivs ovan.