Fonctions sans serveur - Clé API

    Fonctions sans serveur - Utilisation d'une clé API

    Clés API de fonctions

    Une fonction sans serveur au sein de votre CRM peut être invoquée à partir de n'importe quelle application tierce ou du CRM, à l'aide d'un webhook. Cependant, à quelques exceptions près, les webhooks ne prennent généralement pas en charge OAuth2. Dans ce cas, vous pouvez exécuter la fonction à l'aide de la méthode d'authentification par clé API, que vous, ainsi que d'autres utilisateurs, pouvez employer pour invoquer la fonction, où que vous soyez.

    La différence entre la clé API et OAuth2 réside dans le mode d'authentification. La clé API doit être authentifiée dans l'URL de la demande, et non comme en-tête.

    Voir aussi :

    Exemple de fonction :

    Scénario :

    Les logiciels d'assistance et de support technique sont indispensables dans une entreprise dont les activités reposent sur une interaction avec les clients. L'intégration de vos logiciels de support technique avec votre CRM vous fera gagner beaucoup de temps et d'efforts en vous permettant de gérer toutes vos informations commerciales depuis un seul et même endroit.

    Zendesk est l'un de ces logiciels. Zoho Desk, développé par Zoho, appartient également à cette catégorie, mais la différence est que l'intégration de Zoho Desk est automatisée dans Zoho CRM, alors que vous devez intégrer Zendesk en utilisant uniquement des widgets. En outre, le transfert des informations sur les tickets d'un service de support technique à un autre n'est pas une mince affaire. L'intégration de Zendesk et Zoho Desk, par l'intermédiaire de fonctions sans serveur dans Zoho CRM, est donc à la fois pratique et utile.

    Le scénario que nous allons maintenant utiliser repose sur une base similaire. Chaque fois qu'un « Ticket » est créé dans « Zendesk », un ticket doit également être créé dans Zoho Desk, avec les mêmes informations.

    Applications requises :

    • Zendesk
    • Zoho Desk

    Partie 1 : Établir une connexion

    Pour que la fonction puisse utiliser des applications tierces et faciliter le transfert de données, vous devez d'abord établir une connexion entre Zoho CRM et le logiciel tiers. Dans ce cas, il s'agit de Zendesk. En savoir plus.

    Créez une connexion à Zoho Desk :

    Partie 2 : Créer la fonction

    Créez une fonction dans Zoho CRM (y compris le code de la connexion).

    Partie 2.1 : Écrire la fonction

    Le code de fonction est :

    +

    string createTicket(string requestBody){
      if(isNull(requestBody))
      {
        return "Pas de contenu";
      }
      if(!requestBody.contains("arguments"))
      {
        return "Format non valide";
      }
      requestBody = requestBody.get("arguments");
      requestBody = requestBody.get("requestBody");
      requestBody = requestBody.get("details");
      deskURL = "https://desk.zoho.com/api/v1/";
      header = {"orgId":"664950682"};
      departmentId = "264631000000006907"; //Obtenir les détails du ticket et de l'utilisateur depuis requestBody
      userDetails = requestBody.get("user");
      ticketDetails = requestBody.get("ticket"); //Créer un mappage
      param = Map(); //Insérer les détails
      param.put("departmentId",departmentId);
      if(!userDetails.contains("email"))
      {
        return "Un e-mail est obligatoire";
      }
      email = userDetails.get("email");
      param.put("email",email);
      contactName = "Guest";
      if(userDetails.contains("full_name"))
      {
        contactName = userDetails.get("full_name");
      }
      else if(userDetails.contains("first_name") && userDetails.contains("last_name"))
      {
        contactName = userDetails.get("first_name") + " " + userDetails.contains("last_name");
      }
      else if(userDetails.contains("first_name"))
      {
        contactName = userDetails.get("first_name");
      }
      else if(userDetails.contains("last_name"))
      {
        contactName = userDetails.get("last_name");
      }
      //Obtenir l'ID de contact à partir du nom de contact
      //Obtenir tous les contacts
      contactList = invokeurl
      [
        url :deskURL + "contacts"
        type :GET
        headers:header
        connection:"zoho_desk9"
      ];
      isExistingCustomer = false;
      contactId = "";
      contactList = contactList.get("data");
      for each contactInfo in contactList
      {
        contactEmail = contactInfo.get("email");
        if(!isNull(contactEmail))
        {
          if(email.equals(contactEmail))
          {
            isExistingCustomer = true;
            contactId = contactInfo.get("contactId");
            break;
          }
        }
      }
      info isExistingCustomer;
      if(!isExistingCustomer)
      {
        //Créer un nouveau contact
        contactParam = Map();
        contactParam.put("firstName",userDetails.get("first_name"));
        contactParam.put("lastName",userDetails.get("last_name"));
        contactParam.put("mobile",userDetails.get("mobile"));
        contactParam.put("email",userDetails.get("email"));
        contactParam.put("accountId","264631000000081178");
        contactList = invokeurl
        [
          url :deskURL + "contacts"
          type :POST
          parameters:contactParam.toString()
          headers:header
          connection:"zoho_desk9"
        ];
        contactId = contactList.get("id");
      }
      param.put("contactId",contactId);
      if(!ticketDetails.contains("title"))
      {
        return "title is mandatory";
      }
      param.put("subject",ticketDetails.get("title"));
      if(!ticketDetails.contains("status"))
      {
        return "status is mandatory";
      }
      param.put("status",ticketDetails.get("status"));
      if(ticketDetails.contains("priority"))
      {
        param.put("priority",ticketDetails.get("priority"));
      }
      if(userDetails.contains("organization"))
      {
        organization = userDetails.get("organization");
        if(organization.contains("name"))
        {
          param.put("accountName",organization.get("name"));
        }
      }
      if(userDetails.contains("mobile"))
      {
        param.put("phone",userDetails.get("mobile"));
      }
      if(userDetails.contains("description"))
      {
        param.put("description",userDetails.get("description"));
      }
      info param;
      response = invokeurl
      [
        url :deskURL + "tickets"
        type :POST
        parameters:param.toString()
        headers:header
        connection:"zoho_desk9"
      ];
      if(response.contains("errorMessage"))
      {
        return "Sorry Something went wrong. error ::: " + response.get("errorMessage");
      }
      //Envoyer une notification à l'équipe de support technique
      sendmail
      [
        from :zoho.adminuserid
        to :"deborah.g@zohocorp.com"
        subject :"no-reply"
        message :"'Bonjour,<expression></expression><div><br></div><div>Un nouveau ticket a été créé dans Zoho DESK via Zendesk.</div><div><br></div><div>Détails du ticket - </div><div><br></div><div>User Name - ' + contactName + '</div><div><br></div><div><br></div><div>Request Body = " + requestBody + "</div><div><br></div>'"
      ]
      return response;
    }

     

    Partie 2.2 : Pour rendre la fonction disponible en tant que clé API :

    1. Cliquez sur l'icône Settings (Paramètres) pour la fonction correspondante qui doit devenir une API.
    2. Cliquez surREST API.
    3. Activez le curseur API Key (Clé API).
    4. Cliquez sur Save (Enregistrer).

    Partie 3 : Créer un webhook dans Zendesk :

    1. Allez à Admin > Extension > HTTP Target (Admin > Extension > Cible HTTP).
    2. Fournissez les informations suivantes :
      • URL de la fonction
      • Méthode - GET ou POST
      • Sélectionnez JSON sous Content-type. Pour en savoir plus, cliquez ici.

    Remarque :

    • La fonction URL est la clé API URL que vous obtenez à partir de l'étape 2.

    Partie 4 : Créer un déclencheur dans Zendesk :

    1. Condition - lorsqu'un ticket est créé.
    2. Notifier la cible - Nom de cible HTTP

    JSON - Corps d'arguments

    {"arguments":
    {
    "requestBody":{

    "details":{
    "ticket":
    {
    "title":"{{ticket.title}}",
    "description":"{{ticket.description}}",
    "source":"{{ticket.via}}",
    "priority":"{{ticket.priority}}",
    "due_date":"{{ticket.due_date}}",
    "URI":"{{ticket.url}}",
    "status":"{{ticket.status}}"
    },
    "assigne":
    {
    "email":"{{ticket.assignee.email}}",
    "name":"{{ticket.assignee.name}}",
    "first_name":"{{ticket.assignee.first_name}}",
    "last_name":"{{ticket.assignee.last_name}}"
    },
    "user":
    {
    "full_name":"{{current_user.name}}",
    "first_name":"{{current_user.first_name}}",
    "language":"{{current_user.language}}",
    "details":"{{current_user.details}}",
    "mobile":"{{current_user.phone}}",
    "email":"{{current_user.email}}",
    "organization":
    {
    "details":"{{current_user.organization.details}}",
    "name":"{{current_user.organization.name}}"
    }}
    }}
    }}

    Partie 5 : Configurer un argument contenant tout le corps de la demande.

    Lorsqu'un webhook envoie des données à une fonction, il n'y a aucun moyen de connaître le nombre d'arguments qu'elle contient. Pour résoudre ce problème, vous pouvez faire en sorte que la fonction contienne tout le corps de la demande dans un seul argument.

    Appelez l'API Desk depuis la fonction et enregistrez la fonction.

    Le résultat :

    Création d'un ticket dans Zendesk :

    Le ticket est créé dans Zoho Desk

    Share this post : FacebookTwitter

    Vous ne trouvez toujours pas ce que vous cherchez?

    Écrivez-nous: support@zohocrm.com

     
     

    Thanks for the recommendations. We will incorporate them at the earliest.

    Commentaires sur la traduction

    Nous aimerions connaître votre avis sur la traduction de la page.

    Nom*

    E-mail *

    Objet*

    Description de l'erreur

    Page URL

    Captures d'écran Joindre des fichiers   Chacun de vos fichiers ne doit pas dépasser 20 Mo.Vous pouvez joindre un maximum de 5 fichiers à la fois.

    Commentaire