Saltar para o conteúdo
REST API

Agente de voz com número checo na sua app da Lovable

A Lovable cria apps em React com backend Supabase - por isso, as chamadas à API REST da volai pertencem ao servidor, a uma única Edge Function, e não à app no navegador.

1Guarde a chave de API como secret do Supabase

No projeto Supabase que a Lovable criou para a sua app, adicione a variável de ambiente VOLAI_API_KEY com o valor da sua chave (portal, secção API e MCP). Nunca a coloque no código do frontend nem no repositório - quem a visse poderia gastar saldo em seu nome.

2Chame a volai a partir de uma Edge Function

Crie uma Edge Function que receba o pedido da app e só ELA chame https://volai.cz/v1/messages com o cabeçalho Authorization: Bearer ${VOLAI_API_KEY}. Da mesma forma pode construir uma função para POST /v1/calls (uma chamada através do agente de voz).

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

3Chame a função a partir da interface

A partir de um componente da app, chame a Edge Function com supabase.functions.invoke(...) - a chave fica apenas no servidor e a app envia só to e o texto da mensagem.

typescript
const { data, error } = await supabase.functions.invoke("send-sms", {
  body: { to: "+420777123456", body: "A sua encomenda esta pronta." },
});

4Defina um webhook para que a app saiba o resultado da chamada

Crie uma segunda Edge Function que receba o evento (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) e o grave numa tabela do Supabase - a app lê-o dali através do Realtime ou de uma consulta normal. Guarde o endereço com PUT /v1/webhook; um campo events vazio significaria todos os eventos, por isso é melhor enumerá-los. Por predefinição, o Supabase só deixa entrar numa Edge Function pedidos com uma chave no cabeçalho Authorization e, caso contrário, devolve 401: nesta função desative verify_jwt e verifique o evento com a assinatura Volai-Signature, ou envie a chave num cabeçalho próprio através do campo 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"]}'

5Opcional: deixe a própria Lovable AI adicionar a volai

Ao construir a app, a Lovable pode recorrer a uma ferramenta externa através de um servidor MCP próprio (Custom MCP servers / Custom connectors nas definições das integrações). O endereço do servidor é https://volai.cz/mcp e a autenticação é Authorization: Bearer vk_TVUJ_KLIC - os botões exatos na interface da Lovable mudam mais depressa do que esta página, por isso os passos atuais encontram-se em docs.lovable.dev/integrations.

O que pode fazer com isto

SMS de confirmação após uma encomenda ou reserva

Uma loja online ou uma app de reservas criada na Lovable chama, após o pagamento, a sua própria Edge Function, que envia um SMS de confirmação com os detalhes da encomenda.

Agente de voz que atende o telefone pela app

A app compra um número de telefone e cria um agente através de REST (ou configura-os manualmente no portal) - os clientes da app ligam então para um número checo real, não para uma plataforma alheia.

A Lovable AI adiciona sozinha chamadas e SMS à app

Ao construir a app, deixe a Lovable AI recorrer à volai através de Custom MCP - descreva a funcionalidade por palavras ("adiciona um botão que liga ao cliente") e a IA escolhe a ferramenta certa por si.

Perguntas frequentes

Posso chamar a API da volai diretamente a partir do código de frontend da app?
Não. A chave de API não pertence ao navegador - qualquer pessoa que abrisse a consola de programador poderia vê-la e gastar o seu saldo. Passe sempre por uma Edge Function ou por outra rota de servidor que guarde a chave apenas no backend.
Existe um conector nativo da volai para a Lovable?
Ainda não - os conectores nativos da Lovable são sempre parcerias (é assim que funciona, por exemplo, o da ElevenLabs). Hoje o caminho passa por REST a partir de uma Edge Function ou pelo servidor Custom MCP genérico descrito acima.
Como sabe a app que a chamada terminou, sem consultas constantes?
Grave o webhook call.completed numa tabela do Supabase a partir de uma Edge Function e a app lê a alteração através do Supabase Realtime - sem polling.
Quanto vai custar o funcionamento da app?
As mesmas tarifas da página de preços, sem suplemento pela Lovable: SMS 1,36 kr (≈ 0,06 EUR), chamada efetuada 0,92 kr/min (≈ 0,04 EUR), agente de voz adicional 2,50 kr/min (≈ 0,10 EUR). Os preços completos estão em /cenik.

Experimente já

Registe-se e os primeiros 50 kr são por nossa conta.