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).
// 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.
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.
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.completednuma 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.