Programmation de fonctions personnalisées

Deluge (acronyme de Data Enriched Language for the Universal Grid Environment) est un langage de script en ligne intégré à Zoho Creator. Il vous permet d'ajouter différents types de logique métier à la fonction personnalisée et de la rendre plus puissante. Toute la couche de base de données est abstraite et vous mapperez uniquement les arguments sur des champs, tout en créant le script en langage Deluge. Voir aussi Deluge Script - Guide de référence

Audience ciblée

  • Utilisateurs de CRM possédant les autorisations Manage Workflow (Gérer le workflow)
  • Programmeurs maîtrisant l'écriture de scripts Deluge

Disponibilité

Autorisation de profil requise : les utilisateurs ayant l'autorisation Manage Workflow (Gérer le workflow) dans leur profil peuvent accéder à cette fonctionnalité.

Programmer les fonctions personnalisées

La programmation d'une fonction personnalisée à l'aide des scripts Deluge comprend les trois étapes suivantes :

  • Programmer une fonction personnalisée.
  • Associer la fonction personnalisée à une règle de workflow.
  • Tester l'intégration de la fonction personnalisée.

Pour programmer une fonction personnalisée

  1. Allez à Setup > Automation > Actions > Custom Function (Configuration > Automatisation et actions > Fonction personnalisée).
  2. Sur la page Workflow Custom Functions (Fonctions personnalisées de workflow), cliquez sur Configure Custom Function (Configurer la fonction personnalisée).
  3. Sur la page Configure Custom Function (Configurer une fonction personnalisée), cliquez sur le lien Write your own function (Définissez votre propre fonction).
    Write your Custom Function
  4. Sur la page Customized functions(Fonctions personnalisées), procédez comme suit :
    • Précisez le nom et la description de la fonction.
    • Choisissez le module à associer à la fonction et cliquez sur le lien Edit Arguments (Modifier les arguments).
      Custom Function
    • Mappez maintenant l'argument sur le nom du champ ou la valeur personnalisée dans le module CRM.
      Custom Function
    • Cliquez sur Done (Terminé).
  5. Définissez votre fonction dans l'éditeur Deluge Script. Cliquez sur Save & Execute Script (Enregistrer et exécuter le script) pour valider votre code.
    Write your Deluge Script
    S'il n'y a pas d'erreur, votre script est prêt à être associé à la règle de workflow.
  6. Cliquez sur Save (Enregistrer).

Pour associer une fonction personnalisée à une règle de workflow

  1. Allez à Setup > Automation > Workflow Rules (Configuration > Automatisation > Règles de workflow).
  2. Sur la page Workflow Rules (Règles de workflow), cliquez sur Create Rule (Créer la règle).
  3. Dans l'onglet Create New Rule (Créer une règle), spécifiez les paramètres de la règle de workflow.
  4. Sélectionnez Custom Function (Fonction personnalisée), sous Instant Actions (Actions instantanées).
  5. Sélectionnez maintenant la fonction personnalisée à déclencher.
  6. Cliquez sur Save (Enregistrer).

Pour tester l'intégration de fonctions personnalisées

  1. Ajoutez des données de test dans CRM en fonction de vos critères de règle de workflow.
  2. Dans votre application, utilisez la fonction personnalisée pour vérifier les données reçues de Zoho CRM.
  3. En cas d'erreur ou de non-concordance des données, modifiez votre code de fonction personnalisé dans Zoho CRM.
  4. Continuez ce test jusqu'à ce que vous obteniez de Zoho CRM les données requises pour votre application.

Remarques importantes :

  • Vous pouvez associer jusqu'à 6 fonctions personnalisées (1 action instantanée et 5 actions basées sur le temps) par règle de workflow.
  • Vous pouvez utiliser une fonction personnalisée afin de transférer des données pour un maximum de 10 champs CRM de Zoho CRM vers des applications tierces.
  • Vous pouvez utiliser une fonction personnalisée afin de récupérer des données d'autres applications vers Zoho CRM.
  • Vous devez mettre régulièrement à jour le ticket API, conformément aux limites des applications tierces.
  • Vous ne recevrez pas de notification par e-mail si l'intégration de la fonction personnalisée a cessé de fonctionner en raison d'un problème dans une API tierce.
  • Si le processus échoue, la fonction personnalisée envoie une première notification et le système Zoho CRM envoie une seconde notification après 15 minutes. Par la suite, le système n'envoie aucune notification pour ce déclencheur de workflow particulier.
  • Si vous dépassez le nombre maximum par jour, le système n'envoie pas les notifications de fonctions personnalisées restantes aux applications tierces et avertira l'administrateur de cette défaillance. 
  • Zoho CRM envoie aux applications tierces les données au format standard suivant pour les champs Date et Date Time (Date et heure) :
    • Date : aaaa-MM-jj
    • Date Time (Date et heure) : aaaa-MM-jj hh:mm

