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 en direct , nous avons pensé qu'il serait opportun de créer 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 des fonctionnalités personnalisées. Nous l'avons fait via PagerDuty Transformateur d'événements personnalisé –une fonctionnalité très intéressante que nous avons lancée il y a quelques semaines et qui vous permet de convertir une charge utile envoyée par n'importe quel outil capable d'envoyer une requête HTTP en une charge utile comprise par PagerDuty. En d'autres termes, vous pouvez intégrer pratiquement n'importe quoi avec PagerDuty.

Cette intégration Spark – PagerDuty n'est qu'un exemple 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 toutes les manières souhaitées par le client.

Comme de nombreux outils, Cisco Spark fonctionne parfaitement avec PagerDuty et vous pouvez envoyer des incidents PagerDuty dans vos salles 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 transformateur d'événements personnalisé, 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 se met en place. Pour essayer vous-même, créez un transformateur d'événements personnalisé avec le code suivant :

 function transform(PD) { var webhook = PD.inputRequest.body var message = webhook.text || 'Erreur : pas 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 des discussions 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 l'emplacement

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 l'avais souhaité !

image-5

 

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

 

Pour résumer, notre intégration Spark – PagerDuty a été facilement configurée comme un webhook sortant en quelques clics, et elle a respecté 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 proxy tous mes webhooks, car cela me permet de les voir, de les modifier et de les renvoyer. Ainsi, pendant le développement, je vais pointer 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 le vôtre pour intégrer quoi que ce soit à PagerDuty. Et à tous ceux qui sont présents à Cisco Live, profitez du reste de votre temps à la conférence et assurez-vous de nous retrouver à Stand #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.