Facebook Messenger propose la possibilité d’associer le compte FB Messenger avec celui d’une entreprise. Cette fonctionnalité est appelée Account Linking.
L’association de compte est particulièrement intéressante lors de la réalisation d’un chatbot de type RH, par exemple.
Prenons un exemple où l’entreprise Vision souhaite proposer quelques fonctions RH en self-service via Facebook Messenger.
Julien Dupont possède un compte FB Messenger et s’authentifie auprès de FBM avec son compte julien.dupont@orange.fr / Password.
Julien Dupont est également un employé de la société Vision. Son id SSO est : j.dupont@vision.com.
La société Vision crée un chatbot qui répondra à des questions simples sur le domaine RH, et fournira, par exemple, le solde de congés pour ses employés. Il faut que le service de Chatbot soit en mesure de reconnaître que le user julien.dupont qui interagit avec lui est également l’employé j.dupont. C’est ici qu’intervient la notion d’Account Linking. Le SDK de FBM permet de déclencher une phase d’authentification avec le serveur de l’entreprise, puis de récupérer un jeton (autorization_code) que le chatbot présentera ultérieurement au service RH de calcul du solde de congés.
Le diagramme ci-dessous résume la cinématique de l’association de compte:
Voici comment se présentent les différents écrans générés par FBM:
- Le premier panel est affiché à la suite d’une demande d’Account linking déclenchée depuis le code du chatbot. Le message qui commence par ‘Account linking !’ n’est juste qu’un message de debug pour afficher les résultat de l’association de compte.
Le payload est de la forme suivante:
var messageData={ "attachment": { "type": "template", "payload": { "template_type": "generic", "elements": [{ "title": "Bienvenue à Vision RH", "image_url": "http://<image quelconque.jpeg>", "buttons": [{ "type": "account_link", "url": "https://<serveur Vision>/authorize" }] }] } } }
- Le second panel est affiché lorsque le serveur de l’entreprise Vision redirige vers FB avec un authorization_code. Il intervient après la redirection vers le serveur d’authentification de Vision.
- Le troisième panel est affiché lorsque l’utilisateur clique sur le bouton Logout, lui-même déclenché depuis le code du chatbot avec le payload suivant:
messageData={ "attachment": { "type": "template", "payload": { "template_type": "generic", "elements": [{ "title": "Vision RH", "image_url": "http://<image quelconque.jpeg>", "buttons": [{ "type": "account_unlink" }] }] } } }
Dans le code du chatbot, on récupère le PSID (recipient.id) ainsi que le token d’accès (authorization_code) en traitant les messages Webhook de type account_linking. C’est à partir de ce moment que le code du chatbot peut interagir avec un service de Vision en lui fournissant le token d’accès ainsi que le PSID qui représente le couple unique user FB/Page.
Conclusion
On peut utiliser le canal de Facebook Messenger pour interagir de façon authentifié avec un serveur d’enterprise.