Comprendre le générateur de script Deluge

Le générateur de script Deluge vous aide à programmer les fonctions personnalisées dans l'interface utilisateur par glisser-déposer, et à exécuter la fonction dans CRM. Il vous permet de convertir la logique complexe de l'application en un simple code Deluge, sans que vous ayez à mémoriser la syntaxe et les fonctions des scripts Deluge. Il contient les éléments suivants :

  • Code de script Deluge
  • Tâches Deluge
    • Conditions
    • Divers
    • Débogage
    • Manipulation de la liste
    • Manipulation de mappage
    • Données Web
    • Manipulation XML
  • Exécution de code

Write your Custom Function

Liste des tâches Deluge

Exemple

Scénario métier : transférer le champ de montant vers le compte parent lorsque le statut du client potentiel passe à « gagné et clôturé »

Récapitulatif

Transférez le montant de chaque client potentiel (statut gagné et clôturé) dans le champ (personnalisé) Total Revenue (Total des recettes) du compte associé. Si le client achète 10 fois, vous pouvez visualiser le total des recettes à partir de la page Account (Compte), au lieu de générer un rapport associant Clients potentiels et Comptes. En fonction des recettes générées par le client, vous pouvez par la suite classer les clients par type A, B ou C.

Étapes de programmation

void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField) 

  • void est le type de retour qui ne retournera rien
  • workflowspace est l'espace de noms dans le créateur, à l'instar d'un dossier pour regrouper les fonctions
  • Rollup_the_Potential_Amount_to_Accounts est le nom de la fonction
  • AccountId est un paramètre contenant l'ID du compte dans CRM
  • SumUpField est un autre paramètre qui contient le libellé du champ Account dans lequel le montant de la somme est mis à jour lors du déclenchement de la règle de workflow.

{    accountID1 = (input.AccountId).toString();

  • Ici, nous sommes en train de convertir l'ID de compte en chaîne    

resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);

  • Intégrée dans Deluge Script, cette méthode permet d'obtenir les enregistrements par la recherche des valeurs de champs.
  • Ici, nous avons spécifié la recherche du type d'enregistrement Potential rgw associant l'ID de compte à la valeur transmise sous forme de paramètre.    

total = 0.0;

  • Initialisation d'une variable locale pour calculer la somme des montants.

for each rec in resp

  • Itération de tous les clients potentiels retournés par l'appel de méthode ci-dessus.

{       

stage = (rec.get("Stage")).toLowerCase();

  • Extraction de la valeur du champ Stage (Étape) pour chaque client potentiel.

if (stage.contains("won"))

  • La vérification de la valeur d'étape contient le statut « gagné » pour chaque client potentiel. Si c'est vrai, il passe à la ligne suivante, sinon il passe au client potentiel suivant.

{           

total = (total  +  (rec.get("Amount")).toDecimal());

  • Passons maintenant à l'ajout de la valeur du champ amount (montant) à la variable locale       

}    }   

updateResp = zoho.crm.updateRecord(("Accounts"), accountID1, { input.SumUpField : total });

}

  • Cette méthode met à jour l'enregistrement dans CRM. Nous avons mentionné le type d'enregistrement Account, correspondant à l'ID de compte de champ dont la valeur est transmise avec la variable locale, qui contient actuellement la valeur de la somme.

Programme complet

void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField)
{
accountID1 = (input.AccountId).toString();
resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);
info resp;
total = 0.0;
for each rec in resp
{
stage = (rec.get("Stage")).toLowerCase();
if (stage.contains("won"))
{
total = (total + (rec.get("Amount")).toDecimal());
}
}
updateResp = zoho.crm.updateRecord(("Accounts"), accountID1, { input.SumUpField : total });
}

Scénario métier 2 : transférer le champ de montant vers le compte parent lorsque le statut du client potentiel passe à « gagné et clôturé »

Récapitulatif

Transférez le montant de chaque client potentiel (statut gagné et clôturé) dans le champ (personnalisé) Total Revenue (Total des recettes) du compte associé. Si le client achète 10 fois, vous pouvez visualiser le total des recettes à partir de la page Account (Compte), au lieu de générer un rapport associant Clients potentiels et Comptes. En fonction des recettes générées par le client, vous pouvez par la suite classer les clients par type A, B ou C.

Étapes de programmation

