• Accueil / Marketing Cloud / Créer des cas…
, Créer des cas dans Salesforce en utilisant CloudPages et AMPScript<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Créer des cas dans Salesforce en utilisant CloudPages et AMPScript10 minutes de lecture


Le service client est un élément important de toute entreprise et Salesforce Service Cloud crée un hub agréable pour les représentants de service pour organiser et répondre aux cas. Les cas peuvent être créés de plusieurs façons, notamment manuellement, par e-mail vers le cas et Web vers le cas. Web-to-case permet aux administrateurs de générer du HTML qu’ils peuvent publier sur leur site Web afin que les utilisateurs finaux puissent remplir un formulaire et créer automatiquement leurs propres cas. Web-to-case est idéal pour les demandes de service client de base, mais il a ses limites. Par exemple, vous ne pouvez générer du HTML que pour les champs qui existent sur l’objet Case, vous ne pouvez pas insérer de texte enrichi dans le champ de description et vous ne pouvez pas télécharger de documents. En plus des champs étant limités à ceux de l’objet Case, vous ne pouvez pas non plus remplir dynamiquement un champ de liste déroulante s’il change. Le code HTML généré est représentatif de ce qui existe au moment de sa génération.

Cependant, si vous avez Marketing Cloud, vous pouvez créer un joli formulaire qui résout tous ces problèmes. Vous pouvez ensuite iframe ce formulaire sur votre site Web. Oui, il doit être iframé, plutôt que collé en HTML comme le formulaire Web-to-case, car AMPScript doit s’exécuter sur une CloudPage à la fois pour traiter et tirer parti de Marketing Cloud Connect.

Cette solution suppose que vous avez Salesforce et avez configuré Marketing Cloud Connect. Avec Marketing Cloud Connect, un ensemble de fonctions AMPScript vous permet de communiquer directement avec vos Salesforce org. Ceux sur lesquels nous nous concentrerons pour cette solution sont: CreateSalesforceObject, RetrieveSalesforceObjects et UpdateSingleSalesforceObject.

CreateSalesforceObject crée un enregistrement sur n’importe quel Salesforce objet; RetrieveSalesforceObjects récupère les champs spécifiés de n’importe quel Salesforce objet; et UpdateSingleSalesforceObject met à jour un enregistrement spécifié sur n’importe quel Salesforce objet. Vous pouvez accéder et modifier des objets standard et personnalisés.

Avec Marketing Cloud Connect, il existe également un flux de Salesforce les données retournent dans Marketing Cloud sous la forme d’extensions de données synchronisées, qui sont généralement actualisées toutes les 15 minutes. Cela nous permettra d’utiliser les différentes fonctions de recherche dans AMPScript pour accélérer certains processus.

Voici un exemple de formulaire de service client créé à l’aide de Bootstrap CSS:

, Créer des cas dans Salesforce en utilisant CloudPages et AMPScript<span class="wtr-time-wrap after-title"><span class="wtr-time-number">10</span> minutes de lecture</span>

Voici ce qui se passe après l’envoi du formulaire:

En utilisant l’adresse e-mail comme champ de recherche, recherchez un contact dans Salesforce. Si le contact existe, mettez à jour les champs liés à l’enregistrement du contact (prénom et nom dans ce cas) et renvoyez l’ID du contact. Cela peut être effectué de deux manières: une recherche vers l’extension de données synchronisée Contact dans Marketing Cloud, ou une récupération à partir de l’objet Contact dans Salesforce. Il y a des avantages et des inconvénients pour chacun:

Arguments pour les recherches d’extensions de données:

  1. La recherche d’une extension de données est plus rapide que la récupération depuis Salesforce. Accélérer la soumission de votre formulaire est bon pour l’expérience utilisateur.
  2. C’est une erreur très rare à rencontrer, mais si quelqu’un soumet une adresse e-mail avec une apostrophe (oui, c’est une chose), RetrieveSalesforceObjects se bloquera. Cela est dû au fait que RetrieveSalesforceObjects analyse la variable d’adresse e-mail avec des guillemets simples et l’apostrophe provoque la rupture de l’e-mail à l’apostrophe. Il s’agit d’un problème connu et la solution dans cette situation consiste à utiliser une recherche vers une extension de données qui, pour une raison quelconque, ne rencontre pas le même problème.
  3. L’utilisation de LookupOrderedRows vous permet de trier par CreatedDate afin que vous puissiez accéder à l’enregistrement créé le plus récemment au cas où vous craignez des doublons. RetrieveSalesforceObjects n’a pas de fonction de tri.

