> 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

Je receptionist kan gegevens uit een gesprek opslaan in een Supabase-tabel en een beller op telefoonnummer opzoeken via de REST API van Supabase. De onderstaande configuratie gebruikt de openbare sleutel van je project met row-level security, zodat de receptionist alleen kan doen wat jij toestaat.

> **Warning**
>
> Plaats nooit de sleutel `service_role` of de geheime sleutel in een webhooktool. Deze sleutels omzeilen row-level security
> en geven volledige toegang tot je database.

## Voordat je begint

Open in het Supabase-dashboard **Project Settings** → **API Keys** en kopieer de sleutel **publishable** of de verouderde sleutel **anon**. Je project-URL is `https://PROJECT_REF.supabase.co`.

## Bereid de database voor

Voer dit uit in de **SQL Editor**. Hiermee maak je een tabel waarin je receptionist alleen kan invoegen, en een functie die één klant retourneert op basis van een exact telefoonnummer. De functie gaat uit van een bestaande tabel `customers` met de kolommen `name`, `plan`, `notes` en `phone`, dus pas de namen aan je schema aan.

Bellers kunnen de functie niet gebruiken om klanten weer te geven: de functie retourneert niets tenzij het exacte telefoonnummer bekend is.

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

## Maak de tools

Ga voor beide tools naar **Integrations**, selecteer **Add integration**, kies **Webhook Tool** en voeg deze requestheaders toe:

| Header          | Waarde                                                                            |
| --------------- | --------------------------------------------------------------------------------- |
| `apikey`        | Je publishable- of anon-sleutel                                                   |
| `Authorization` | `Bearer ` gevolgd door de anon-sleutel. Laat dit weg bij een publishable-sleutel. |

### Sla een terugbelverzoek op

| Veld                     | Waarde                                                                   |
| ------------------------ | ------------------------------------------------------------------------ |
| **Naam**                 | `save_callback_request`                                                  |
| **Beschrijving**         | "Sla een terugbelverzoek op wanneer je de beller een follow-up belooft." |
| **Methode**              | POST                                                                     |
| **URL**                  | `https://PROJECT_REF.supabase.co/rest/v1/callback_requests`              |
| **Bodyparameters**       | `caller_name`, `phone` en `reason` (allemaal strings, verplicht)         |
| **Toewijzen aan agents** | **Receptionist**                                                         |

### Zoek een klant op

| Veld                     | Waarde                                                                                                                       |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| **Naam**                 | `find_customer`                                                                                                              |
| **Beschrijving**         | "Zoek het account van de beller op telefoonnummer op. Gebruik dit wanneer een beller naar het abonnement of account vraagt." |
| **Methode**              | POST                                                                                                                         |
| **URL**                  | `https://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone`                                                         |
| **Bodyparameters**       | `phone` (string, verplicht): "Het telefoonnummer van de beller in E.164-indeling, bijvoorbeeld +14155550123."                |
| **Toewijzen aan agents** | **Receptionist**                                                                                                             |

Selecteer voor elke tool **Enable** en [test je receptionist](/docs/nl/reception-ai/receptionist/testing) met een terugbelverzoek. De rij verschijnt in **Table Editor**.

## Problemen oplossen

| Probleem                                     | Wat je moet controleren                                                                           |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| `new row violates row-level security policy` | Het invoegbeleid moet gericht zijn op de rol `anon`.                                              |
| `Could not find the function`                | De bodyparameter moet precies dezelfde naam hebben als het argument van de functie, hier `phone`. |
| 401 `Invalid API key`                        | Verwijder bij een publishable-sleutel de header `Authorization`.                                  |
| Klanten worden niet gevonden                 | Sla telefoonnummers op in E.164-indeling, dezelfde indeling die je receptionist verstuurt.        |