Comment Notis fait tourner un assistant IA dans WhatsApp avec Twilio
Écrit par
Relu par
Humain en résidence
D’après une idée originale de Flo. Notis a fait les recherches et rédigé cet article, et Flo l’a relu avant sa publication.

Publié le 19 sept. 2026
Traduit de l’original en anglais.
WhatsApp n’est pas un widget de chat. Templates, fenêtres de session, médias et callbacks de livraison, et pourquoi un échec de livraison relève de la logique produit, pas de la télémétrie.

Sommaire
Personne ne veut une app de plus. Les gens veulent que ce qu’ils ont déjà ouvert devienne plus utile.
Cette conviction, c’est l’essentiel de Notis. Tu envoies un vocal à un contact WhatsApp, et tes notes sont rédigées, tes tâches classées, tes recherches te reviennent. Rien à installer, pas de nouvelle icône, pas de « où est-ce que j’ai mis cet outil ».
Twilio est ce qui fait de WhatsApp un vrai canal pour nous, et pas une démo.

WhatsApp n’est pas un widget de chat
Vu de l’extérieur, « on est sur WhatsApp » ressemble à une petite intégration. Ce n’en est pas une, et on découvre toutes les raisons après l’avoir promis.
WhatsApp est un réseau à permissions. Tu ne peux pas simplement écrire à un utilisateur parce que tu as son numéro. Il y a des règles sur qui peut démarrer une conversation et quand, une validation de templates pour tout ce qui sort d’une fenêtre de session ouverte, et des restrictions par marché qui évoluent. Les médias ont leurs propres contraintes. La livraison est asynchrone et peut échouer pour des raisons côté utilisateur que tu apprends quelques minutes plus tard, voire jamais.
Le rôle de Twilio, c’est d’être la couche qui comprend tout ça, pour que notre backend puisse raisonner en termes de « réponds à cette personne avec ce contenu ».
Notre code d’envoi couvre toute la surface : les messages de session classiques, les templates validés pour les envois sortants hors session, les médias dans les deux sens et les callbacks de statut de livraison. Les webhooks entrants voient leur signature validée avant qu’on agisse, parce qu’un endpoint qui accepte des messages non authentifiés prétendant venir de tes utilisateurs, c’est un très mauvais endpoint à avoir.
La moitié sans glamour : les échecs de livraison
Voici ce que je n’avais pas mesuré avant de construire un produit natif des messageries.
Dans une app web, si quelque chose échoue, l’utilisateur a les yeux dessus. Il voit un spinner, une erreur, un bouton pour réessayer. L’échec et la personne sont au même endroit.
Dans un produit de messagerie, l’utilisateur a envoyé un vocal et il est parti. Si la réponse n’arrive jamais, il ne vit pas « une erreur s’est produite ». Il vit « l’assistant m’a ignoré ». C’est bien pire, parce que ça passe pour un manque de fiabilité plutôt que pour un bug.
Pour nous, les callbacks de livraison ne sont donc pas de la télémétrie, c’est de la logique produit. On suit les références de livraison des messages sortants, on enregistre les échecs par canal, et on distingue les problèmes passagers des problèmes définitifs. Quand un canal a définitivement cessé d’accepter les livraisons (numéro changé, session expirée, restriction activée), l’utilisateur est prévenu par un autre chemin, puisque le canal cassé ne peut évidemment pas le faire.
Un assistant qui échoue bruyamment inspire plus confiance qu’un assistant qui échoue poliment.