Argument pour RetrieveSalesforceObjects:

  1. Précision en temps réel. Si quelqu’un devait soumettre une demande de service client qui a abouti à la création d’un nouveau prospect ou contact, puis qu’il devait le soumettre à nouveau quelques minutes plus tard avant la mise à jour des extensions de données synchronisées, le formulaire tentera de créer un prospect en double ou Contact. En tirant directement de Salesforce, vous êtes certain de toujours disposer des informations les plus précises et à jour.

Avec les avantages et les inconvénients à l’esprit, voici les deux options pour récupérer le ContactId si l’e-mail correspond à un contact existant:

SET @retrieveContact = LookupRows('Contact_Salesforce','Email',@email)
SET @retrieveContact = RetrieveSalesforceObjects('Contact','Id','Email','=',@email)
  • Quelle que soit l’option choisie, vous devrez isoler les champs souhaités de la ligne en variables. Dans ce cas, nous allons simplement accepter la première ligne renvoyée comme résultat et la seule variable que nous saisissons est l’identifiant. Dans de nombreux cas, une seule ligne va être renvoyée. Cependant, s’il y a des doublons, plus d’une ligne sera retournée. La meilleure solution consiste à dédupliquer votre Salesforce org ou utilisez LookupOrderedRows avec CreatedDate décroissant.
if RowCount(@retrieveContact) >= 1 then
   SET @contactRow = Row(@retrieveContact, 1)
   SET @contactId = Field(@contactRow, "Id") 
endif

En utilisant le Salesforce Identifiant que vous venez d’obtenir, vous pouvez mettre à jour le contact avec tous les champs pertinents (dans ce cas uniquement le prénom et le nom) et créer un nouveau cas attaché à ce contact:

UpdateSingleSalesforceObject(
          'Contact',@contactId,
          'FirstName',@firstName,
          'LastName',@lastName
          )

SET @caseId = CreateSalesforceObject(
          'Case',10,
          'ContactId',@contactId,
          'Subject',@subject,
          'Description',@description,
          'Product__c',@productID,
          'Point_of_purchase__c',@point,
          'Order_Number__c',@order,
          'Lot_A__c',@lot,
          'Best_by_Date_A__c',@formatBestByDate,
          'OwnerId',@ownerId,
          'Origin',"Web"
          )

Vous pouvez spécifier un propriétaire de cas dans votre code ou vous fier aux règles d’affectation dans Salesforce pour le faire pour vous.

Si ton Salesforce org utilise Leads, vous devrez répéter le processus LookupRows ou RetrieveSalesforceObjects pour l’objet Lead. Si aucun contact et aucun prospect ne correspondent à l’adresse e-mail, vous allez créer un nouveau prospect. Ceci est très similaire à ce que fait Web-to-case, sauf que si Web-to-case trouve plus d’une correspondance, il ne connectera le cas à aucun contact ou prospect et vous obligera à le faire manuellement.

SET @leadId = CreateSalesforceObject(
          'Lead',4,
          'FirstName',@firstName,
          'LastName',@lastName,
          'Email',@email,
          'Company',"Company Placeholder"
          )

Une fois le prospect créé, le Salesforce L’ID du nouveau prospect est renvoyé et vous pouvez ensuite suivre les étapes précédentes pour attacher un nouveau dossier à ce nouveau prospect.

