Hoppa till innehållet
REST API

Röstagent med tjeckiskt nummer i din Lovable-app

Lovable bygger appar på React med en Supabase-backend - anrop till volais REST-API hör därför hemma på servern, i en enda Edge Function, inte i appen i webbläsaren.

1Spara API-nyckeln som Supabase-secret

I det Supabase-projekt som Lovable skapade för appen läggs miljövariabeln VOLAI_API_KEY till med nyckelns värde (portalen, avsnittet API och MCP). Lägg den aldrig i frontendkoden eller i repot - den som såg nyckeln skulle kunna göra av med saldot i ditt namn.

2Anropa volai från en Edge Function

Skapa en Edge Function som tar emot en förfrågan från appen och som ENDAST själv anropar https://volai.cz/v1/messages med rubriken Authorization: Bearer ${VOLAI_API_KEY}. På samma sätt kan en funktion byggas för POST /v1/calls (samtal via röstagenten).

typescript
// supabase/functions/send-sms/index.ts
Deno.serve(async (req) => {
  const { to, body } = await req.json();

  const res = await fetch("https://volai.cz/v1/messages", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${Deno.env.get("VOLAI_API_KEY")}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ to, body }),
  });

  return new Response(await res.text(), { status: res.status });
});

3Anropa funktionen från användargränssnittet

Från en komponent i appen anropas Edge Function via supabase.functions.invoke(...) - nyckeln stannar på servern och appen skickar bara to och meddelandets text.

typescript
const { data, error } = await supabase.functions.invoke("send-sms", {
  body: { to: "+420777123456", body: "Objednavka je pripravena." },
});

4Ställ in en webhook så att appen får veta samtalets resultat

Skapa en andra Edge Function som tar emot en händelse (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) och skriver den till en tabell i Supabase - därifrån läser appen den via Realtime eller en vanlig fråga. Spara adressen via PUT /v1/webhook; ett tomt fält events skulle betyda absolut alla händelser, så räkna hellre upp dem. Som standard släpper Supabase bara in förfrågningar med en nyckel i rubriken Authorization till en Edge Function och svarar annars med 401: stäng av verify_jwt för den här funktionen och verifiera händelsen med signaturen Volai-Signature, eller skicka nyckeln i en egen rubrik via fältet headers.

bash
curl -X PUT https://volai.cz/v1/webhook \
  -H "Authorization: Bearer vk_TVUJ_KLIC" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://tvuj-projekt.supabase.co/functions/v1/volai-webhook", "events": ["call.completed", "message.sent"]}'

5Valfritt: låt Lovable AI lägga till volai på egen hand

Lovable kan vid bygget av appen även nå ett externt verktyg via en egen MCP-server (Custom MCP servers / Custom connectors i integrationsinställningarna). Serverns adress är https://volai.cz/mcp, autentiseringen Authorization: Bearer vk_TVUJ_KLIC - de exakta knapparna i Lovables gränssnitt ändras snabbare än den här sidan, aktuell anvisning finns på docs.lovable.dev/integrations.

Vad du kan göra med det

Bekräftelse-sms efter beställning eller bokning

En e-handel eller bokningsapp från Lovable anropar efter betalning sin egen Edge Function, som skickar ett bekräftelse-sms med beställningens uppgifter.

Röstagent som svarar i telefonen åt appen

Appen köper ett telefonnummer och skapar en agent via REST (eller så ställs de in manuellt i portalen) - appens kunder ringer sedan till ett riktigt tjeckiskt nummer, inte till en annan plattform.

Lovable AI lägger själv till samtal och sms i appen

Vid bygget av appen kan Lovable AI nå volai via Custom MCP - funktionen beskrivs med ord („lägg till en knapp som ringer kunden“) och AI:n väljer själv rätt verktyg.

Vanliga frågor

Kan volais API anropas direkt från appens frontendkod?
Nej. API-nyckeln hör inte hemma i webbläsaren - den som öppnar utvecklarkonsolen skulle kunna se den och göra av med ditt saldo. Gå alltid via en Edge Function eller en annan serverroute som håller nyckeln enbart i backend.
Finns det en inbyggd volai-koppling för Lovable?
Ännu inte - de inbyggda kopplingarna i Lovable är alltid partnerskap (så fungerar till exempel den för ElevenLabs). I dag går vägen via REST från en Edge Function, eller via den allmänna Custom MCP-server som beskrivs ovan.
Hur vet appen att ett samtal har avslutats, utan ständig avfrågning?
Webhooken call.completed skrivs till en Supabase-tabell från en Edge Function och appen läser ändringen via Supabase Realtime - ingen polling.
Vad kostar det att driva appen?
Samma taxor som i prislistan, inget påslag för Lovable: sms 1,36 kr (≈ 0,62 SEK), utgående samtal 0,92 kr/min (≈ 0,42 SEK), röstagent därutöver 2,50 kr/min (≈ 1,14 SEK). Den exakta prislistan finns på /cenik.

Prova direkt

Registrera dig så bjuder vi på de första 50 kr.