Slack und sipgate team verheiraten - mit sipgate.io

Alex
24.02.2016 4 6:04 min

Im Januar hatte Matt hier im sipgate Blog auf Englisch beschrieben, wie leicht man sipgate team in Slack integrieren kann – mithilfe unserer Echtzeit-API sipgate.io. Dieses Wissen wollten wir unseren Lesern mit eingerostetem Englisch nicht vorenthalten, daher ist er hier nochmal auf Deutsch.

Slack

Mehrere Teams bei sipgate nutzen Slack (ein Chat mit verschiedenen Channels), um sich abzusprechen und Infos zu verteilen. Slacks Motto ist “All your communication in one place, integrating with the tools and services you use every day”. Also in etwa „All Deine Kommunikation an einem Ort, integriert alle Tools und Services, die Du täglich nutzt“. Ich habe solche Behauptungen schon früher gehört, nur um dann enttäuscht zu werden (Ja, SharePoint und Google Wave, ihr seid gemeint). Mit Slack gibt es nun ein Tool, das das Versprechen erstmals einlöst.

Ein Team mag verschiedene SaaS Anwendungen benutzen, aber nicht jedes Teammitglied benutzt alle Anwendungen, zumindest nicht im gleichen Umfang. Wenn man nicht ständig zwischen den Anwendungen hin- und herwechselt, kann ein Teammitglied also leicht etwas Wichtiges verpassen, sei es von einem Kunden oder einem System. Mit einer Slack Integration kann man das Problem beheben, indem man alle Infos und Aktivitäten von einem anderen Tool nimmt und in einem Slack-Channel anzeigt. Alle Teammitglieder bekommen so einen groben Überblick über alles, was in den jeweiligen anderen Anwendungen passiert. So können sie je nach Ereignis ignorieren, direkt in Slack reagieren oder zu der anderen Anwendung wechseln.

Das sipgate UK Support-Team benutzt viele Anwendungen, u.a. Trello, Zendesk, Zopim Live Chat, Yammer und Twitter. Letzteres ist ein gutes Beispiel für eine Slack-Integration: Wenn jemand auf Twitter unsere Handles @sipgateUK and @sgUK_status erwähnt, erscheint das im Slack-Channel des UK Support-Teams. Irgendwann fiel uns auf, dass uns Input aus unserer eigenen SaaS-Anwendung fehlt: sipgate team. Da unsere Hotline inklusive Wartefeld auf sipgate team läuft, wäre es doch prima, Informationen zu verpassten Calls auch in den Slack-Channel zu bekommen. Dann könnten wir leicht abstimmen, wer zurückruft. Wenn wir nur eine Integration schreiben könnten …

Gestatten, sipgate.io

Praktischerweise hat das Team schräg gegenüber schon genau das gebaut, was wir brauchen. sipgate.io ist eine Echtzeit-Telefonie-API, die man allein oder mit anderen sipgate Produkten zusammen benutzen kann. Mit der API bekommt man Infos zu ein- und ausgehenden Anrufen an den eigenen Webserver geschickt. Dadurch kann man Telefonie in die eigenen Services, Produkte und internen Tools einbauen. Da wir Benachrichtigungen zu eingehenden Calls wollten, war sipgate.io ideal!

WebHooks

Um eine Integration selbst zu schreiben (anstatt eine Integration dazuzuklicken, die Slack schon anbietet), muss man einen eingehenden WebHook (‘Incoming WebHook’) konfigurieren. Dazu geht man in Slack in das App-Verzeichnis, wählt „Configure“ und geht dann zum Reiter für eigene Integrationen (‘Custom Integrations’). Dort steht dann die Option ‘Incoming WebHook’.

App Directory

Um den WebHook zu konfigurieren, wählt man den Channel, in den man posten möchte. Optional kann man dem Hook auch noch einen aussagekräftigen Namen, Label und Icon geben. Für den nächsten Schritt muss man die WebHook URL kopieren.

Integration Settings in Slack

Ein bisschen Code

Sobald wir den WebHook eingerichtet haben, müssen wir ein bisschen programmieren. Ich habe für unsere Integration Ruby und das Sinatra Framework ausgewählt. (Falls ich vergesse, etwas zu erklären, hilft hoffentlich ein Blick in die GitHub documentation oder das sipgate.io Cookbook.)