C’est tout ce que vous devez faire pour créer un nouveau boîtier dans Salesforce. Cependant, tout ce que nous avons couvert jusqu’à présent peut être accompli avec un formulaire web-to-case, alors voici les choses supplémentaires que vous pouvez faire qui font de ce processus une amélioration par rapport au web-to-case:

  1. Remplissez un menu déroulant dynamiquement avec AMPScript. Dans ce cas, nous allons remplir le champ déroulant Produit avec les produits actifs actuels dans Salesforce. L’objet Product dans Salesforce n’est pas lié à l’objet Case. Cependant, il existe un champ de produit personnalisé sur l’objet Case dans cette organisation et nous voulons permettre à l’utilisateur final de sélectionner le produit pour lequel il nous contacte sans avoir à taper manuellement le produit. Cela garantit également la cohérence des données aux fins de la communication des tendances des services pour chaque produit particulier.

    Nous allons utiliser une combinaison d’AMPScript et de HTML pour organiser un menu déroulant avec une recherche de l’extension de données synchronisées du produit. Dans ce cas, je suis d’accord avec les données qui ne sont mises à jour que toutes les 15 minutes. Cependant, si vous avez besoin de plus d’informations en temps réel pour un menu déroulant (peut-être que l’inventaire est important), vous pouvez également utiliser RetrieveSalesforceObjects ici.

    Le code ci-dessous utilise Bootstrap CSS pour structurer le champ du formulaire. Il utilise également Bootstrap Select pour rendre le menu de sélection consultable.

    Le code entre les indicateurs AMPScript – %%[ …. ]%% – exécute deux boucles. La boucle extérieure saisit la famille de produits et la boucle intérieure saisit les produits au sein de chaque famille. La boucle commence par «Autre» pour les produits orphelins (qui doivent être nettoyés en Salesforce), puis suit chaque famille de produits. Cliquez ici pour voir cela en action.

  1. Créez un enregistrement de message électronique sur le dossier afin que l’agent du service client puisse simplement appuyer sur «répondre» à un message dans le flux d’activité du dossier, plutôt que de créer un nouveau message électronique pour le client.

    Lorsque nous avons créé le boîtier en Salesforce, nous avons rempli le champ de description de la requête avec la section commentaire du formulaire. Cependant, une fonctionnalité très intéressante de l’e-mail à la requête est que les agents du service client peuvent simplement appuyer sur « répondre » dans la section d’activité de la requête et le corps de l’e-mail entrant est rempli dans l’e-mail comme lorsque vous répondez à un e-mail dans votre boîte de réception. Nous pouvons réellement usurper ce comportement en utilisant AMPScript et la fonction CreateSalesforceObject. Pour des raisons inconnues, vous devez renseigner à la fois l’adresse de destination et l’adresse e-mail avec l’adresse e-mail soumise.

SET @emailId = CreateSalesforceObject(
        'EmailMessage',6,
        'fromAddress',@email,
        'FromName',@fromName,
        'ToAddress',@email,
        'HtmlBody',@HtmlBody,
        'ParentId',@caseId,
        'Subject',@subject
        )

CreateSalesforceObject(
        'EmailMessageRelation',3,
        'EmailMessageId',@emailId,
        'RelationId',@contactId,
        'RelationType',"FromAddress"
        )
  1. Créez un contenu riche dans le corps HTML EmailMessage. Web-to-case ne permet pas les zones de texte enrichi, donc toute mise en forme dans un champ de zone de texte sera perdue dans le formulaire standard Web-to-case. Ce n’est en fait pas un problème lors du remplissage du champ de description dans le dossier à partir d’un formulaire HTML comme nous l’avons fait ci-dessus, où vous capturez des commentaires dans un champ de type zone de texte. Le formatage tient naturellement. Cependant, cela devient un problème lorsque vous essayez d’insérer le contenu de la zone de texte dans le champ HtmlBody de l’enregistrement EmailMessage.

    Cela peut être résolu en remplaçant les sauts de ligne par des sauts de ligne HTML. Vous remarquerez dans le code ci-dessus qu’il existe une variable appelée @HtmlBody. Voici comment remplir cette variable avec une chaîne qui s’affichera correctement formatée dans l’enregistrement EmailMessage:

SET @HtmlBody = replace(replace(@description ,char(13),""), char(10),"
")
  1. Autoriser les utilisateurs à télécharger un fichier. Il s’agit d’une grande lacune dans la fonctionnalité Web-to-case. Il existe deux façons d’aborder une solution pour cela:
    1. Voici un super blog qui vous guide tout au long du téléchargement d’un fichier vers Marketing Cloud.
    2. Voici les instructions sur la façon d’envoyer à la place le fichier via l’API à Salesforce. Si vous exécutez ce code après avoir créé le cas, vous disposez de l’ID d’enregistrement auquel associer le document.
  1. Créez des pièges à spam pour vos formulaires à l’aide d’AMPScript. Je développerai ce point dans un prochain article de blog.



Source de l’article traduit automatiquement en Français