Der Blog

Erstellen einer Chat-Integration für Cisco Spark in Minuten

von David Hayes 12. Juli 2016 | 4 Minuten Lesezeit

Rechtzeitig zum zweiten Tag der Cisco-Live dachten wir, es wäre an der Zeit, eine Integration für Cisco Spark und PagerDuty. Also haben wir es getan – und es hat nur ein paar Minuten gedauert, Und Wir konnten problemlos benutzerdefinierte Regeln und Funktionen einbetten. Dies haben wir über den PagerDuty getan Benutzerdefinierter Ereignistransformator – eine sehr coole Funktion, die wir vor einigen Wochen eingeführt haben und mit der Sie eine von jedem Tool gesendete Nutzlast, das eine HTTP-Anfrage senden kann, in eine von PagerDuty verstandene Nutzlast umwandeln können. Mit anderen Worten: Sie können praktisch alles mit PagerDuty integrieren.

Diese Spark- PagerDuty Integration ist nur ein Beweis unter vielen weiteren ähnlichen Beispielen, die noch folgen werden: Wir können problemlos jedes ChatOps-Tool (oder andere Tools) integrieren, um jeden Workflow zu optimieren und die Funktionalität nach Wunsch des Kunden zu erweitern.

Wie viele andere Tools funktioniert Cisco Spark sofort mit PagerDuty und Sie können PagerDuty Vorfälle in Ihre Spark-Chatrooms senden. Heute werden wir eine Integration erstellen, die das Gegenteil ermöglicht – Sie können PagerDuty Vorfälle direkt aus Spark heraus auslösen.

Ich werde ein paar Dinge anders machen als unsere anderen Muttersprachler. Locker->PD & Hipchat->PD-Integrationen, um zu zeigen, dass Sie mit dem Custom Event Transformer Integrationen sehr einfach strukturieren können, um benutzerdefinierte Funktionen zu ermöglichen, und dass die Möglichkeiten endlos sind.

Meine neue Cisco Spark – PagerDuty -Integration wird die folgenden Funktionen haben:

  • Diese Integration verfügt über einen eigenen Raum. Alle Hilfeanfragen in diesem Raum lösen PD aus (anstatt nach Schrägstrichbefehlen zu filtern).
  • Alle Chat-Nachrichten in diesem Raum werden in denselben PD-Vorfall zusammengefasst (indem der Raum als Vorfallschlüssel verwendet wird).
  • Dieser Vorfall kann manuell von PD oder durch „Danke“ geschlossen werden.

Es gibt ein paar Dinge, die spezifisch für Cisco Spark-Webhooks sind und die ich konvertieren werde:

  • Alle URLs sind base64-kodiert
  • Da ich den Webclient verwende, ändere ich die URLs von „ciscospark://us/ROOM/“ in „https://web.ciscospark.com/#/rooms/“.

Mal sehen, wie das alles zusammenpasst. Um dies selbst auszuprobieren, erstellen Sie einen benutzerdefinierten Ereignistransformator mit dem folgender Code :

 function transform(PD) { var webhook = PD.inputRequest.body var message = webhook.text || 'Fehler: Keine Spark-Chat-Nachricht'; var room_link = ciscospark2web(b64decode(webhook.roomId)); // Link bereinigen var normalized_event = { incident_key: room_link, //Damit alle Nachrichten aus einem Raum als Duplikate in denselben Vorfall umgewandelt werden event_type: PD.Trigger, description: message, details: { email: webhook.personEmail }, client: 'Cisco Spark', client_url: room_link }; // Wenn die Nachricht 'danke' ist => Vorfall automatisch schließen if (message.toLowerCase() == 'danke') { normalized_event.event_type = PD.Resolve; } // PD-Ereignis erstellen PD.emitEvents([normalized_event]) } // Hilfsfunktionen: function b64decode(b) { return new Buffer(b || '', 'base64').toString('utf8'); } function ciscospark2web(url) { // von: ciscospark://us/ROOM/31ce2d70-3f09-11e6-946f-11a974144a8d // nach: https://web.ciscospark.com/#/rooms/31ce2d70-3f09-11e6-946f-11a974144a8d return url.replace('ciscospark://us/ROOM/', 'https://web.ciscospark.com/#/rooms/') // TODO: Links zu 1-1-Chats und direkt zu Nachrichten } 

Klicken Sie auf „Speichern“ und Ihre Integration sieht folgendermaßen aus:
image-1

Anschließen an Cisco Spark

Sobald Sie Ihren Custom Event Transformer in PagerDuty erstellt haben, richten Sie einen Cisco Spark „Outbound webhook“ auf den

image-2

image-3

 

Wie sieht es in Aktion aus?

Hier sind einige Chat-Nachrichten in Spark:

image-4

Und in PagerDuty: Beachten Sie, dass die zweite Nachricht an das Protokoll angehängt wird, genau wie ich es wollte!

image-5

 

Und wenn der Anforderer „Danke“ sagt, wird es in PagerDuty automatisch geschlossen.

 

Zusammenfassend lässt sich sagen, dass unsere Spark- PagerDuty Integration mit wenigen Klicks problemlos als ausgehender Webhook konfiguriert werden konnte und alle benutzerdefinierten Regeln und Funktionen befolgte, die ich in meinem Code definiert hatte.

Tipps zum Schreiben Ihres eigenen benutzerdefinierten Ereignistransformators

Und das Beste daran ist, dass Sie dies auch tun können, und zwar für jeden Anwendungsfall.

Normalerweise verwende ich Runscope API-Verkehrsinspektor um alle meine Webhooks zu proxyen, weil ich sie dann sehen, ändern und erneut senden kann. Während der Entwicklung werde ich also Tools auf https://events-pagerduty-com-aaaabbbbcccc.runscope.net/integration/aaaabbbbcccc111222333/enqueue Sie können eines der Spark-Ereignisse sehen, die ich getestet habe.

Lerne mehr über Benutzerdefinierter Ereignistransformator und beginnen Sie mit der Erstellung Ihres eigenen PagerDuty-Kontos, um alles in PagerDuty zu integrieren. Und allen Teilnehmern von Cisco Live wünschen wir viel Spaß auf der Konferenz und besuchen Sie uns unter Stand Nr. 1611 für eine Live-Demo, und für diejenigen von Ihnen in der Bay Area am 13. September, kommen Sie unbedingt vorbei und besuchen Sie uns in unserem eigenen PagerDuty Gipfel , wo Führungskräfte von Google, Linkedin, IBM und Yahoo ihre wichtigsten Erkenntnisse zum Aufbau einer modernen Betriebsumgebung weitergeben.