Bevor wir richtig anfangen, müssen wir noch ein paar Sachen vorbereiten:

  • Unserer Anwendung sagen, wohin sie in Slack posten soll. Ich benutze das Ruby Gem slack-notifier, das ich mit der Incoming WebHook URL (die wir aus Slack kopiert haben) instantiieren muss.
  • Einen Datenzwischenspeicher einrichten. Wir müssen (jeweils nur kurz) Infos zu eingehenden Anrufen zwischenspeichern, damit wir darauf noch zugreifen können, wenn der Anruf angenommen wird. Ich habe redis benutzt, aber jede andere SQL Datenbank tut’s auch.
  • Lokale Tests erlauben. Ich benutze ngrok, damit ich alles lokal testen kann, bevor ich den Code live stelle. (Im sipgate.io Cookbook gibt es eine Anleitung, wie und warum man ngrok benutzt.)

https://gist.github.com/neetso/fbf70240bda1acdaf235

Wir müssen sipgate.io sagen, wo unser Webserver ist, damit unser obiger Code ausgeführt wird, sobald jemand die Hotline anruft. Das macht man in ’sipgate team‘ auf dem Reiter ’sipgate.io‘. (Achtung, diesen Reiter sieht man nur, wenn man sipgate.io auch gebucht hat.) Man wählt die Gruppen und Benutzer aus, für die man von sipgate.io benachrichtigt werden will (bei uns die Gruppe ‚UK Hotline‘) und trägt dort die URL unseres Webservers ein.

sipgate.io settings in team

Jetzt, wo wir alles vorbereitet haben, gucken wir uns an, was passiert, wenn unsere Hotline angerufen wird. Dann ruft sipgate.io die obige URL per HTTP Post auf und übergibt einige Infos zum Anruf. Zu diesem Zeitpunkt machen wir zwei Dinge:

  1. Die übergebene Telefonnummer (wer anruft) speichern, damit wir sie später benutzen können.
  2. Wir nennen sipgate.io (über eine XML Antwort) zwei weitere URLs: eine dafür, wenn der Anruf angenommen wird und eine dafür, wenn der Anruf beendet wird.

https://gist.github.com/neetso/2ba8d946e95ec6875e7a

Zuletzt müssen wir festlegen, was passiert wenn sipgate.io uns ein „angenommen“- oder „beendet“-Ereignis signalisiert. (Wer mehr wissen will, konsultiere bitte die Dokumentation auf GitHub.) Uns interessieren zwei Szenarien:

  1. Verpasste Anrufe während der Hotline-Zeiten. Während der Hotline-Zeiten (Montag bis Freitag, von 9:30 bis 16:30 GMT) bleiben Anrufe in einer Warteschleife, bis entweder jemand drangeht oder der Anrufer auflegt. Wenn der Anrufer auflegt, bevor ein Mensch drangeht, verschickt sipgate.io einen Hangup-Event mit dem Grund „cancel“. Diese Art Event wollen wir im Slack-Channel sehen, mithilfe des slack-notifier gem. Wir fügen der Benachrichtigung noch einen Link zur Eventliste in sipgate team hinzu, ein sogenanntes „Attachment„.
  2. Verpasste Anrufe außerhalb der Hotline-Zeiten. Außerhalb der Hotline-Zeiten gehen alle Anrufe auf den Anrufbeantworter. Diese Situation können wir erkennen, indem wir uns im Answer-Event angucken, welcher Benutzer den Anruf angenommen hat. Wenn dort „voicemail“ steht, dann wissen wir, dass die Hotline nicht besetzt war und posten entsprechend in unseren Slack-Channel.

https://gist.github.com/neetso/f07e0f674c1740b3c470

Und los geht’s!

So sehen unsere Benachrichtigungen in Slack aus. Schick, oder?

Integration Settings in Slack

Und was machst Du mit sipgate.io?

Nun ist es offiziell: sipgate.io ist so einfach, dass sogar ein Product Owner etwas damit gebacken kriegt. Hier waren unsere Anforderungen nicht so super kompliziert. Da gibt es bestimmt viel spannendere Anwendungsfälle, wie z.B. Telefonie in Deinem CRM. Lass uns wissen, was Du bauen willst!

4 Kommentare


ALexander:

Was ist nicht verstand, ob man damit telefonieren kann, wie z.B. mit MS Teams (SfB).

antworten

    Philipp:

    Hallo Alexander,
    lässt sich mit ein bisschen Entwickler-Wissen umsetzen. Wird aber vom Blogartikel aktuell nicht abgedeckt.
    Viele Grüße
    Philipp

    antworten

      Dmitrij Moreinis:

      Es wäre super, wenn man drauf klicken könnte und man wird verbunden. Könnte man nicht eine Direkte Anbindung über die App realisieren?

      antworten

        Philipp:

        Hallo Dmitrij,
        deine beschriebene Funktion könnte in Zukunft eine tolle Ergänzung für sipgate.io und slack sein. Aktuell bieten wir das aber nicht an.
        Viele Grüße
        Philipp

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert