> 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

Tu recepcionista puede guardar los detalles de una llamada en una tabla de Supabase y buscar a quien llama por número de teléfono mediante la API REST de Supabase. La configuración siguiente usa la clave pública de tu proyecto con seguridad a nivel de fila, por lo que la recepcionista solo puede hacer lo que permitas.

> **Warning**
>
> No incluyas nunca la clave `service_role` ni la clave secreta en una herramienta de webhook. Estas claves omiten la seguridad a nivel de fila
> y otorgan acceso completo a tu base de datos.

## Antes de empezar

En el panel de Supabase, abre **Project Settings** → **API Keys** y copia la clave **publishable** o la clave heredada **anon**. La URL de tu proyecto es `https://PROJECT_REF.supabase.co`.

## Prepara la base de datos

Ejecuta esto en el **SQL Editor**. Crea una tabla en la que tu recepcionista solo puede insertar datos y una función que devuelve un cliente por número de teléfono exacto. La función presupone que existe una tabla `customers` con las columnas `name`, `plan`, `notes` y `phone`, así que ajusta los nombres a tu esquema.

Quienes llaman no pueden usar la función para listar clientes: no devuelve nada a menos que se conozca el número de teléfono exacto.

```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;
```

## Crea las herramientas

Para ambas herramientas, ve a **Integraciones**, selecciona **Añadir integración**, elige **Herramienta de webhook** y añade estas cabeceras de solicitud:

| Cabecera        | Valor                                                                      |
| --------------- | -------------------------------------------------------------------------- |
| `apikey`        | Tu clave publishable o anon                                                |
| `Authorization` | `Bearer ` seguido de la clave anon. Omítela si usas una clave publishable. |

### Guardar una solicitud de devolución de llamada

| Campo                     | Valor                                                                                              |
| ------------------------- | -------------------------------------------------------------------------------------------------- |
| **Nombre**                | `save_callback_request`                                                                            |
| **Descripción**           | "Guarda una solicitud de devolución de llamada siempre que prometas a quien llama un seguimiento." |
| **Método**                | POST                                                                                               |
| **URL**                   | `https://PROJECT_REF.supabase.co/rest/v1/callback_requests`                                        |
| **Parámetros del cuerpo** | `caller_name`, `phone` y `reason` (todas cadenas, obligatorios)                                    |
| **Asignar a agentes**     | **Recepcionista**                                                                                  |

### Buscar un cliente

| Campo                     | Valor                                                                                                                      |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Nombre**                | `find_customer`                                                                                                            |
| **Descripción**           | "Busca la cuenta de quien llama por número de teléfono. Úsala cuando alguien llame para preguntar sobre su plan o cuenta." |
| **Método**                | POST                                                                                                                       |
| **URL**                   | `https://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone`                                                       |
| **Parámetros del cuerpo** | `phone` (cadena, obligatorio): "El número de teléfono de quien llama en formato E.164, por ejemplo +14155550123."          |
| **Asignar a agentes**     | **Recepcionista**                                                                                                          |

Selecciona **Activar** en cada herramienta y después [prueba tu recepcionista](/docs/es/reception-ai/receptionist/testing) con una solicitud de devolución de llamada. La fila aparecerá en **Table Editor**.

## Solución de problemas

| Problema                                     | Qué comprobar                                                                                         |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `new row violates row-level security policy` | La política de inserción debe dirigirse al rol `anon`.                                                |
| `Could not find the function`                | El parámetro del cuerpo debe llamarse exactamente igual que el argumento de la función, aquí `phone`. |
| 401 `Invalid API key`                        | Si usas una clave publishable, elimina la cabecera `Authorization`.                                   |
| No se encuentran clientes                    | Guarda los números de teléfono en formato E.164, el mismo formato que envía tu recepcionista.         |