- PagerDuty /
- Blog /
- Nicht kategorisiert /
- Erstellung einer Chat-Integration für Cisco Spark in wenigen Minuten
Blog
Erstellung einer Chat-Integration für Cisco Spark in wenigen Minuten
Rechtzeitig zum zweiten Tag Cisco Live Wir dachten, es wäre an der Zeit, eine Integration zu entwickeln für Cisco Spark und PagerDuty. Also haben wir es getan – und es hat nur wenige Minuten gedauert. Und Wir konnten problemlos benutzerdefinierte Regeln und Funktionen einbetten. Dies haben wir über PagerDuty realisiert. Benutzerdefinierter Ereignistransformator – Eine wirklich coole Funktion, die wir vor einigen Wochen eingeführt haben und mit der Sie die von jedem Tool, das HTTP-Anfragen senden kann, gesendete Nutzlast in ein von PagerDuty verstandenes Format konvertieren können. Anders ausgedrückt: Sie können praktisch alles in PagerDuty integrieren.
Diese Spark – PagerDuty Integration ist nur ein Beispiel von vielen ähnlichen Beispielen, die noch folgen werden, dass wir problemlos mit jedem ChatOps-Tool (oder einem anderen Tool) integrieren können, um jeden Workflow zu optimieren und die Funktionalität nach Kundenwunsch zu erweitern.
Wie viele andere Tools funktioniert Cisco Spark standardmäßig hervorragend mit PagerDuty , und Sie können PagerDuty Vorfälle in Ihre Spark-Chaträume senden. Heute entwickeln wir eine Integration, die das Gegenteil ermöglicht – Sie können damit PagerDuty Vorfälle direkt aus Spark heraus auslösen.
Ich werde ein paar Dinge anders machen als unser anderer einheimischer Kollege. Slack->PD & Hipchat->PD-Integrationen, um zu zeigen, dass man mit dem Custom Event Transformer Integrationen sehr einfach strukturieren kann, um benutzerdefinierte Funktionen zu ermöglichen, und die Möglichkeiten sind endlos.
Meine neue Cisco Spark – PagerDuty Integration wird folgende Funktionen bieten:
- Diese Integration wird einen eigenen Raum haben; alle Hilfeanfragen in diesem Raum werden PD auslösen (anstatt nach Slash-Befehlen zu filtern).
- Alle Chatnachrichten in diesem Raum werden in denselben PD-Vorfall eingeordnet (indem der Raum als incident_key verwendet wird).
- Dieser Vorfall kann manuell über PD oder durch ein „Danke“ geschlossen werden.
Es gibt ein paar Besonderheiten bei Cisco Spark Webhooks, 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 das selbst auszuprobieren, erstellen Sie einen benutzerdefinierten Ereignistransformator mit dem folgenden Code :
function transform(PD) { var webhook = PD.inputRequest.body var message = webhook.text || 'Fehler: Keine Spark-Chatnachricht'; var room_link = ciscospark2web(b64decode(webhook.roomId)); // Link bereinigen var normalized_event = { incident_key: room_link, // Damit alle Nachrichten aus einem Raum im selben Incident de_dupeed werden event_type: PD.Trigger, description: message, details: { email: webhook.personEmail }, client: 'Cisco Spark', client_url: room_link }; // Wenn die Nachricht 'thanks' lautet, wird der Incident automatisch geschlossen if (message.toLowerCase() == 'thanks') { 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 // zu: 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 & Direktzugriff auf Nachrichten }
Klicken Sie auf Speichern, und Ihre Integration sieht dann so aus:

An Cisco Spark anschließen
Sobald Sie Ihren benutzerdefinierten Ereignistransformator in PagerDuty erstellt haben, richten Sie einen Cisco Spark „Outbound Webhook“ auf den


Wie sieht es in der Praxis aus?
Hier sind einige Chatnachrichten in Spark:

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

Und wenn der Anfragende „Danke“ sagt, wird die Anfrage 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 von mir im Code definierten benutzerdefinierten Regeln und Funktionen erfüllte.
Tipps zum Schreiben Ihres eigenen benutzerdefinierten Ereignistransformators
Das Beste daran ist aber, dass auch Sie das können, und zwar für jeden beliebigen Anwendungsfall.
Ich verwende normalerweise Runscope API Traffic Inspector Ich leite alle meine Webhooks über einen Proxy weiter, da ich sie so einsehen, bearbeiten und erneut senden kann. Während der Entwicklung richte ich die Tools daher auf Folgendes aus: https://events-pagerduty-com-aaaabbbbcccc.runscope.net/integration/aaaabbbbcccc111222333/enqueue Hier sehen Sie eines der Spark-Ereignisse, die ich getestet habe.
Erfahren Sie mehr über Benutzerdefinierter Ereignistransformator Legen Sie gleich los und erstellen Sie Ihre eigene Lösung, um beliebige Funktionen in PagerDuty zu integrieren. Und allen Teilnehmern der Cisco Live wünschen wir eine schöne restliche Konferenzzeit und freuen uns, Sie bald wieder bei uns begrüßen zu dürfen. Stand Nr. 1611 Für eine Live-Demo und für alle, die am 13. September in der Bay Area sind, schauen Sie doch einfach bei uns vorbei! PagerDuty Summit , wo Führungskräfte von Google, LinkedIn, IBM und Yahoo ihre wichtigsten Erkenntnisse zum Aufbau einer modernen Betriebsumgebung austauschen werden.