La valeur business de Chatter augmente considérablement lorsque l’on intègre des processus métier dans le flux du réseau social d’entreprise.

Chatter étant intégré à la plateforme Salesforce1, il est possible d’utiliser l’APEX pour alimenter le flux et poster des messages dans les groupes.

L’objectif ici est d’informer automatiquement les membres d’un groupe Chatter lorsqu’une opportunité est signée.

Dans notre exemple ci-dessous, nous avons créé un groupe appelé « Commerciaux » afin que les utilisateurs puissent échanger dans un espace dédié et sécurisé à propos de leurs opportunités. Cependant, ils souhaitent pouvoir voir les affaires clôturées de leurs collaborateurs sans devoir aller suivre manuellement toutes les opportunités.

chatter apex : illustration chatter

Voici un exemple de réalisation avec ce trigger APEX correspondant à notre exemple :

trigger OpportunityWonChatter on Opportunity (after update) {

    //Création d'une liste de FeedItem
    List<FeedItem> posts = new List<FeedItem>();
    List<Opportunity> oppWon = [SELECT Id,Name,Amount,Account.Name,IsWon FROM Opportunity WHERE Id IN :Trigger.newMap.keySet() and IsWon = true];

    //Récupération de l'ID du group destiné aux informations.
    CollaborationGroup chatterGroup = [SELECT Id FROM CollaborationGroup WHERE Name = 'Commerciaux' LIMIT 1];

    for (Opportunity opp : oppWon) {
        //Récupération de l'opportunité avant la mise à jour
        Opportunity oldOpp = Trigger.oldMap.get(opp.Id);

        //Vérification que l'opportunité soit passé à un statut gagné
        if(opp.IsWon == true && oldOpp.IsWon == false){
            String status = 'L\'opportunité ' + opp.Name +' rattachée à la société ' + opp.Account.Name + ' a été cloturée. Le montant de l\'opportunité s\'élève à ' + opp.Amount + ' euros (€) .';
 
         FeedItem post = new FeedItem(Title = opp.Name,Body = status,ParentId = chatterGroup.Id);
             posts.add(post);
         }
    }

    if(posts.isempty()!= true){insert posts;}

}

 

Allez plus loin avec ce code : 

a/ Currency :

Si vous utilisez l’option de multi-devises, vous pouvez récupérer dynamiquement la devise d’une opportunité avec le champ currencyisocode.
Exemple :  ‘ euros (€) .’    ——–>     opp.CurrencyIsoCode

b/ Changement du groupe Chatter :

Si vous souhaitez changer le groupe, seule la condition de la requête du CollaborationGroup est à changer.
Exemple :   Name = ‘Commerciaux‘       ——–>     Name = ‘Mongroupe

c/ Gestion des membres du groupe :

Si vous souhaitez vérifier l’appartenance des utilisateurs à un groupe choisi vous devrez utiliser la table CollaborationGroupMember .
Vous aurez besoin des deux champs suivants :

-L’Id du groupe Chatter (CollaborationGroupId)
-L’Id de l’utilisateur (MemberId)