Blog

Créer une intégration de chat pour Cisco Spark en quelques minutes

par David Hayes 12 juillet 2016 | 4 minutes de lecture

À temps pour le deuxième jour de Cisco Live , nous avons pensé qu'il serait opportun de construire une intégration pour Cisco Spark et PagerDuty. C'est ce que nous avons fait, et cela n'a pris que quelques minutes. et Nous avons pu facilement intégrer des règles et fonctionnalités personnalisées grâce à PagerDuty . Transformateur d'événements personnalisé – une fonctionnalité très intéressante lancée il y a quelques semaines qui permet de convertir une charge utile envoyée par n'importe quel outil capable d'envoyer des requêtes HTTP en une charge utile comprise par PagerDuty. Autrement dit, vous pouvez intégrer pratiquement tout avec PagerDuty.

Cette intégration Spark – PagerDuty n’est qu’une preuve parmi de nombreux autres exemples similaires à venir, que nous pouvons facilement intégrer n’importe quel outil ChatOps (ou autre) pour optimiser n’importe quel flux de travail et étendre les fonctionnalités de la manière dont un client peut le souhaiter.

Comme de nombreux outils, Cisco Spark fonctionne parfaitement avec PagerDuty dès sa sortie d'usine, et vous pouvez envoyer des incidents PagerDuty dans vos salons de discussion Spark. Aujourd'hui, nous allons créer une intégration qui permet l'inverse : elle vous permettra de déclencher des incidents PagerDuty depuis Spark.

Je vais faire quelques choses différemment de nos autres natifs Slack->PD & Intégrations Hipchat->PD pour montrer le fait qu'avec le Custom Event Transformer, vous pouvez très facilement structurer les intégrations pour activer des fonctionnalités personnalisées, et les possibilités sont infinies.

Ma nouvelle intégration Cisco Spark – PagerDuty aura les fonctionnalités suivantes :

  • Cette intégration disposera d'une salle dédiée, toute demande d'aide dans cette salle déclenchera PD (au lieu de filtrer les commandes slash)
  • Tous les messages de discussion dans cette salle seront regroupés dans le même incident PD (en utilisant la salle comme incident_key)
  • Cet incident peut être fermé manuellement depuis PD ou en disant « merci ».

Il y a quelques éléments spécifiques aux webhooks Cisco Spark que je vais convertir :

  • Toutes les URL sont codées en base64
  • Comme j'utilise le client Web, je vais changer les URL de « ciscospark://us/ROOM/ » à « https://web.ciscospark.com/#/rooms/ »

Voyons comment tout cela fonctionne. Pour essayer vous-même, créez un transformateur d'événements personnalisé avec l' code suivant :

 function transform(PD) { var webhook = PD.inputRequest.body var message = webhook.text || 'Erreur : il ne s'agit pas d'un message de discussion Spark'; var room_link = ciscospark2web(b64decode(webhook.roomId)); // nettoyer le lien var normalized_event = { incident_key: room_link, // afin que tous les messages d'une salle soient dédoublonnés dans le même incident event_type: PD.Trigger, description: message, details: { email: webhook.personEmail }, client: 'Cisco Spark', client_url: room_link }; // Si le message est 'merci' => fermer automatiquement l'incident if (message.toLowerCase() == 'merci') { normalized_event.event_type = PD.Resolve; } // Créer l'événement PD PD.emitEvents([normalized_event]) } // Fonctions d'assistance : function b64decode(b) { return new Buffer(b || '', 'base64').toString('utf8'); } function ciscospark2web(url) { // de : ciscospark://us/ROOM/31ce2d70-3f09-11e6-946f-11a974144a8d // vers : https://web.ciscospark.com/#/rooms/31ce2d70-3f09-11e6-946f-11a974144a8d return url.replace('ciscospark://us/ROOM/', 'https://web.ciscospark.com/#/rooms/') // À FAIRE : Liens vers les conversations individuelles et accès direct aux messages } 

Cliquez sur Enregistrer et votre intégration ressemblera à ceci :
image-1

Branchez-le sur Cisco Spark

Une fois que vous avez créé votre transformateur d'événements personnalisé dans PagerDuty, pointez un « webhook sortant » Cisco Spark vers le

image-2

image-3

 

À quoi cela ressemble-t-il en action ?

Voici quelques messages de discussion dans Spark :

image-4

Et dans PagerDuty: Notez que le deuxième message est ajouté au journal, comme je le souhaitais !

image-5

 

Et si le demandeur dit « Merci », le processus se fermera automatiquement dans PagerDuty.

 

Pour résumer, notre intégration Spark – PagerDuty a été facilement configurée en tant que webhook sortant en quelques clics, et elle a adhéré à toutes les règles et fonctionnalités personnalisées que j’ai définies dans mon code.

Conseils pour écrire votre propre transformateur d'événements personnalisé

Encore une fois, la meilleure partie de tout cela est que vous pouvez également le faire, et pour n’importe quel cas d’utilisation.

J'utilise généralement Inspecteur de trafic de l'API Runscope pour gérer tous mes webhooks par proxy, car cela me permet de les voir, de les modifier et de les renvoyer. Ainsi, pendant le développement, je dirigerai les outils vers https://events-pagerduty-com-aaaabbbbcccc.runscope.net/integration/aaaabbbbcccc111222333/enqueue Vous pouvez voir l’un des événements Spark que j’ai testé.

En savoir plus sur Transformateur d'événements personnalisé et commencez à créer votre propre solution pour intégrer tout ce que vous voulez à PagerDuty. À tous les participants de Cisco Live, profitez bien de la conférence et ne manquez pas de nous retrouver à Stand n°1611 pour une démonstration en direct, et pour ceux d'entre vous dans la région de la baie le 13 septembre, assurez-vous de vous arrêter et de nous rendre visite dans notre propre Sommet PagerDuty , où les dirigeants de Google, Linkedin, IBM et Yahoo partageront leurs principaux enseignements pour créer un environnement opérationnel moderne.