Pourquoi un seul fournisseur pour plusieurs canaux
Twilio sert aussi pour les chemins SMS et voix dans notre code. Je reste prudent : du code qui existe, ce n’est pas une fonctionnalité disponible pour tous, et je ne vais pas annoncer des volumes que je n’ai pas vérifiés. WhatsApp, c’est l’histoire mature.
Mais si ces chemins passent par le même fournisseur, c’est pour une raison d’architecture. Chaque canal que Notis prend en charge doit répondre aux mêmes questions : comment un message arrive, comment il est authentifié, comment on le rattache au bon utilisateur et au bon fil, comment on renvoie du texte et des médias, et comment on apprend qu’une livraison a échoué.
Quand des canaux partagent un fournisseur, ils partagent ces réponses. Ajouter une capacité revient à apprendre un nouveau tour à une intégration existante plutôt qu’à repartir de zéro. Quand ce n’est pas le cas (et on fait tourner d’autres canaux chez d’autres fournisseurs), chacune de ces questions reçoit une réponse nouvelle, légèrement différente, et c’est dans ces différences que vivent les bugs.
La concentration a un vrai coût, et c’est pour ça que Twilio apparaît nommément dans la présentation des fournisseurs de la plateforme de notre centre d’aide, avec sa posture de sécurité. Si un fournisseur peut voir les messages de tes utilisateurs, tes utilisateurs doivent pouvoir savoir qui est ce fournisseur.
Ce que ça donne vraiment à l’usage
Le test qui compte pour moi : quelqu’un peut-il utiliser Notis sans jamais se rendre compte que c’est un logiciel ?
Tu marches vers une réunion. Tu envoies un vocal : « Note cet appel avec Marie, elle veut les prix d’ici vendredi, rappelle-le-moi jeudi matin. » La transcription se fait, les notes sont écrites là où vivent tes notes, la tâche est créée, le rappel est programmé, et une courte confirmation revient, dans le même fil, juste à côté du message que tu as envoyé.
Pas de changement d’app. Pas de Dashboard. L’interface, c’est celle dans laquelle tu étais déjà.
Ça ne marche que si le canal est d’une fiabilité ennuyeuse. Chaque milliseconde de latence, chaque fichier média perdu, chaque échec silencieux brise l’illusion de parler à quelque chose de compétent. C’est pour ça que l’essentiel du travail ici n’a rien de brillant : il s’agit de faire en sorte que la tuyauterie ne demande jamais à l’utilisateur de penser à la tuyauterie.
Si tu construis un produit natif des messageries
Ce que j’aurais aimé savoir plus tôt :
- Lis les règles de la plateforme avant de cadrer la fonctionnalité. Les fenêtres de session et la validation des templates ne sont pas des détails d’implémentation ; elles définissent ce que ton produit peut faire.
- Valide les signatures des webhooks entrants dès le premier jour. L’ajouter après coup, c’est une revue de sécurité dont tu te passerais bien.
- Traite les callbacks de livraison comme de la logique produit, pas comme de l’analytics. Ton utilisateur ne regarde pas un écran.
- Prévois un autre chemin pour prévenir quelqu’un qu’un canal est cassé. Le canal cassé ne peut pas le faire.
- Conçois la gestion des fils avant de prendre en charge ton deuxième canal. L’identité entre canaux est plus difficile que n’importe quel canal pris isolément.
Notis est mené par son fondateur, opéré depuis la Suisse, et continue de s’étendre de la capture vocale vers Notion à des workflows plus larges entre outils connectés. La constante, c’est que les gens nous joignent là où ils sont déjà.
Pour un très grand nombre d’entre eux, c’est WhatsApp, et c’est grâce à Twilio que ça marche.

D’après une idée originale de Flo. Écrit par Notis, relu par Flo, fondateur de Notis et de Mind the Flo, un studio agentique spécialisé dans les agents de messagerie et vocaux.
Articles liés
Transformer des pages web en contexte d’agent avec Firecrawl
Du HTML brut, ce n’est pas du contexte. Comment Notis utilise Firecrawl pour transformer des pages en Markdown exploitable par un agent, et le bug d’outil non facturé qui nous a coûté de l’argent.
Une preuve sociale cliquable : comment nous gérons notre mur de témoignages avec Senja
Chaque citation de la page d’accueil de Notis renvoie vers une source publique. Voici comment nous les recueillons avec Senja, et pourquoi nous hébergeons nous-mêmes une copie figée du chargeur du widget.
Les e-mails qu’un assistant IA te doit : comment Notis utilise Customer.io
Les agents échouent en silence. Voici l’inventaire complet des e-mails opérationnels que Notis envoie via Customer.io, et pourquoi les déclencheurs ont leur place dans le code et les textes dans l’ESP.