Pular para o conteúdo principal

Guia de Integração para VibeCoding

Este documento descreve o processo de integração com o sistema Skia para a realização de chamadas de vídeo com agentes de IA.


Visão Geral do Fluxo

A integração ocorre em duas etapas principais via API para obtenção de um link seguro. Após a obtenção do link, o usuário deve ser direcionado para uma tela de espera antes de iniciar a conferência.

  1. Autenticação: Obtenção de token JWT.
  2. Criação de Chamada: Registro da sessão e obtenção do ClientLink.
  3. Interface do Usuário: Tela com botões de "Iniciar" e "Copiar Link".

Configurações (Variáveis de Ambiente)

Para segurança, as credenciais devem ser armazenadas em variáveis de ambiente (Secrets) no seu projeto.

VariávelDescrição
SKIA_CLIENT_IDID do cliente fornecido pela Skia
SKIA_CLIENT_SECRETSecret do cliente fornecido pela Skia
SKIA_QUEUE_IDID da fila de atendimento (ex: "254")
SKIA_BASE_URLhttps://api.skia.com.br/api

Implementação da Interface (UX)

Ao obter o ClientLink com sucesso, o sistema deve apresentar uma tela intermediária:

  • Informativo: Mensagem avisando que a videoconferência está pronta para iniciar.
  • Botão "Iniciar": Direciona o usuário para o link da chamada.
    • Nota: Deve ser aberto na mesma aba.
  • Botão "Copiar Link": Permite ao usuário copiar a URL para a área de transferência.

Detalhes dos Endpoints

1. Autenticação (Login)

POST [Url Ambiente]/Auth/Login

curl -X POST 'https://api.skia.com.br/api/Auth/Login' \
-H 'Content-Type: application/json' \
-d '{
"ClientId": "SEU_CLIENT_ID",
"ClientSecret": "SEU_CLIENT_SECRET"
}'
info

O token retornado expira em 24 horas.

2. Criar Chamada

POST [Url Ambiente]/Call/Create

Headers Obrigatórios:

IdentificadorValor
Content-Typeapplication/json-patch+json
AuthorizationBearer {TOKEN}

Exemplo de Payload:

{
"QueueId": "254",
"PersonalData": {
"CPF": "149.482.774-55",
"Cellphone": "44999887766"
},
"Details": [
{ "Key": "Nome", "Value": "João Silva", "ValueKind": "Texto" }
]
}

Exemplo de Código (Edge Function)

Abaixo, um exemplo de implementação utilizando Deno (Supabase/Lovable):

import { serve } from "https://deno.land/[email protected]/http/server.ts";

const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',
};

serve(async (req) => {
if (req.method === 'OPTIONS') return new Response(null, { headers: corsHeaders });

try {
const { cpf, phone, nome } = await req.json();

// Carregando variáveis de ambiente
const SKIA_CLIENT_ID = Deno.env.get('SKIA_CLIENT_ID');
const SKIA_CLIENT_SECRET = Deno.env.get('SKIA_CLIENT_SECRET');
const SKIA_QUEUE_ID = Deno.env.get('SKIA_QUEUE_ID');

// 1. LOGIN
const loginRes = await fetch('https://api.skia.com.br/api/Auth/Login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
ClientId: SKIA_CLIENT_ID,
ClientSecret: SKIA_CLIENT_SECRET
}),
});
const { token } = await loginRes.json();

// 2. CRIAR CHAMADA
const callRes = await fetch('https://api.skia.com.br/api/Call/Create', {
method: 'POST',
headers: {
'Content-Type': 'application/json-patch+json',
'Authorization': `Bearer ${token}`,
'accept': 'text/plain',
},
body: JSON.stringify({
QueueId: SKIA_QUEUE_ID,
PersonalData: { CPF: cpf, Cellphone: phone },
Details: [{ Key: "Nome", Value: nome, ValueKind: "Texto" }]
}),
});

const callData = await callRes.json();

return new Response(JSON.stringify({ success: true, url: callData.ClientLink }), {
headers: { ...corsHeaders, 'Content-Type': 'application/json' }
});

} catch (error) {
return new Response(JSON.stringify({ success: false, error: error.message }), {
status: 500
});
}
});

Pontos de Atenção

AspectoRegra
Content-TypeDeve ser application/json-patch+json na criação da chamada.
Formato CPFEnviar com pontuação: XXX.XXX.XXX-XX.
TelefoneEnviar apenas números (com DDD).
RedirecionamentoUtilize window.location.href para manter a mesma aba.

Fluxo Resumido

  1. Frontend: Envia dados do cliente para a Edge Function.
  2. Edge Function: Autentica na Skia e solicita o link da chamada.
  3. Frontend: Recebe a URL, exibe a tela de confirmação com as opções de Iniciar ou Copiar.
  4. Usuário: Clica em iniciar e é redirecionado na mesma aba.