Créer et compiler une function
Créer une function dans OmniLab Studio, écrire son gestionnaire, enregistrer un brouillon et le compiler en version WebAssembly exécutable.
Créez une function, écrivez son gestionnaire TypeScript et compilez-la pour qu'elle puisse être invoquée. À la fin de cet article, la function est en statut Ready mais encore déclenchée par rien — le câblage est traité sur la page de son type, événement de plateforme ou hook.
Avant de commencer
- Votre rôle utilisateur doit être Admin. Les contributeurs ne voient pas la surface Functions.
- Vous devez travailler dans l'organisation globale. L'onglet Functions n'apparaît que là — si vous basculez vers une autre organisation, il disparaît.
- 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 avant qu'un appel sortant ne fonctionne.
L'interface Functions est uniquement en anglais
Contrairement au reste d'OmniLab Studio, les écrans Functions ne sont pas traduits. Les libellés restent en anglais quelle que soit la langue de votre interface. Ils sont donc cités en anglais dans cet article.
Étapes
Ouvrir l'onglet Functions
Dans la barre latérale, basculez sur l'organisation globale, puis ouvrez Paramètres Généraux. Sur la page Paramètres de l'Entreprise, sélectionnez l'onglet Functions.

Créer la function
Sélectionnez New function et renseignez le formulaire :
| Champ | À renseigner |
|---|---|
| Display name | Un libellé identifiable par votre équipe, par exemple Loyalty award processor. L'identifiant est généré pour vous. |
| Kind | Platform event ou Hook. Ce choix est définitif. |
| Hook point | Uniquement pour le type Hook. Choisissez la décision de plateforme à laquelle votre function participe. |
| Source (TypeScript) | Votre gestionnaire. Choisir un type insère un point de départ fonctionnel. |
Choisir un type ou un point d'ancrage remplace le contenu de l'éditeur par un gestionnaire de départ correspondant — mais seulement jusqu'à ce que vous modifiiez le code vous-même. Dès que vous avez saisi quelque chose, changer de type laisse votre code intact.
Sélectionnez Create. OmniLab vérifie les types de la source et enregistre la function en Draft.

Écrire votre gestionnaire et enregistrer le brouillon
Ouvrez la function et utilisez l'onglet Source. Votre fichier doit exporter le nom correspondant à son type, sinon la compilation échoue sur une erreur de typage.
Le gestionnaire de départ inséré par le formulaire de création exporte déjà le bon nom et compile tel quel : vous pouvez donc le compiler sans le modifier pour valider votre installation avant d'écrire votre propre logique.
Des exemples fonctionnels pour chaque type, du hello world à quelque chose d'utile, figurent sur la page du type concerné :
L'éditeur affiche un compteur de taille en temps réel par rapport au plafond de 1 Mo de source, et l'en-tête du champ confirme que le point d'entrée est user.ts.
Sélectionnez Save source. Le bouton Save source reste grisé tant que vous n'avez rien modifié : une function tout juste ouverte n'a donc rien à enregistrer. Cette action stocke votre code et en vérifie les types. Elle ne déploie rien : une function déjà en ligne continue de servir sa version actuelle jusqu'à la compilation.
Si la vérification échoue, un panneau Lint failed remplace le message de succès et liste chaque problème avec son fichier, sa ligne et sa colonne. Sélectionnez une ligne pour y accéder dans l'éditeur. Rien n'est enregistré tant que la vérification échoue : corrigez, puis enregistrez à nouveau.

Compiler
Ouvrez l'onglet Build et sélectionnez Build. Le statut passe à Building et l'éditeur s'actualise de lui-même toutes les quelques secondes jusqu'à la fin, sans que vous ayez à recharger la page.
Une compilation prend normalement de quelques secondes à une minute. En cas de succès, le statut devient Ready, le numéro de version augmente, et les champs WASM sha et WASM size sont renseignés. En cas d'échec, l'onglet affiche l'erreur et un journal de compilation tronqué.
Recompiler une source que vous n'avez pas modifiée depuis la dernière compilation réussie revient presque immédiatement, puisqu'il n'y a rien de nouveau à compiler.

Vérifier qu'elle s'exécute
Ouvrez l'onglet Test, sélectionnez Load example pour insérer un payload d'exemple correspondant au type, puis sélectionnez Run test. Une exécution réussie de type événement affiche le code de sortie 0 ; une exécution de type hook affiche la décision prise.
Les tests utilisent l'environnement isolé réel et les vrais appels SDK : une requête HTTP autorisée part réellement, et une écriture de champ de contact est réellement appliquée. Ils apparaissent aussi dans le journal d'exécution, marqués comme tests.

Si quelque chose bloque
L'onglet Functions n'apparaît pas. Soit vous n'êtes pas Admin, soit vous n'êtes pas dans l'organisation globale. Changez d'organisation avec le sélecteur en haut de la barre latérale.
L'enregistrement signale une erreur de typage inattendue. La cause la plus fréquente est le nom de l'export. Une function hook pour contact.create.pre doit exporter exactement onContactCreatePre ; une function d'événement doit exporter onPlatformEvent. Le nom découle du type et du point d'ancrage, et un écart est signalé comme un export manquant ou mal formé.
La compilation échoue sur une erreur que vous ne situez pas dans votre code. Cela signifie généralement que votre gestionnaire ne correspond pas au type déclaré — un paramètre incorrect, une valeur de retour incorrecte, ou le mauvais type de gestionnaire importé. Comparez votre gestionnaire à l'exemple de la page de son type.
Le statut reste Building longtemps. Une compilation bloquée est libérée au bout d'une quinzaine de minutes, et vous pouvez alors en relancer une. Si cela se reproduit, contactez le support avec l'identifiant de compilation de l'onglet Build.
Votre gestionnaire ne joint pas 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 Ready mais rien ne se passe. Une function compilée n'est déclenchée par rien tant que vous n'avez pas ajouté un abonnement ou une association à un point d'ancrage.
Pour aller plus loin
À 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 dans lesquelles votre code travaille.
Functions d'événement de plateforme
Écrire une function qui s'exécute de façon asynchrone après un événement OmniLab, et l'abonner aux types d'événements concernés.