void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField) 

  • void est le type de retour qui ne retournera rien
  • workflowspace est l'espace de noms dans le créateur, à l'instar d'un dossier pour regrouper les fonctions
  • Rollup_the_Potential_Amount_to_Accounts est le nom de la fonction
  • AccountId est un paramètre contenant l'ID du compte dans CRM
  • SumUpField est un autre paramètre qui contient le libellé du champ Account dans lequel le montant de la somme est mis à jour lors du déclenchement de la règle de workflow.

{    accountID1 = (input.AccountId).toString();

  • Ici, nous sommes en train de convertir l'ID de compte en chaîne    

resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);

  • Intégrée dans Deluge Script, cette méthode permet d'obtenir les enregistrements par la recherche des valeurs de champs.
  • Ici, nous avons spécifié la recherche du type d'enregistrement Potential rgw associant l'ID de compte à la valeur transmise sous forme de paramètre.    

total = 0.0;

  • Initialisation d'une variable locale pour calculer la somme des montants.

for each rec in resp

  • Itération de tous les clients potentiels retournés par l'appel de méthode ci-dessus.

{       

stage = (rec.get("Stage")).toLowerCase();

  • Extraction de la valeur du champ Stage (Étape) pour chaque client potentiel.

if (stage.contains("won"))

  • La vérification de la valeur d'étape contient le statut « gagné » pour chaque client potentiel. Si c'est vrai, il passe à la ligne suivante, sinon il passe au client potentiel suivant.

{           

total = (total  +  (rec.get("Amount")).toDecimal());

  • Passons maintenant à l'ajout de la valeur du champ amount (montant) à la variable locale       

void workflowspace.Mass_update_of_Child_Contacts(int accId) { accountId = input.accId.toString();
rec = zoho.crm.getRecordById(("Accounts"), input.accId);
resp = zoho.crm.getRelatedRecords("Contacts", ("Accounts"), accountId);
for each ele in resp { mp = map();
mp.put("Mailing Street", rec.get("Billing Street"));
mp.put("Mailing City", rec.get("Billing City"));
mp.put("Mailing State", rec.get("Billing State"));
mp.put("Mailing Zip", rec.get("Billing Code"));
mp.put("Mailing Country", rec.get("Billing Country"));
mp.put("Other Street", rec.get("Shipping Street"));
mp.put("Other City", rec.get("Shipping City"));
mp.put("Other State", rec.get("Shipping State"));
mp.put("Other Zip", rec.get("Shipping Code"));
mp.put("Other Country", rec.get("Shipping Country"));
contactId = ele.get("CONTACTID"); updateResp = zoho.crm.updateRecord("Contacts", contactId, mp);
}

Suivez ces étapes pour configurer la fonction personnalisée :

  1. Connectez-vous à Zoho CRM.
  2. Allez à Setup > Automation > Workflow Rules (Configuration > Automatisation > Règles de workflow).
  3. Sélectionnez Deals (Transactions) dans la liste déroulante Module. Entrez le nom et la description de la règle de workflow.

    Custom Function
  4. Choisissez quand vous voulez exécuter cette règle. Sélectionnez l'option Create or Edit (Créer ou Modifier) pour l'exécution sur la base d'une action d'enregistrement.

    Custom Function
  5. Cliquez sur Done (Terminé).
  6. Sélectionnez les enregistrements pour lesquels vous souhaitez exécuter la règle. Sélectionnez l'option Records Matching the condition (Enregistrements correspondant aux conditions) et définissez les critères comme « Stage contains closed won » (L'étape contient un statut gagné clôturé).

    Custom Function
  7. Cliquez sur Done (Terminé).
  8. Choisissez maintenant Custom Function (Fonction personnalisée) sous Instant action (Action instantanée)

    Custom Function
  9. Dans la fenêtre contextuelle Configure Custom Function (Configurer une fonction personnalisée), cliquez sur le lien Customized Functions (Fonctions personnalisées).

  10. Sur la page Customized Functions (Fonctions personnalisées), cliquez sur Configure (Configurer) pour la fonction Roll-up Potential Amount to Account.

  11. Sélectionnez le module Potential.
  12. Préciser les valeurs des arguments comme indiqué ci-dessous :
    • AccountId : choisissez la colonne « AccountId » dans la liste des champs.
    • SumUpField : spécifiez le champ défini pour la somme dans le module Accounts.
    • Cliquez sur le lien « Specify custom value » (Spécifier une valeur personnalisée) et tapez votre nom de champ.

  13. Enregistrez la configuration. Cette fonction mettra désormais à jour automatiquement la somme des recettes générées par tous les clients potentiels d'un compte dans le module Accounts.