Puhelinautomaatio on siirtynyt robottimaisista "paina yksi, paina kaksi" -valikoista luonnolliseen, reaaliaikaiseen keskusteluun. Nykyiset tekoälytyökalut mahdollistavat sen, että kuka tahansa voi rakentaa sekunneissa vastaavan, älykkään puheagentin ilman tuhansien rivien koodaamista.
Tämä opas näyttää, miten rakennat autonomisen puhelinagentin hyödyntämällä Vapi AI -alustaa ja n8n-automaatiota. Tämä on modernia vibe-koodausta parhaimmillaan: yhdistämme valmiita rajapintoja, älykästä promptausta ja visuaalisia työnkulkuja toimivaksi kokonaisuudeksi.
---
Arkkitehtuuri: Miten puheagentti toimii?
Ennen kuin siirryt työkaluun, sinun on ymmärrettävä järjestelmän tiedonkulku. Autonominen asiakaspalvelu tekoälyllä vaatii kolme pääkomponenttia: puheentunnistuksen, päättelymoottorin (LLM) ja ulkoiset integraatiot.
Tässä on järjestelmän blueprint:
[Asiakas]
│ (Puhelu GSM/VoIP)
▼
[Vapi AI] ──(Puheentunnistus: Deepgram)──► [LLM: GPT-4o]
│ │
│◄──(Puheensynteesi: ElevenLabs)────────────┤ (Tunnistaa työkalun tarpeen)
│ ▼
│ [Vapi Tool Call]
│ │ (HTTP POST JSON)
│ ▼
│ [n8n Webhook]
│ │
│ [n8n Automaatio] ──► [CRM / Kalenteri / API]
│ │
│◄──(JSON-vastaus: "Aika varattu")──────────┘
1. Vapi AI hoitaa puhelun vastaanoton, puheentunnistuksen (STT) ja puheensynteesin (TTS).
2. Kun asiakas pyytää jotain toimintoa (esim. "Varaa minulle aika huomiseksi"), Vapi tunnistaa tämän työkalukutsuksi (Tool Call).
3. Vapi lähettää HTTP POST -pyynnön n8n-automaatioon.
4. n8n suorittaa taustalogiikan (esimerkiksi tarkistaa vapaat ajat Google-kalenterista tai päivittää CRM-järjestelmän) ja palauttaa vastauksen Vapille.
5. Vapi muuttaa n8n:n palauttaman datan puheeksi ja vastaa asiakkaalle.
---
Vaihe 1: Vapi AI -agentin konfigurointi
Vapi AI on suunniteltu matalan viiveen tekoälypuheluihin. Aloita luomalla uusi agentti Vapi-konsolissa.
#### Järjestelmäprompteen (System Prompt) rakenne
Älä kirjoita pitkiä, epämääräisiä ohjeita. Puheagentti tarvitsee tarkan roolin, säännöt ja rajat. Käytä seuraavaa prompt-rakennetta:
# ROOLI
Olet Virtuaalinen Assistentti "Aino" Autohuolto Oy:ssä. Autat asiakkaita varaamaan huoltoaikoja ja vastaat yleisiin kysymyksiin.
# SÄÄNNÖT
- Puhu lyhyesti ja ytimekkäästi. Älä koskaan käytä yli kahta lausetta kerrallaan.
- Jos asiakas haluaa varata ajan, käytä "varaa_aika" -työkalua.
- Älä keksi aikoja itse. Kysy aina asiakkaalta nimi ja puhelinnumero ennen varauksen vahvistamista.
- Puhu ystävällisesti mutta ammattimaisesti suomeksi.
# TOIMINTAMALLI (WORKFLOW)
1. Tervehdi asiakasta ja kysy, miten voit auttaa.
2. Jos kyseessä on ajanvaraus, kerää tarvittavat tiedot (pvm, kellonaika, auton rekisterinumero).
3. Kutsu työkalua ja odota vastausta.
4. Vahvista varaus asiakkaalle n8n-automaatiolta saadun tiedon perusteella.
#### Puheentunnistus ja synteesi
- Transcriber (STT): Valitse Deepgram ja kieleksi suomi (
fi). Se on tällä hetkellä markkinoiden nopein ja tarkin puheentunnistus suomen kielelle. - Voice (TTS): Valitse ElevenLabs tai Play.ht. ElevenLabsin suomenkieliset mallit (kuten Multilingual v2) tarjoavat erittäin luonnollisen intonaation.
---
Vaihe 2: Työkalun (Tool) määrittely Vapissa
Jotta tekoälypuhelut voivat tehdä muutakin kuin vain jutella, niille on annettava kädet. Vapissa tämä tehdään luomalla "Tool".
Määrittele uusi työkalu nimellä varaa_aika. Tämä työkalu tekee HTTP-kutsun n8n-webhookiin.
#### Työkalun JSON-skeema:
{
"type": "function",
"name": "varaa_aika",
"description": "Käytä tätä työkalua huoltoajan varaamiseen asiakkaalle.",
"parameters": {
"type": "object",
"properties": {
"asiakkaan_nimi": {
"type": "string",
"description": "Asiakkaan etu- ja sukunimi."
},
"pvm": {
"type": "string",
"description": "Toivottu päivämäärä muodossa YYYY-MM-DD."
},
"klo": {
"type": "string",
"description": "Toivottu kellonaika muodossa HH:MM."
},
"rekisterinumero": {
"type": "string",
"description": "Auton rekisterinumero."
}
},
"required": ["asiakkaan_nimi", "pvm", "klo"]
}
}
Aseta työkalun URL-osoitteeksi n8n-webhookisi osoite (saat tämän seuraavassa vaiheessa).
---
Vaihe 3: n8n-automaation rakentaminen
n8n-automaatio toimii puheagenttisi aivoina ja käsinä. Se ottaa vastaan Vapin lähettämän datan, suorittaa halutut no-code integraatiot ja palauttaa vastauksen.
Rakenna n8n-työnkulku seuraavien solmujen (nodes) avulla:
#### 1. Webhook-solmu (Vastaanotin)
- Method: POST
- Path:
vapi-booking-webhook - Respond: Using Respond to Webhook Node (Tämä on kriittistä, jotta Vapi saa vastauksen takaisin samaan HTTP-yhteyteen).
#### 2. Google Calendar / CRM -solmu (Toiminto)
- Yhdistä webhook-solmu esimerkiksi Google Calendar -solmuun.
- Määritä uusi tapahtuma (Create Event) käyttämällä Vapilta tulleita muuttujia:
- Aloitusaika:
{{ $json.body.message.toolCalls[0].function.arguments.pvm }}T{{ $json.body.message.toolCalls[0].function.arguments.klo }}:00 - Otsikko:
Huolto: {{ $json.body.message.toolCalls[0].function.arguments.asiakkaan_nimi }} - Kuvaus:
Rekisterinumero: {{ $json.body.message.toolCalls[0].function.arguments.rekisterinumero }}
#### 3. Respond to Webhook -solmu (Vastaus)
Vapin on saatava vastaus tietyssä muodossa, jotta LLM ymmärtää toiminnon onnistuneen. Aseta solmun vastausdataksi (Response Body) seuraava JSON-rakenne:
{
"results": [
{
"toolCallId": "{{ $json.body.message.toolCalls[0].id }}",
"result": "Varaus onnistui. Aika on varattu onnistuneesti ajalle {{ $json.body.message.toolCalls[0].function.arguments.pvm }} klo {{ $json.body.message.toolCalls[0].function.arguments.klo }}."
}
]
}
Tämä JSON kertoo Vapin LLM-mallille, että varaus on tehty. Tekoäly lukee tämän vastauksen ja sanoo asiakkaalle luonnollisella kielellä: "Kiitos, varaus on nyt tehty huomiseksi klo 14. Tervetuloa!"
---
Vibe-koodarin parhaat käytännöt puhelinagenteille
Kun rakennat puheagentteja, huomaat nopeasti, että puhe eroaa merkittävästi tekstipohjaisista chatboteista. Seuraavat käytännöt säästävät sinut yleisimmiltä sudenkuopilta:
- Minimoi viive (Latency): Puhelussa yli 1,5 sekunnin tauko tuntuu ikuisuudelta. Käytä nopeita LLM-malleja (kuten GPT-4o-mini tai Groq/Llama-3) ja sijoita n8n-palvelimesi maantieteellisesti lähelle Vapin palvelimia.
- Hallitse keskeytykset (Interruptions): Vapissa on sisäänrakennettu keskeytyksen tunnistus. Jos asiakas alkaa puhua tekoälyn päälle, tekoäly vaikenee heti. Varmista, että järjestelmäprompissa ohjeistat agenttia olemaan loukkaantumatta keskeytyksistä.
- Käsittele virhetilanteet tyylikkäästi: Jos n8n-automaatio epäonnistuu (esim. kalenteriaika onkin varattu), palauta n8n:stä selkeä virheviesti:
"result": "Kyseinen aika on jo varattu."LLM osaa lukea tämän ja ehdottaa asiakkaalle uutta aikaa automaattisesti.
---
Seuraava askel puheautomaatiossa
Oman puheagentin rakentaminen ei vaadi enää kuukausien kehitystyötä. Vapi AI hoitaa monimutkaisen puheentunnistuksen ja -synteesin, kun taas n8n antaa sinulle rajattomat mahdollisuudet kytkeä puhelut osaksi yrityksesi olemassa olevia järjestelmiä.
Minkä rutiininomaisen puhelun sinun yrityksesi voisi automatisoida jo tänään? Aloita luomalla ilmainen tili Vapiin ja n8n-pilveen, ja rakenna ensimmäinen toimiva prototyyppisi alle tunnissa.