Workaround: Kommunizieren zwischen 2 Apps aus unterschiedlichen Channeln

Vor einiger Zeit stand ich vor der Frage „Wie können zwei verschiedene Apps aus unterschiedlichen Channeln miteinander kommunizieren?

Die Antwort lautet leider „Grundlegend ist das derzeit leider nicht von der API unterstützt.“ Die Bots haben keinen Zugriff aufeinander und können sich so keine Nachrichten schreiben, doch es gibt Möglichkeiten sich kennenzulernen.

Wie funktioniert das Prinzip?

Damit ein AppBot einem User eine Nachricht schicken kann, muss der AppBot die Zugriffsrechte für den User haben. Diese bekommt er normalerweise wenn der User den Channel betritt. Alternativ reicht das Anschreiben per /p oder /m auch aus. Das ist mit den AppBots allerdings schon schwierig, da der Bot an einen Channel gebunden ist.

Wie bekommt man also die Zugriffsrechte, wenn der andere AppBot nicht in den Channel kommen und auch keine /p schicken kann?

Ganz einfach: Auf die eigenen AppManager kann man immer zugreifen.

Wenn ich einen AppBot als AppManager eintrage, so erhält die App, in der der BotUser als AppManager eingetragen ist, automatisch die nötigen Zugriffsrechte um dem AppManager Nachrichten zu senden. Sobald die erste Nachricht gesendet wurde, hat auch der andere AppBot die  Zugriffsrechte für den ersten. Somit hat man dann schonmal beide Bots miteinandere bekanntgemacht und sie können sich Nachrichten senden.

Wofür kann man das nutzen?

Der Hauptgrund, wozu man eine Komunikation braucht, ist Datenabgleich. Beispielsweise könnte eine App, wie Knuddelonia für eine andere App wie Verrückte Worte Hüte als Achievments verteilen.

Ein Beispiel:

App 1:

App.onUserJoined = function (user)
{
    var otherBot = KnuddelsServer.getUserAccess().getUser('Mad Hätter');
    otherBot.sendPrivateMessage(user.getNick());
};

App 2:

App.onPrivateMessage = function (privateMessage)
{
    var user = privateMessage.getAuthor();</span>
    if (user.getUserId() == 12345) // 12345 = example id for a BotNick
    {
        // Interne Logik, die in Verrückte Worte den Hut setzt.</span>
    }
};

Mit diesem kleinem Code könnte eine App 1 (Knuddelonia) eine private Nachricht an App2  (Verrückte Worte) senden, wenn ein User den Channel betritt. App2 könnte darauf speziell reagieren.

2 Gedanken zu “Workaround: Kommunizieren zwischen 2 Apps aus unterschiedlichen Channeln

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s