Sms och samtal direkt från ditt n8n-arbetsflöde
n8n anropar REST API:t från volai via noden HTTP Request - utan kod kan arbetsflödet skicka sms, starta ett samtal via en röstagent och få resultatet tillbaka som en webhook.
Stegen nedan visar en manuell koppling med de generella HTTP Request- och Webhook-noderna. Community-anslutningens källkod, aktuella tillgänglighet samt anvisningar för installation och utgivning finns i GitHub-README-filen.
1Spara nyckeln som en credential
Skapa en ny credential av typen HTTP Header Auth i n8n: headernamn Authorization, värde Bearer vk_DIN_NYCKEL (nyckeln finns i portalen under AI-assistent). Koppla den till varje HTTP Request-nod som anropar /v1/* - samma nyckel gäller för sms, samtal och webhook.
2Skicka sms från arbetsflödet
Lägg till en nod HTTP Request: metod POST, adress https://volai.cz/v1/messages, JSON-kropp med fälten to och body. Svaret innehåller priceHal (priset i hal, hundradelar av en tjeckisk krona, för alla segment i meddelandet) och segments - en text med specialtecken som å, ä och ö tar fler segment än ett rent ASCII-meddelande. Exemplet nedan lämnar därför medvetet meddelandets text utan specialtecken, så att den ryms i ett enda segment - med specialtecken fungerar det likadant, men fler segment går åt.
curl -X POST https://volai.cz/v1/messages \
-H "Authorization: Bearer vk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"to": "+420777123456", "body": "Bestallningen ar redo att hamtas."}'3Ring en kund via din agent
En andra HTTP Request-nod: POST https://volai.cz/v1/calls med to och agentId för en befintlig röstagent (skapas i portalen eller via POST /v1/agents) - agenten måste ha ett eget nummer kopplat, annars misslyckas anropet med felet agent_no_number. Anropet startar bara samtalet och returnerar dess id - det faktiska utfallet (genomfört, obesvarat, misslyckat) kommer från webhooken i nästa steg.
curl -X POST https://volai.cz/v1/calls \
-H "Authorization: Bearer vk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"to": "+420777123456", "agentId": "ag_kx91fa2b"}'4Ställ in en webhook så att arbetsflödet får svar
Lägg till en trigger av typen Webhook (n8n genererar en URL åt dig) och spara samma adress med PUT /v1/webhook tillsammans med listan över de händelser du är intresserad av. Observera: en tom array events betyder inte ingen händelse utan alla - räkna därför alltid upp dem. Svaret returnerar även ett secret - spara det direkt, GET /v1/webhook returnerar det aldrig igen.
curl -X PUT https://volai.cz/v1/webhook \
-H "Authorization: Bearer vk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"url": "https://din-n8n.app.n8n.cloud/webhook/volai", "events": ["call.completed", "message.sent"]}'5Verifiera signaturen innan kroppen behandlas
Varje anrop har en header Volai-Signature på formen t=<unix>,v1=<hex>. Räkna ut HMAC-SHA256 över {t}.{rawBody} med ditt secret i en nod Code och jämför med v1 - behandla kroppen först när de stämmer överens. Slå på alternativet Raw Body under Add Options i noden Webhook - utan det tolkar n8n kroppen direkt, och de exakta byten som signaturen räknades över går förlorade. Med alternativet påslaget kommer kroppen i stället som binärdata (egenskapen data), inte i json.body - koden nedan läser den därför via getBinaryDataBuffer, vilket fungerar oavsett om n8n lagrar binärdata i minnet, på disk eller i S3. Den inbyggda modulen crypto kan användas i noden Code bara på self-hosted n8n med NODE_FUNCTION_ALLOW_BUILTIN=crypto påslaget - n8n Cloud stöder inte modulimport alls, så verifieringen ryms inte i en enda nod där. På Cloud förlängs kedjan därför med en nod Extract From File (operationen Extract From Text File) - den gör först om binärdatan till text i ett valfritt fält (till exempel rawBody) - och först därefter räknar en nod Crypto (åtgärden Hmac, typ SHA256, kodning HEX, värdet ett uttryck som slår ihop tidsstämpeln från headern med fältet rawBody, hemligheten angiven via en Crypto-credential och inte i ett vanligt textfält) ut avtrycket utan kod; jämförelsen med v1 avslutas av en nod IF.
// Indata från noden Webhook med alternativet Raw Body påslaget: headern är värdet
// "Volai-Signature", t.ex. "t=1756111640,v1=8f2ac1d4..."; den råa kroppen
// kommer som binärdata (standardnamn på egenskapen "data"), inte i json.body.
const header = $input.first().json.headers['volai-signature'];
// getBinaryDataBuffer fungerar i alla lagringslägen för binärdata i n8n
// (standard i minnet samt filesystem/S3) - direkt läsning av
// $input.first().binary.data.data fungerar bara i minnesläget.
const rawBody = (await this.helpers.getBinaryDataBuffer(0, 'data')).toString('utf8');
// secret är värdet från steg 4 (PUT /v1/webhook) - läs det i produktion
// från en n8n-credential eller en miljövariabel, skriv det aldrig direkt i koden
const secret = 'whsec_ersatt_med_ditt';
const crypto = require('crypto'); // bara self-hosted n8n, se texten i steget
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('Ogiltig signatur i Volai-Signature');
}Vad du kan göra med det
Bekräftelse per sms efter en beställning
Din webbutik eller ditt bokningssystem skickar en webhook till n8n när en ny beställning kommer in - arbetsflödet skickar direkt ett bekräftelsesms med beräknad upphämtningstid.
Utgående samtal från en planerare eller ett kalkylblad
En rad i Google Sheets, Airtable eller ditt CRM utlöser en HTTP Request-nod som ringer kunden via din röstagent - en påminnelse om en tid, en uppmaning att slutföra beställningen eller en kort enkät.
Samtalsresultatet tillbaka in i systemet
Webhooken call.completed levererar utskriften, sammanfattningen och de uppgifter som agenten fångade under samtalet (data) - arbetsflödet skriver in dem i ditt CRM, ett kalkylblad eller Slack, utan att någon lyssnar på inspelningen för hand.
Vanliga frågor
- Finns det en officiell n8n-nod för volai?
- Källpaketet för volais community-anslutning
n8n-nodes-volaifinns tillgängligt. Det stöder SMS, samtal, röstmeddelanden och automatiska webhook-triggers. GitHub-README-filen beskriver aktuell tillgänglighet samt installation och utgivning. Användning i n8n Cloud kräver plattformsverifiering, vilket ännu inte är bekräftat. - Hur vet jag att en webhook verkligen kom från volai och inte från någon annan?
- Genom signaturen i headern
Volai-Signature(HMAC-SHA256 medsecretfrånPUT /v1/webhook, spara det direkt). Formeln med exempel finns på/docs/webhooky. - Vad händer om HTTP Request får en timeout och n8n försöker igen?
- Lägg till en header
Idempotency-Keymed ett valfritt stabilt värde, till exempel beställningens ID. Inom 24 timmar ger ett upprepat anrop med samma nyckel exakt samma svar tillbaka - inget andra sms och inget andra samtal skickas. - Kostar det extra att automatisera via n8n?
- Nej - n8n medför inget påslag. Samma priser gäller som på prissidan: sms 0,619 kr, utgående samtal 0,419 kr/min, röstagenten tillkommer med 1,14 kr/min. Hela prislistan finns på
/cenik.