Heroku - 19 Messages Outbound Introduction
Bienvenue dans cette présentation de la seconde méthode d'intégration entre Salesforce et Heroku : les messages sortants (Outbound Messages). Cette solution diffère des autres car elle n'a quasiment aucune limitation en termes de volume de données sortantes et n'engendre aucun coût additionnel. Elle peut donc être adaptée à de nombreux cas.
Qu'est-ce qu'un message sortant ?
Un message sortant est un message que Salesforce envoie à une application externe (par exemple une application Heroku) suite à une mise à jour observée dans une table. Modifier la valeur d'un champ déclenche l'envoi du message vers l'application externe.
- Un objet Salesforce (la table à surveiller)
- Une règle (workflow rule) qui filtre les changements qui déclenchent l'envoi
- Une application externe capable de recevoir et traiter le message
- Format des messages : XML (plus ancien que JSON)
- Réponse : ACK (succès) ou NACK (échec, retry 24h)
Prenons un exemple : une application gérant les collaborateurs d'une entreprise via la table Accounts de Salesforce. Imaginons un compte avec les champs Nom « Entreprise X », Type « Collaborateur », Téléphone. Avec une règle qui filtre uniquement les Type « Collaborateur », tout changement de téléphone sur ce compte déclenchera l'envoi du message. À l'inverse, sur un compte « Entreprise Y » de type « Client », un changement de téléphone ne déclenchera pas de message car la règle ne sera pas validée.
Côté réception, les messages sortants sont envoyés au format XML, un format légèrement dépassé aujourd'hui remplacé par JSON, mais que Salesforce conserve. Traiter ces messages peut être contraignant car la plupart des langages modernes n'ont pas de méthode native pour parser efficacement du XML : il faudra utiliser un parser dédié. Une fois le message traité, vous devez répondre à Salesforce avec un ACK (Acknowledge, accusé de réception en cas de succès) ou un NACK (Not Acknowledge, en cas d'échec). Sur un NACK ou une absence de réponse, Salesforce continue à retransmettre le message pendant 24 heures avant d'abandonner.
Parlons des limitations. La principale est l'unidirectionnalité : seul Salesforce peut envoyer vers Heroku, pas l'inverse. Cette méthode n'est donc pas adaptée si vous avez besoin d'interaction bidirectionnelle. Autre limitation : la suppression d'une donnée dans Salesforce ne provoque pas de message sortant — il n'est pas possible de configurer un Outbound Message pour signaler une suppression. En conclusion, les Outbound Messages sont l'option avec le moins de limitations en termes de volume de données et de coût, mais leur nature unidirectionnelle fait qu'ils ne sont pas toujours la première option à considérer. À bientôt pour la prochaine vidéo.