Employee Advocacy : déléguez la publication de news AWS sur Twitter avec Slack

Employee Advocacy : déléguez la publication de news AWS sur Twitter avec Slack

La réception des nouveautés AWS nous permettant déjà de nous informer quotidiennement des dernières annonces, nous avions besoin d’une solution de diffusion, ouverte à tous et à toutes, vers le compte Twitter de Corexpert. Pour cela, nous avons développé une application, nommée « NewsBot », basée sur plusieurs services AWS, et proposant de tweeter une actualité par l’intermédiaire de Slack.

 

1 – Architecture

L’application se compose de deux micro-services, le Notifier (Amazon Lambda) et le Publisher (Amazon API Gateway + Amazon Lambda), ainsi que d’une base de données (Amazon DynamoDB).

newsbot

2 – Base de données

Les informations reçues depuis le topic Amazon SNS sont stockées dans une table Amazon DynamoDB. En outre, un champ supplémentaire, que nous avons appelé « actions », contient la liste des réseaux sociaux pour lesquels l’article a déjà été publié.

Afin de restreindre la publication sur Twitter de certaines news en fonction de leur date de publication, nous avons également ajouté un champ TTL, indiquant à Amazon DynamoDB à partir de quelle date il est nécessaire de supprimer l’item de cette table.

dynamodb

 

3 – Le Notifier

Il est composé d’une unique fonction Amazon Lambda, déclenchée par le service Amazon SNS ; cette fonction va parser l’évènement reçu, pour ensuite l’insérer dans la table Amazon DynamoDB et envoyer un message dans un channel Slack.

Commençons par créer une application Slack ; pour notre Notifier, il est nécessaire d’activer les Incoming Webhooks, et d’en ajouter un à notre channel de notifications.

incoming-webhooks

Slack nous donne alors une URL, sur laquelle nous pouvons envoyer nos requêtes POST, contenant la nouvelle notification au format JSON.
Voici un exemple de notification générée par le NewsBot :

aws-newsbot-slack-1

 

4 – Le Publisher

 

a. Publication sur Twitter

Le Publisher est composé des services Amazon API Gateway et Amazon Lambda, permettant de publier un article sur Twitter.
Le fonctionnement du service est le suivant :

  • Une requête HTTP POST est envoyée depuis Slack à notre fonction Amazon Lambda.
  • On vérifie que le token reçu dans le body de la requête est le même que celui de notre application Slack. Ce token est renseigné dans l’onglet “Basic Information”.
  • On vérifie dans la table Amazon DynamoDB que l’article n’a pas déjà été publié sur Twitter.
  • On envoie une requête à Twitter pour créer l’article.
  • La table Amazon DynamoDB est mise à jour pour que la requête ne soit pas traitée deux fois.

Afin de :

  • rendre le bouton utilisable, il est nécessaire d’activer les Interactive Components, et ainsi indiquer à Slack l’URL à appeler (celle fournie par Amazon API Gateway) ;
  • publier sur Twitter, il faut d’abord créer une application, et générer les Consumer Keys et Access Token.

 

b. Modification du message original

Le corps de la requête POST envoyée par Slack est encodé, et contient un objet JSON  nous permettant de récupérer l’utilisateur ou l’utilisatrice ayant cliqué sur le bouton.

Cette information va donc nous servir à remplacer le bouton par un texte, informant toutes les personnes présentes sur le channel que l’article a déjà été publié sur Twitter, à quelle date, et par qui.

Bonus : à la publication de l’article, Twitter nous retourne l’identifiant du tweet qu’il vient de créer ; nous allons donc pouvoir utiliser les WebIntents et ainsi proposer à chacun et chacune de retweeter l’information sur son propre compte.

aws-newsbot-slack-2

 

5 – Conclusion

Le NewsBot va donc permettre de déléguer l’activité du compte Twitter d’une entreprise aux personnes présentes sur un channel Slack, d’une manière simple et rapide, depuis un (ou plusieurs) topic(s) Amazon SNS.

Comments

comments

Les commentaires sont clos.