> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Supabase

Sua recepcionista pode salvar detalhes de uma ligação em uma tabela do Supabase e consultar uma pessoa que ligou pelo número de telefone, usando a API REST do Supabase. A configuração abaixo usa a chave pública do seu projeto com segurança em nível de linha, para que a recepcionista faça apenas o que você permitir.

> **Warning**
>
> Nunca coloque a chave `service_role` ou secreta em uma ferramenta de webhook. Essas chaves ignoram a segurança em nível de linha
> e dão acesso completo ao seu banco de dados.

## Antes de começar

No painel do Supabase, abra **Project Settings** → **API Keys** e copie a chave **publishable** ou a chave **anon** legada. A URL do seu projeto é `https://PROJECT_REF.supabase.co`.

## Prepare o banco de dados

Execute isto no **SQL Editor**. Ele cria uma tabela na qual sua recepcionista só pode inserir dados e uma função que retorna um cliente pelo número de telefone exato. A função pressupõe uma tabela `customers` existente com as colunas `name`, `plan`, `notes` e `phone`, então ajuste os nomes ao seu esquema.

As pessoas que ligam não podem usar a função para listar clientes: ela não retorna nada a menos que o número de telefone exato seja conhecido.

```sql
create table callback_requests (
  id bigint generated always as identity primary key,
  created_at timestamptz not null default now(),
  caller_name text not null,
  phone text not null,
  reason text not null
);

alter table callback_requests enable row level security;

create policy "Receptionist can add callback requests"
  on callback_requests for insert to anon
  with check (true);

create function find_customer_by_phone(phone text)
returns table (name text, plan text, notes text)
language sql stable security definer set search_path = public
as $$
  select c.name, c.plan, c.notes from customers c where c.phone = find_customer_by_phone.phone limit 1;
$$;

revoke execute on function find_customer_by_phone from public;
grant execute on function find_customer_by_phone to anon;
```

## Crie as ferramentas

Para ambas as ferramentas, acesse **Integrações**, selecione **Adicionar integração**, escolha **Ferramenta de webhook** e adicione estes cabeçalhos de solicitação:

| Cabeçalho       | Valor                                                              |
| --------------- | ------------------------------------------------------------------ |
| `apikey`        | Sua chave publishable ou anon                                      |
| `Authorization` | `Bearer ` seguido da chave anon. Omita para uma chave publishable. |

### Salvar uma solicitação de retorno

| Campo                    | Valor                                                                                        |
| ------------------------ | -------------------------------------------------------------------------------------------- |
| **Nome**                 | `save_callback_request`                                                                      |
| **Descrição**            | "Salve uma solicitação de retorno sempre que prometer um acompanhamento à pessoa que ligou." |
| **Método**               | POST                                                                                         |
| **URL**                  | `https://PROJECT_REF.supabase.co/rest/v1/callback_requests`                                  |
| **Parâmetros do corpo**  | `caller_name`, `phone` e `reason` (todos strings, obrigatórios)                              |
| **Atribuir aos agentes** | **Recepcionista**                                                                            |

### Consultar um cliente

| Campo                    | Valor                                                                                                                  |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **Nome**                 | `find_customer`                                                                                                        |
| **Descrição**            | "Consulte a conta da pessoa que ligou pelo número de telefone. Use quando ela perguntar sobre seu plano ou conta."     |
| **Método**               | POST                                                                                                                   |
| **URL**                  | `https://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone`                                                   |
| **Parâmetros do corpo**  | `phone` (string, obrigatório): "O número de telefone da pessoa que ligou no formato E.164, por exemplo, +14155550123." |
| **Atribuir aos agentes** | **Recepcionista**                                                                                                      |

Selecione **Ativar** em cada ferramenta e [teste sua recepcionista](/docs/pt/reception-ai/receptionist/testing) com uma solicitação de retorno. A linha aparecerá no **Table Editor**.

## Solução de problemas

| Problema                                     | O que verificar                                                                                   |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `new row violates row-level security policy` | A política de inserção deve ter como destino a função `anon`.                                     |
| `Could not find the function`                | O parâmetro do corpo deve ter exatamente o mesmo nome do argumento da função, neste caso `phone`. |
| 401 `Invalid API key`                        | Com uma chave publishable, remova o cabeçalho `Authorization`.                                    |
| Clientes não são encontrados                 | Armazene os números de telefone no formato E.164, o mesmo formato que sua recepcionista envia.    |