Przejdź do treści
REST API

Agent głosowy z czeskim numerem w Państwa aplikacji Lovable

Lovable buduje aplikacje w React z backendem Supabase - wywołania REST API volai należą więc na serwer, do Edge Function, a nie do aplikacji działającej w przeglądarce.

1Zapisanie klucza API jako sekretu Supabase

W projekcie Supabase, który Lovable utworzył dla Państwa aplikacji, dodajcie Państwo zmienną środowiskową VOLAI_API_KEY o wartości swojego klucza (portal, sekcja API i MCP). Nigdy nie umieszczajcie go w kodzie frontendu ani w repozytorium - każdy, kto by go zobaczył, mógłby zużywać Państwa saldo.

2Wywołanie volai z Edge Function

Utwórzcie Edge Function, która przyjmuje żądanie z Państwa aplikacji i dopiero ONA wywołuje https://volai.cz/v1/messages z nagłówkiem Authorization: Bearer ${VOLAI_API_KEY}. W ten sam sposób można zbudować funkcję dla POST /v1/calls (połączenie przez agenta głosowego).

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 });
});

3Wywołanie funkcji z interfejsu użytkownika

Wywołujcie Państwo Edge Function z komponentu aplikacji przez supabase.functions.invoke(...) - klucz pozostaje wyłącznie na serwerze, aplikacja wysyła tylko to i treść wiadomości.

typescript
const { data, error } = await supabase.functions.invoke("send-sms", {
  body: { to: "+420777123456", body: "Państwa zamówienie jest gotowe do odbioru." },
});

4Konfiguracja webhooka, aby aplikacja poznała wynik połączenia

Utwórzcie drugą Edge Function, która przyjmuje zdarzenie (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) i zapisuje je do tabeli Supabase - stamtąd aplikacja odczytuje je przez Realtime lub zwykłe zapytanie. Adres zapiszcie przez PUT /v1/webhook; puste pole events oznaczałoby wszystkie zdarzenia, dlatego lepiej wymienić potrzebne pojedynczo. Supabase domyślnie wpuszcza do Edge Function tylko żądania z kluczem w nagłówku Authorization, a w przeciwnym razie odpowiada 401: wyłączcie dla tej funkcji verify_jwt i weryfikujcie zdarzenie na podstawie podpisu Volai-Signature, albo wysyłajcie klucz we własnym nagłówku przez pole 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"]}'

5Opcjonalnie: pozwolić Lovable AI samej dodać volai

Lovable może podczas budowy aplikacji sięgać po zewnętrzne narzędzie także przez własny serwer MCP (Custom MCP servers / Custom connectors w ustawieniach integracji). Adres serwera to https://volai.cz/mcp, uwierzytelnianie Authorization: Bearer vk_TVUJ_KLIC - dokładne przyciski w interfejsie Lovable zmieniają się szybciej niż ta strona, aktualną procedurę znajdą Państwo pod docs.lovable.dev/integrations.

Co Państwo z tym zrobią

SMS z potwierdzeniem po zamówieniu lub rezerwacji

Sklep internetowy lub aplikacja rezerwacyjna zbudowane w Lovable po opłaceniu wywołują własną Edge Function, która wysyła SMS z potwierdzeniem i szczegółami zamówienia.

Agent głosowy, który odbiera telefon w imieniu Państwa aplikacji

Aplikacja kupuje numer telefonu i przez REST tworzy agenta (albo konfigurują go Państwo ręcznie w portalu) - klienci Państwa aplikacji dzwonią wtedy na prawdziwy czeski numer, a nie na cudzą platformę.

Lovable AI sama dodaje połączenia i SMS-y do aplikacji

Pozwólcie Państwo Lovable AI sięgać po volai przez Custom MCP podczas budowy aplikacji - opisują Państwo funkcję słowami („dodaj przycisk, który zadzwoni do klienta“), a AI sama wybiera odpowiednie narzędzie.

Często zadawane pytania

Czy mogę wywoływać API volai bezpośrednio z kodu frontendu aplikacji?
Nie. Klucz API nie należy do przeglądarki - każdy, kto otworzy konsolę deweloperską, mógłby go zobaczyć i zużywać Państwa saldo. Zawsze korzystajcie Państwo z Edge Function lub innej trasy serwerowej, która trzyma klucz wyłącznie w backendzie.
Czy istnieje natywny konektor volai dla Lovable?
Jeszcze nie - natywne konektory w Lovable są zawsze efektem partnerstw (tak działa na przykład konektor ElevenLabs). Dziś droga prowadzi przez REST z Edge Function albo przez opisany wyżej ogólny serwer Custom MCP.
Skąd aplikacja wie, że połączenie się zakończyło, bez ciągłego dopytywania?
Webhook call.completed zapisują Państwo przez Edge Function do tabeli Supabase, a aplikacja odczytuje zmianę przez Supabase Realtime - zupełnie bez pollingu.
Ile kosztuje działanie aplikacji?
Obowiązują te same stawki co w cenniku, bez dopłaty za Lovable: SMS 1.36 CZK (~EUR 0.06), połączenie wychodzące 0.92 CZK/min (~EUR 0.04), agent głosowy dodatkowo 2.50 CZK/min (~EUR 0.10). Dokładny cennik znajdą Państwo pod /cenik.

Proszę wypróbować od razu

Proszę się zarejestrować, a pierwsze 50 kr salda dostają Państwo od nas.