Sim

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