Créer et compiler une function
Créez une function dans Studio, écrivez son gestionnaire, enregistrez un brouillon et compilez-la en version WebAssembly exécutable.
Au terme de ce guide, la function a le statut Prêt, mais rien ne la déclenche encore. Pour la relier, suivez la page de son type : événement de plateforme ou hook.
Avant de commencer
- Votre rôle utilisateur doit être Admin. Les utilisateurs Contributor ne voient pas les écrans des functions.
- Vous devez travailler dans l'organisation Global. L'onglet Fonctions n'apparaît que là.
- Choisissez d'abord le type de la function. Il est définitif.
- Si votre gestionnaire appelle une API externe, préparez les noms d'hôtes. Vous devrez les autoriser pour que les appels sortants aboutissent.
Ouvrir l'onglet Fonctions
-
Dans le sélecteur d'organisation en haut de la barre latérale, choisissez Global.

-
Dans la barre latérale, sélectionnez Paramètres Généraux.

La page Paramètres de l'Entreprise s'ouvre.
-
Sélectionnez l'onglet Fonctions.

Créer la function
Dans l'onglet Fonctions :
-
Sélectionnez Nouvelle fonction.

-
Dans le champ Nom à afficher, saisissez un nom, par exemple
Loyalty award processor. L'identifiant est généré automatiquement.
-
Sous Type, choisissez Événement de la plateforme ou Hook. Ce choix est définitif.

-
(Hook uniquement) Sous Point d'accroche, choisissez le point d'accroche, ici contact.verify — Vérification du contact.

Le champ Point d'accroche est prérempli avec contact.create.pre — Création de contact (pré). Ce choix est lui aussi définitif : la function ne pourra être liée qu'à ce point d'accroche.
-
Sélectionnez Créer.

Tant que vous n'avez pas modifié le code vous-même, chaque type ou point d'accroche choisi insère un gestionnaire de départ fonctionnel dans le champ Source (TypeScript). OmniLab vérifie les types de la source et enregistre la function au statut Brouillon.
Écrire le gestionnaire et enregistrer le brouillon
-
Sur la ligne de la function, sélectionnez Modifier.

-
Dans l'onglet Source, écrivez votre gestionnaire.

-
Sélectionnez Enregistrer la source.

Votre fichier doit exporter le nom qui correspond à son type, sinon la sauvegarde échoue avec une erreur de typage. Le gestionnaire de départ exporte déjà le bon nom et se compile tel quel : vous pouvez le compiler sans le modifier pour vérifier la configuration.
Le gestionnaire de départ de contact.verify lit le secret brevo.api_key, en minuscules. Les clés de secrets sont sensibles à la casse : modifiez-la pour qu'elle corresponde à la clé que vous créez dans votre lot de secrets, par exemple brevo.API_KEY.
Des exemples fonctionnels pour chaque type, du hello world jusqu'à des cas plus complets, figurent dans les pages Functions d'événement de plateforme et Functions de type hook.
- L'éditeur affiche en temps réel la taille de la source, plafonnée à 1 Mo. Le point d'entrée est
user.ts. - Le bouton Enregistrer la source reste grisé tant que vous n'avez rien modifié.
- La sauvegarde stocke votre code et en vérifie les types, sans rien déployer : une function en ligne continue d'exécuter sa version actuelle jusqu'à la prochaine compilation.
- Si la vérification des types échoue, un panneau Échec du lint liste chaque problème avec son fichier, son numéro de ligne et sa colonne. Sélectionnez un problème pour accéder à l'endroit du code concerné. Rien n'est enregistré tant que la vérification échoue.
Compiler la function
Dans l'éditeur de la function :
-
Sélectionnez l'onglet Construire.

-
Sélectionnez Construire.

Le statut passe à Build en cours, puis à Prêt, en général en moins d'une minute : le numéro de version augmente, et les champs SHA du WASM et Taille du WASM se remplissent. Si la compilation échoue, l'onglet affiche l'erreur et un journal de compilation tronqué. Recompiler une source inchangée aboutit presque aussitôt.
Vérifier qu'elle s'exécute
Avant de la relier, lancez une invocation de test depuis l'onglet Tester de la function.
En cas de blocage
- L'onglet Fonctions n'apparaît pas : soit vous n'êtes pas Admin, soit vous n'êtes pas dans l'organisation Global. Changez d'organisation avec le sélecteur en haut de la barre latérale.
- La sauvegarde signale une erreur de typage que vous ne comprenez pas : la cause la plus fréquente est le nom de l'export. Une function de type hook pour
contact.create.predoit exporter exactementonContactCreatePre; une function d'événement de plateforme doit exporteronPlatformEvent. Le nom découle du type et du point d'accroche, et un écart est signalé comme un export manquant ou mal formé. Un gestionnaire qui ne correspond pas à son type déclaré échoue de la même façon : mauvais paramètre, mauvaise valeur de retour, ou import d'un type de gestionnaire qui ne correspond pas au type de la function. Comparez votre gestionnaire à l'exemple de la page de son type. - Le statut reste longtemps à Build en cours : une compilation bloquée est libérée au bout d'environ quinze minutes, et vous pouvez alors en lancer une autre. Si cela se reproduit, contactez le support avec l'ID du build affiché dans l'onglet Construire.
- Votre gestionnaire n'arrive pas à joindre une API externe : une function sans hôte autorisé voit toutes ses requêtes sortantes refusées. Voir Configurer l'exécution et les secrets.
- La function est au statut Prêt mais rien ne se passe : rien ne déclenche une function compilée tant que vous n'avez pas ajouté un abonnement ou une liaison de hook.
Étapes suivantes
À propos des functions
Ce que sont les functions OmniLab, comment elles s'exécutent, quand en préférer une à un webhook, et les limites que votre code doit respecter.
Functions d'événement de plateforme
Écrivez une function qui s'exécute de façon asynchrone après un événement dans OmniLab, et abonnez-la aux types d'événements auxquels elle doit réagir.