Ekinox
Blocks

Fonction

Le bloc Fonction vous permet d'exécuter du code JavaScript ou TypeScript personnalisé dans vos flux de travail. Utilisez-le pour transformer des données, effectuer des calculs ou implémenter une logique personnalisée qui n'est pas disponible dans d'autres blocs.

Bloc Fonction avec Éditeur de Code

Aperçu

Le bloc Fonction vous permet de :

Transformer des données : convertir des formats, analyser du texte, manipuler des tableaux et des objets

Effectuer des calculs : opérations mathématiques, statistiques, calculs financiers

Implémenter une logique personnalisée : conditions complexes, boucles et algorithmes

Traiter des données externes : analyser des réponses, formater des requêtes, gérer l'authentification

Comment ça fonctionne

Le bloc Fonction exécute votre code dans un environnement sécurisé et isolé :

  1. Recevoir des entrées : accédez aux données des blocs précédents via l'objet input
  2. Exécuter le code : lancez votre code JavaScript/Python
  3. Renvoyer les résultats : utilisez return pour transmettre des données au bloc suivant
  4. Gérer les erreurs : gestion des erreurs et journalisation intégrées

Exécution à distance (E2B)

  • Langages : exécutez JavaScript et Python dans un environnement sandbox E2B isolé.
  • Comment l'activer : activez “Exécution de code à distance” dans le bloc Fonction.
  • Quand l'utiliser : logique plus lourde, bibliothèques externes ou code spécifique à Python.
  • Performance : plus lent que le JS local en raison du démarrage du sandbox et des délais réseau.
  • Remarques : nécessite E2B_API_KEY si exécuté localement. Pour une latence minimale, utilisez le JS natif local (Mode rapide).

Entrées et sorties

  • Code : votre code JavaScript/Python à exécuter

  • Délai d'expiration : temps d'exécution maximum (30 secondes par défaut)

  • Données d'entrée : toutes les sorties des blocs connectés disponibles via des variables

  • function.result : la valeur renvoyée par votre fonction

  • function.stdout : sortie console.log() de votre code

Exemples de cas d'utilisation

Pipeline de traitement de données

Scénario : transformer une réponse d'API en données structurées

  1. Le bloc API récupère les données brutes des clients
  2. Le bloc de fonction traite et valide les données
  3. Le bloc de fonction calcule les métriques dérivées
  4. Le bloc de réponse renvoie les résultats formatés

Implémentation de la logique métier

Scénario : calculer les scores et niveaux de fidélité

  1. L'agent récupère l'historique d'achat du client
  2. Le bloc de fonction calcule les métriques de fidélité
  3. Le bloc de fonction détermine le niveau du client
  4. Le bloc de condition oriente en fonction du niveau

Validation et assainissement des données

Scénario : valider et nettoyer les entrées utilisateur

  1. Entrée utilisateur reçue depuis un formulaire
  2. Le bloc de fonction valide le format d'e-mail et les numéros de téléphone
  3. Le bloc de fonction assainit et normalise les données
  4. Le bloc API enregistre les données validées dans la base de données

Exemple : calculateur de score de fidélité

loyalty-calculator.js
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;

// Calculate metrics
const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
const ticketRatio = supportTickets.resolved / supportTickets.total;

// Calculate loyalty score (0-100)
const spendScore = Math.min(totalSpent / 1000 * 30, 30);
const frequencyScore = Math.min(purchaseFrequency * 20, 40);
const supportScore = ticketRatio * 30;

const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);

return {
  customer: <agent.name>,
  loyaltyScore,
  loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
  metrics: { spendScore, frequencyScore, supportScore }
};

Bonnes pratiques

  • Gardez les fonctions ciblées : écrivez des fonctions qui font bien une seule chose pour améliorer la maintenabilité et le débogage
  • Gérez les erreurs avec élégance : utilisez des blocs try/catch pour gérer les erreurs potentielles et fournir des messages d'erreur significatifs
  • Testez les cas limites : assurez-vous que votre code gère correctement les entrées inhabituelles, les valeurs nulles et les conditions aux limites
  • Optimisez pour la performance : soyez attentif à la complexité computationnelle et à l'utilisation de la mémoire pour les grands ensembles de données
  • Utilisez console.log() pour le débogage : exploitez la sortie stdout pour déboguer et surveiller l'exécution des fonctions
Fonction