Passer à la navigation

Supabase

Enregistrez et recherchez des données dans votre base de données Supabase avec des outils webhook.

Votre réceptionniste peut enregistrer les informations d’un appel dans une table Supabase et rechercher un appelant par numéro de téléphone via l’API REST de Supabase. La configuration ci-dessous utilise la clé publique de votre projet avec la sécurité au niveau des lignes. Le réceptionniste ne peut ainsi effectuer que les actions que vous autorisez.

Ne placez jamais la clé service_role ou la clé secrète dans un outil webhook. Ces clés contournent la sécurité au niveau des lignes et donnent un accès complet à votre base de données.

Avant de commencer

Dans le Dashboard Supabase, ouvrez Project Settings → API Keys et copiez la clé publishable, ou l’ancienne clé anon. L’URL de votre projet est https://PROJECT_REF.supabase.co.

Préparer la base de données

Exécutez cette commande dans SQL Editor. Elle crée une table dans laquelle votre réceptionniste peut uniquement insérer des données, ainsi qu’une fonction qui renvoie un client à partir d’un numéro de téléphone exact. La fonction suppose l’existence d’une table customers avec les colonnes name, plan, notes et phone. Adaptez donc les noms à votre schéma.

Les appelants ne peuvent pas utiliser la fonction pour lister les clients : elle ne renvoie rien tant que le numéro de téléphone exact n’est pas connu.

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;

Créer les outils

Pour les deux outils, accédez à Intégrations, sélectionnez Ajouter une intégration, choisissez Outil webhook, puis ajoutez ces en-têtes de requête :

En-têteValeur
apikeyVotre clé publishable ou anon
AuthorizationBearer suivi de la clé anon. Omettez-le pour une clé publishable.

Enregistrer une demande de rappel

ChampValeur
Nomsave_callback_request
Description”Enregistrez une demande de rappel chaque fois que vous promettez un suivi à l’appelant.”
MéthodePOST
URLhttps://PROJECT_REF.supabase.co/rest/v1/callback_requests
Paramètres du corpscaller_name, phone et reason (tous des chaînes, obligatoires)
Attribuer aux agentsRéceptionniste

Rechercher un client

ChampValeur
Nomfind_customer
Description”Recherchez le compte de l’appelant par numéro de téléphone. Utilisez cet outil lorsqu’un appelant pose une question sur son forfait ou son compte.”
MéthodePOST
URLhttps://PROJECT_REF.supabase.co/rest/v1/rpc/find_customer_by_phone
Paramètres du corpsphone (chaîne, obligatoire) : “Le numéro de téléphone de l’appelant au format E.164, par exemple +14155550123.”
Attribuer aux agentsRéceptionniste

Sélectionnez Activer sur chaque outil, puis testez votre réceptionniste avec une demande de rappel. La ligne apparaît dans Table Editor.

Résolution des problèmes

ProblèmeVérification à effectuer
new row violates row-level security policyLa stratégie d’insertion doit cibler le rôle anon.
Could not find the functionLe paramètre du corps doit porter exactement le même nom que l’argument de la fonction, ici phone.
401 Invalid API keyAvec une clé publishable, supprimez l’en-tête Authorization.
Clients introuvablesStockez les numéros de téléphone au format E.164, le même format que celui envoyé par votre réceptionniste.