> 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

Ihr Empfangsassistent kann Details aus einem Anruf in einer Supabase-Tabelle speichern und über die REST API von Supabase nach einem Anrufenden anhand seiner Telefonnummer suchen. Die folgende Einrichtung verwendet den öffentlichen Schlüssel Ihres Projekts mit Row-Level Security, sodass der Empfangsassistent nur das tun kann, was Sie erlauben.

> **Warning**
>
> Fügen Sie niemals den Schlüssel `service_role` oder einen geheimen Schlüssel in ein Webhook-Tool ein. Diese Schlüssel umgehen Row-Level Security
> und gewähren vollen Zugriff auf Ihre Datenbank.

## Bevor Sie beginnen

Öffnen Sie im Supabase-Dashboard **Project Settings** → **API Keys** und kopieren Sie den Schlüssel **publishable** oder den älteren Schlüssel **anon**. Ihre Projekt-URL lautet `https://PROJECT_REF.supabase.co`.

## Datenbank vorbereiten

Führen Sie dies im **SQL Editor** aus. Es erstellt eine Tabelle, in die Ihr Empfangsassistent nur Daten einfügen kann, sowie eine Funktion, die einen Kunden anhand der exakten Telefonnummer zurückgibt. Die Funktion setzt eine bestehende Tabelle `customers` mit den Spalten `name`, `plan`, `notes` und `phone` voraus. Passen Sie die Namen daher an Ihr Schema an.

Anrufende können die Funktion nicht verwenden, um Kunden aufzulisten: Sie gibt nichts zurück, wenn die exakte Telefonnummer nicht bekannt ist.

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

## Tools erstellen

Gehen Sie für beide Tools zu **Integrationen**, wählen Sie **Integration hinzufügen**, dann **Webhook-Tool**, und fügen Sie diese Request Headers hinzu:

| Header          | Wert                                                                                    |
| --------------- | --------------------------------------------------------------------------------------- |
| `apikey`        | Ihr veröffentlichbarer oder anon-Schlüssel                                              |
| `Authorization` | `Bearer ` gefolgt vom anon-Schlüssel. Bei einem veröffentlichbaren Schlüssel weglassen. |

### Rückrufanfrage speichern

| Feld                 | Wert                                                                                 |
| -------------------- | ------------------------------------------------------------------------------------ |
| **Name**             | `save_callback_request`                                                              |
| **Beschreibung**     | "Speichere eine Rückrufanfrage, wenn du dem Anrufenden eine Nachfassaktion zusagst." |
| **Methode**          | POST                                                                                 |
| **URL**              | `https://PROJECT_REF.supabase.co/rest/v1/callback_requests`                          |
| **Body Parameters**  | `caller_name`, `phone` und `reason` (alle Strings, erforderlich)                     |
| **Agenten zuweisen** | **Receptionist**                                                                     |

### Kunden suchen

| Feld                 | Wert                                                                                                                              |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Name**             | `find_customer`                                                                                                                   |
| **Beschreibung**     | "Suche das Konto des Anrufenden anhand der Telefonnummer. Verwende dies, wenn ein Anrufender nach seinem Tarif oder Konto fragt." |
| **Methode**          | POST                                                                                                                              |
| **URL**              | `https://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone`                                                              |
| **Body Parameters**  | `phone` (String, erforderlich): "Die Telefonnummer des Anrufenden im E.164-Format, zum Beispiel +14155550123."                    |
| **Agenten zuweisen** | **Receptionist**                                                                                                                  |

Wählen Sie bei jedem Tool **Aktivieren** und [testen Sie Ihren Empfangsassistenten](/docs/de/reception-ai/receptionist/testing) mit einer Rückrufanfrage. Die Zeile erscheint im **Table Editor**.

## Fehlerbehebung

| Problem                                      | Prüfen Sie                                                                                             |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `new row violates row-level security policy` | Die Einfüge-Richtlinie muss auf die Rolle `anon` ausgerichtet sein.                                    |
| `Could not find the function`                | Der Body-Parameter muss exakt wie das Funktionsargument heißen, hier `phone`.                          |
| 401 `Invalid API key`                        | Entfernen Sie bei einem veröffentlichbaren Schlüssel den Header `Authorization`.                       |
| Kunden werden nicht gefunden                 | Speichern Sie Telefonnummern im E.164-Format, also im selben Format, das Ihr Empfangsassistent sendet. |