> 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

La tua receptionist può salvare i dettagli di una chiamata in una tabella Supabase e cercare un chiamante in base al numero di telefono tramite l'API REST di Supabase. La configurazione qui sotto usa la chiave pubblica del tuo progetto con la sicurezza a livello di riga, quindi la receptionist può fare solo ciò che autorizzi.

> **Warning**
>
> Non inserire mai la chiave `service_role` o la chiave segreta in uno strumento webhook. Queste chiavi aggirano la sicurezza a livello di riga
> e concedono accesso completo al tuo database.

## Prima di iniziare

Nella dashboard di Supabase, apri **Project Settings** → **API Keys** e copia la chiave **publishable** oppure la chiave **anon** legacy. L'URL del tuo progetto è `https://PROJECT_REF.supabase.co`.

## Prepara il database

Esegui questo nell'**SQL Editor**. Crea una tabella in cui la tua receptionist può solo inserire dati e una funzione che restituisce un cliente in base al numero di telefono esatto. La funzione presuppone una tabella `customers` esistente con le colonne `name`, `plan`, `notes` e `phone`, quindi adatta i nomi al tuo schema.

I chiamanti non possono usare la funzione per elencare i clienti: non restituisce nulla se non è noto il numero di telefono esatto.

```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 gli strumenti

Per entrambi gli strumenti, vai a **Integrations**, seleziona **Add integration**, scegli **Webhook Tool** e aggiungi questi header della richiesta:

| Header          | Valore                                                                    |
| --------------- | ------------------------------------------------------------------------- |
| `apikey`        | La tua chiave publishable o anon                                          |
| `Authorization` | `Bearer ` seguito dalla chiave anon. Omettilo per una chiave publishable. |

### Salva una richiesta di richiamata

| Campo                   | Valore                                                                                 |
| ----------------------- | -------------------------------------------------------------------------------------- |
| **Nome**                | `save_callback_request`                                                                |
| **Descrizione**         | "Salva una richiesta di richiamata ogni volta che prometti un follow-up al chiamante." |
| **Metodo**              | POST                                                                                   |
| **URL**                 | `https://PROJECT_REF.supabase.co/rest/v1/callback_requests`                            |
| **Parametri del body**  | `caller_name`, `phone` e `reason` (tutte stringhe, obbligatori)                        |
| **Assegna agli agenti** | **Receptionist**                                                                       |

### Cerca un cliente

| Campo                   | Valore                                                                                                                                    |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Nome**                | `find_customer`                                                                                                                           |
| **Descrizione**         | "Cerca l'account del chiamante in base al numero di telefono. Usalo quando un chiamante chiede informazioni sul proprio piano o account." |
| **Metodo**              | POST                                                                                                                                      |
| **URL**                 | `https://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone`                                                                      |
| **Parametri del body**  | `phone` (stringa, obbligatorio): "Il numero di telefono del chiamante in formato E.164, ad esempio +14155550123."                         |
| **Assegna agli agenti** | **Receptionist**                                                                                                                          |

Seleziona **Enable** su ogni strumento, quindi [testa la tua receptionist](/docs/it/reception-ai/receptionist/testing) con una richiesta di richiamata. La riga appare in **Table Editor**.

## Risoluzione dei problemi

| Problema                                     | Cosa controllare                                                                                        |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| `new row violates row-level security policy` | La policy di inserimento deve avere come destinazione il ruolo `anon`.                                  |
| `Could not find the function`                | Il parametro del body deve avere esattamente lo stesso nome dell'argomento della funzione, qui `phone`. |
| 401 `Invalid API key`                        | Con una chiave publishable, rimuovi l'header `Authorization`.                                           |
| I clienti non vengono trovati                | Memorizza i numeri di telefono in formato E.164, lo stesso formato inviato dalla tua receptionist.      |