SMS i pozivi izravno iz n8n workflowa
n8n poziva REST API volai putem čvora HTTP Request - bez pisanja koda iz workflowa šaljete SMS, pokrećete poziv putem glasovnog agenta, a rezultat dobivate natrag kao webhook.
1Spremite ključ kao credential
U n8n-u izradite novi credential tipa HTTP Header Auth: naziv headera Authorization, vrijednost Bearer vk_VAS_KLJUC (ključ nalazite u portalu u odjeljku AI asistent). Dodijelite ga svakom čvoru HTTP Request koji će pozivati /v1/* - isti ključ vrijedi za SMS, pozive i webhook.
2Pošaljite SMS iz workflowa
Dodajte čvor HTTP Request: metoda POST, adresa https://volai.cz/v1/messages, JSON tijelo s poljima to i body. Odgovor sadrži priceHal (cijena u halerima za sve segmente poruke) i segments - tekst s dijakritičkim znakovima zauzima više segmenata od poruke samo u ASCII-ju. Primjer u nastavku zato namjerno ostavlja tekst poruke bez dijakritike kako bi stao u jedan segment - s dijakritikom radi jednako, samo se potroši više segmenata.
curl -X POST https://volai.cz/v1/messages \
-H "Authorization: Bearer vk_VAS_KLJUC" \
-H "Content-Type: application/json" \
-d '{"to": "+420777123456", "body": "Narudzba je spremna za preuzimanje."}'3Nazovite kupca putem svojeg agenta
Drugi čvor HTTP Request: POST https://volai.cz/v1/calls s poljima to i agentId postojećeg glasovnog agenta (izradite ga u portalu ili putem POST /v1/agents) - agent mora imati dodijeljen vlastiti broj, inače zahtjev završi greškom agent_no_number. Zahtjev poziv samo pokreće i vraća njegov id - o stvarnom ishodu (završen, nije se javio, nije uspio) saznat ćete iz webhooka u sljedećem koraku.
curl -X POST https://volai.cz/v1/calls \
-H "Authorization: Bearer vk_VAS_KLJUC" \
-H "Content-Type: application/json" \
-d '{"to": "+420777123456", "agentId": "ag_kx91fa2b"}'4Postavite webhook da se workflow javi natrag
Dodajte okidač Webhook (n8n će vam generirati URL) i istu adresu spremite putem PUT /v1/webhook zajedno s popisom događaja koji vas zanimaju. Pažnja: prazno polje events ne znači nijedan događaj, nego sve događaje - bolje ih uvijek nabrojite. Odgovor vraća i secret - spremite ga odmah, GET /v1/webhook ga više ne vraća.
curl -X PUT https://volai.cz/v1/webhook \
-H "Authorization: Bearer vk_VAS_KLJUC" \
-H "Content-Type: application/json" \
-d '{"url": "https://vas-n8n.app.n8n.cloud/webhook/volai", "events": ["call.completed", "message.sent"]}'5Provjerite potpis, tek onda obradite tijelo
Svaki zahtjev nosi header Volai-Signature u obliku t=<unix>,v1=<hex>. U čvoru Code izračunajte HMAC-SHA256 nad {t}.{rawBody} sa svojim secret i usporedite s v1 - tijelo obradite tek kada se podudaraju. U čvoru Webhook u odjeljku Add Options uključite opciju Raw Body - bez nje n8n tijelo odmah parsira i bajtovi iz kojih se računao potpis se gube. S uključenom opcijom, međutim, tijelo stiže kao binarni podatak (svojstvo data), a ne u json.body - kod u nastavku zato tijelo čita putem getBinaryDataBuffer, što radi bez obzira drži li n8n binarne podatke u memoriji, na disku ili u S3-u. Ugrađeni crypto u čvoru Code može se koristiti samo na self-hosted n8n-u s dopuštenim NODE_FUNCTION_ALLOW_BUILTIN=crypto - n8n Cloud uvoz modula uopće ne podržava, pa se tamo provjera ne stane u jedan čvor. Na Cloudu zato lanac produljite čvorom Extract From File (operacija Extract From Text File) - on binarni podatak prvo pretvara u tekst u odabrano polje (na primjer rawBody) - a tek zatim čvor Crypto (akcija Hmac, tip SHA256, kodiranje HEX, vrijednost je izraz koji spaja vremensku oznaku iz headera s poljem rawBody, secret unesen putem Crypto credentiala, a ne običnog tekstnog polja) izračuna otisak bez pisanja koda; usporedbu s v1 zatim dovršava čvor IF.
// Ulaz iz čvora Webhook s uključenom opcijom Raw Body: header je vrijednost
// "Volai-Signature", npr. "t=1756111640,v1=8f2ac1d4..."; sirovo tijelo
// stiže kao binarni podatak (zadani naziv svojstva "data"), a ne u json.body.
const header = $input.first().json.headers['volai-signature'];
// getBinaryDataBuffer radi u svim načinima pohrane binarnih podataka u n8n-u
// (zadano u memoriji te filesystem/S3) - izravno čitanje
// $input.first().binary.data.data radilo bi samo u memorijskom načinu.
const rawBody = (await this.helpers.getBinaryDataBuffer(0, 'data')).toString('utf8');
// secret je vrijednost iz koraka 4 (PUT /v1/webhook) - u produkciji ga čitajte
// iz n8n credentiala ili varijable okruženja, nikada ga ne upisujte izravno
const secret = 'whsec_zamijenite_svojim';
const crypto = require('crypto'); // samo self-hosted n8n, vidi tekst koraka
const [tPart, v1Part] = header.split(',');
const t = tPart.replace('t=', '');
const v1 = v1Part.replace('v1=', '');
const expected = crypto
.createHmac('sha256', secret)
.update(`${t}.${rawBody}`)
.digest('hex');
if (expected !== v1) {
throw new Error('Neispravan potpis Volai-Signature');
}Što time postižete
SMS potvrda nakon narudžbe
Web-trgovina ili sustav za rezervacije šalje n8n-u webhook o novoj narudžbi - workflow odmah šalje SMS s potvrdom i procijenjenim vremenom preuzimanja.
Odlazni poziv iz planera ili tablice
Redak u Google Sheetsu, Airtableu ili CRM-u pokreće čvor HTTP Request koji putem vašeg glasovnog agenta zove kupca - podsjetnik na termin, poziv na dovršetak narudžbe, kratka anketa.
Upis ishoda poziva natrag u sustav
Webhook call.completed donosi transkript, sažetak i prikupljene podatke iz poziva (data) - workflow ih upisuje u CRM, tablicu ili šalje na Slack, bez ručnog slušanja snimke.
Česta pitanja
- Postoji li službeni n8n čvor za volai?
- Za sada ne - danas su dovoljni opći čvorovi HTTP Request i Webhook koje n8n uvijek ima na raspolaganju. Provjereni čvor zajednice morao bi proći pregled u n8n Creator Portalu - za sada ga ne pripremamo.
- Kako znam da je webhook doista poslao volai, a ne netko treći?
- Prema headeru
Volai-Signature- HMAC-SHA256 potpis ssecretkoji vam vraća svakiPUT /v1/webhook(spremite ga odmah,GETga više ne vraća). Točna formula te primjeri u Pythonu i TypeScriptu nalaze se na/docs/webhooky. - Što ako HTTP Request zbog timeouta ne uspije i n8n ga ponovi?
- Dodajte header
Idempotency-Keys bilo kojom stabilnom vrijednošću (na primjer ID narudžbe). Unutar 24 sata na ponovljeni zahtjev s istim ključem dobit ćete točno isti odgovor - SMS ni poziv neće se poslati drugi put. - Koliko automatizacija košta povrh ručnog pozivanja API-ja?
- Ništa - za n8n nema nikakve doplate. Vrijede iste cijene kao u cjeniku: SMS 1,36 kr (≈ 0,06 EUR), odlazni poziv 0,92 kr/min (≈ 0,04 EUR), glasovni agent povrh toga 2,50 kr/min (≈ 0,10 EUR). Točan cjenik nalazi se na
/cenik.
Isprobajte odmah
Registrirajte se i prvih 50 kr dobivate od nas.