MSN-Bot: Butler Johnny

Hallo Community,

hier das erste Ergebnis meines neusten „Technologie-Versuchs“: Ich habe mal einen anderen Weg der Kommunikation mit meinem Haus getestet.
Ich kann nun per MSN-Messegner mit meinem „Home-Butler Johnny“ kommunizieren. Dafür habe ich einen sogenannten
MSN-Robot implementiert, der auf meinem Server läuft und u.a. mit IPS kommuniziert.
1.jpg

Wenn ihr im Besitz eines entsprechenden MSN-Accounts seit, könnt ihr via MS Messenger oder z.B. mit Miranda mit meinem Robot
chatten. Johnny ist unter der IM homebot@hotmail.de zu erreichen. Er ist zwar nocht nicht so intelligent, aber zu Demo-Zwecken reicht es erst mal. Allerdings ist die Performance des Providers nicht so gut, so dass manchmal keine Antwort zu kommen scheint.
Von unterwegs kann ich nun beispielsweise auch mit meinem VPA mit Ihm chatten.

Ein Wort: Geil!

Bleib auf jeden Fall an dem Projekt dran.

Toni

Ich kann mich nur anschließen…super :slight_smile:

Ein Frage habe ich noch,

gibt es sowas wie eMai To MSN-Messegner „Gateway“ ???

Ich würde gerne Infos aus IPS per Mail versenden und direkt im MSN-Messegner

empfangen.

Jürgen

Der Bot „weiß“ (User-ID) mit wem er kommuniziert, somit könnte er seinem Gesprächpartner während einer Session die EMail „vorlesen“…

Gruß
Markus

Hallo Markus,

wie schon meine Vorredner geschrieben haben, finde ich auch, dass es wirklich eine echt super Idee ist mit einer wirklich äußerst gelungenen und trotzdem noch wunderbar ausbaufähigen Umsetzung! Bleib deshalb unbedingt an deinem Butler dran! Einfach nur: PRO!
Da ich ebenfalls an solch einem Butler interessiert wäre, würde es mich einmal interessieren, ob du später planst diesen Butler zu veröffentlichen.

Vielen Dank schon im Voraus und viele Grüße

Akio

Hallo Markus,

auch ich finde den Bot interessant um IPS auf allen möglich Kommunikationswegen zu steuern.

Gibt es vielleicht schon eine Testversion?

Hallo,

ich kann mir schon vorstellen, eine allgemein nutzbare Version meines Butlers zur Verfügung zu stellen. Es kommt jetzt darauf an, wieviel Zeit ich in die Entwicklung des Bots stecken kann. Einige Teile sind schon so ausgelegt, dass diese ohne Code-Änderung selber erweitert/angepasst werden können…

Gruß
Markus

also ehrlich gesagt, dazu fällt mir nichts mehr ein. RESPECT!

Ich bin auf jeden Fall auch daran interessiert!

BTW: Baut das auf Harold auf oder benutzt Du da was anderes?

f0rd42

Super Idee,
kannst Du bitte weitere Infos veröffentlichen?
Mich würde sehr interessieren wie die Schnittstelle IP-Symcon - MSN aussieht.

Als Anregung würden mich auch unfertige CodeSchnipsel interessieren.

Vielen Dank im Vorraus.

Thorsten

Hallo,

nähere Infos werden hier noch folgen…

Gruß
Markus

Hi,

Ich konnte bei dieser genialen Idee von MarkusTC nicht wiederstehen und habe mich gleich selbst mit der Entwicklung eines Bots beschäftigt.

Mich hat das vor allem angezogen, da ich seit langem einen Weg suche automatisch via einer Art push process von Events in IPS benachrichtigt zu werden. Ausserdem errinert mich so ein Bot an die guten alten IRC Bots vor mehr als 10 Jahren.

Die Entwicklung so eines Bots ist aber nun echt keine einfache Sache. Es gibt zwar sehr ausführliche Beschreibungen des MSN Protocols im Netz aber da gibt es halt sehr viel zu Berücksichtigen. Ich wollte es schon aufgeben, als ich Blobsy (http://www.blobsy.org) fand. Blobsy ist ein PHP Bot und eignet sich daher sehr gut für IPS. Hat ein paar Tage gedauert, bis ich es auf IPS angapasst habe, und nun läuft er. Er besitzt eine ganze Reihe von Tools. Ein Timer kann z.B. eine funktion periodisch laufen lassen, die etwas auf dem PC prüft (hier eine Variable in IPS) und dann selbst ein „Gespräch“ startet. Habe ich alles getestet und läuft prima.

Da der Bot auf Befehle lauschen muss, läuft ununterborchen eine Schleife im IPS Script. Ich konnte noch nicht testen, ob dadurch die IPS Performance stark reduziert wird. Da bin ich auch auf MarkusTCs Lösung zum Vergleich gespannt.

Infos zum „Blobsy“ IPS Bot & Scripts gebe ich gerne sehr bald hier noch an.

Gruss,

Bin schon gespannt, wie das ganze im Backend funktioniert :slight_smile:

Zu deiner Frage:

Da der Bot auf Befehle lauschen muss, läuft ununterborchen eine Schleife im IPS Script. Ich konnte noch nicht testen, ob dadurch die IPS Performance stark reduziert wird. Da bin ich auch auf MarkusTCs Lösung zum Vergleich gespannt.

Da dadurch wahrscheinlich IPS nicht beendet werden kann (Beim Shutdown wird auf alle Scripte gewartet), kannst du ein Shutdown Script nehmen in dem eine Shutdown Variable gesetzt wird, die du dann in der Schleife immer abfragst. (z.Z. ist das Shutdownscript kaputt. (siehe Bugreports)… Update gibt dafür bald)

Ansonsten hat es, solange es nur 1 Script ist, keine Auswirkung auf die Performance. (Du kannst die Anzahl der parallel laufenden Scripte in den Settings erhöhen)

paresy

So etwas in der Art wird im Blobsy Script schon gemacht. Wenn der Bot gestoppt wird, kommt eine bestimte Nachricht vom MSN Server zurück. Wenn diese Nachricht erhalten wird, wird die Schleife unterbrochen. Einziges Problem ist wenn beim Anmelden des Bots etwas „unerwartetes“ passiert (z.B. Fehler im PHP script), dann bleibt die Schleife „hängen“ und IPS bleibt beim Shutdown stecken. In der Test-phase des Bots musste ich da ein paar Mal IPS mit dem Task Manager „killen“.

Bei jedem neuen Gespräch mit dem Bot wird ein zweites Script für die Gesprächs-session gestartet (in der MSN Sprache Switchboard Session genannt). Das Thread Add-in zeigt dann schön die verschiedenen Threads für die Gespräche. Funktioniert bis jetzt echt super.

Gruss,

Zapp

Hallo zapp,

ich freu mich schon ganz ganz viel auf den Bot. Hoffentlich dauert es nicht mehr allzulange :wink:

Hallo,

es gibt verschiedene SDKs mit deren Hilfe man einen MSN-Bot realisieren kann:
https://www.robotinvaders.com/main/About.aspx
Ich hoffe, demnächst meinen BOT als Beispiel-Code hier hinterlegen zu können.

Gruß
MarkusTC

Hallo,

hier noch einige interne Infos:
Als Bot-Platform habe ich mich für die Incesoft Bot Platform entschieden und dort kostenlos ein Konto eingerichtet. Ist zwar etwas langsam, funktioniert aber. Dort eingeloggt muß man dann noch den MSN-Account für den Bot angeben. Desweiteren können hier Name und Display Picture eingetragen werden. Dieser Provider ist sozusagen die Schnittstelle zwischen Chatter und dem Bot, der auf dem eigenen Server läuft.

Mit Hilfe des Bot-SDK kann man sich dann mit dem Incesoft-Account anmelden und auf eintreffenden Messages warten und entsprechend reagieren.
Ich habe meinen Test-Bot unter .net VB entwickelt.

Hier die Klassen-Übersicht:

Am Anfang wird ein neuer cBot erstellt und mit den Login Daten gefüttert. Dieser enthält die beiden Event-Handler und wartet auf einkommende Nachrichten. Sobald eine Nachricht eintrifft, wird für den User eine neue ChatSession erstellt, der die Kommunikation mit dem User regelt. Die Klasse cKI sorgt dafür, dass entsprechende Antworten generiert werden. U.a. werden die Fragen geparst und entrsprechend beantwortet.
Die Kommunikation mit IPSymcon läuft dann über eine php-Datei, die in einem lokalen „Intranet“ läuft und nichts anderes macht, als die angegebenen Befehle auszuführen und ggf. Rückmeldungen in Form von HTML zu geben (z.B. Stati der Komponenten).

Gruß
MarkusTC

Hi,

Die Blobsy MSN Bot (Beta) Variante für IPS kann hier runtergeladen werden. Anweisungen für die Installation sind dabei.

Vorteil des PHP Bots ist, dass IPS Befehle direkt im Bot Script aufgerufen werden können und IPS den Bot kontroliert.

Die CURL extension wird für die Verbindung zum Passport Server für die Autentifizierung benötigt. Dafür folgende Dateien (PHP 5.1.5) in das IPS Verzeichnis kopieren:

  • php_curl.dll
  • libeay32.dll und ssleay32.dll
    und folgende Zeile in der php.ini eintragen:
extension=php_curl.dll

Installation:
Vorher einen MSN-Account anlegen.
Dann einfach die Zip Datei im Script Verzeichnis entpacken.
Nur beide IPS Scripte im IPSBot/Scripts Verzeichniss in IPS reinkopieren (mit selben Namen) und trigger-Variablen anlegen:

  • RunBot als Boolean für IPSBot.ips.php
  • IPSBot_SB_Parameter als String für IPSBot_SB.ips.php.

In der default.conf.php Datei müssen die Parameter für den Bot angeben werden.

Die Handler-Datei IPS.sb.php „reagiert“ auf Befehle im Messenger und enthält ein paar einfache Beispiele für IPS…

Probleme:
Nach 60 sekunden wird scheinbar vom MSN Server die Gesprächs-session geschlossen. Die Willkommen Nachricht wird daher öfters wieder angezeigt.

Viel Spaß,

Zapp

Hallo zapp,

habe mit deinen Bot mal installiert, natürlich nach Anleitung, nur leider will er mir keine Befehle annehmen.

Bekomme im Log immer folgenden Eintrag:


23.09.2006 09:33:18.442 | CUSTOM  | IPSBot               | RNG Switchboard conversation requested by xxxxxxxx@hotmail.com
23.09.2006 09:33:18.442 | CUSTOM  | IPSBot               | Initiated a Switchboard process via SB Script
23.09.2006 09:33:18.442 | DEBUG   | VariableManager      | Variable: IPSBot_SB_Parameter (String), Value: YTo4OntzOjQ6ImNvbmYiO3M6NzoiZGVmYXVsdCI7czo2OiJzZXNzaWQiO3M6OToiMzYxMDY0OTA4IjtzOjg6Imhvc3Rwb3J0IjtzOjE4OiIyMDcuNDYuMjYuMTIzOjE4NjMiO3M6ODoiYXV0aHR5cGUiO3M6MzoiQ0tJIjtzOjg6ImF1dGhjb2RlIjtzOjE3OiI5MjE3ODE2OS4yMjUxNDgyMiI7czo1OiJlbWFpbCI7czoxOToid2dyZWlwbEBob3RtYWlsLmNvbSI7czo0OiJuaWNrIjtzOjY6Ildlcm5lciI7czo2OiJsaW5raWQiO3M6MTM6IjQ1MTRlMzNlNjk3ZDQiO30=
23.09.2006 09:33:18.442 | DEBUG   | ExecuteThread ID: 7996 | Executing Script: IPSBot_SB.ips.php ~ Sender: Variable: IPSBot_SB_Parameter, Trigger: OnChange
23.09.2006 09:33:18.442 | CUSTOM  | IPSBot               | RNG Conversation Opened
23.09.2006 09:33:18.442 | CUSTOM  | IPSBot               | Started SwitchBoard handling script
23.09.2006 09:33:18.442 | CUSTOM  | IPSBot               | Loading handlers from: .\IPSBot\handlers : LogDebug,LinkFile,MSNP2P,MessagesPlus,MSNFTP,Broadcasts,IPS
23.09.2006 09:33:18.504 | ERROR   | ExecuteThread ID: 7996 | ScriptError: IPSBot_SB.ips.php ~ Sender: Variable: IPSBot_SB_Parameter, Trigger: OnChange ~ Result: <br />
<b>Parse error</b>:  parse error, unexpected ';' in <b>C:\Programme\IP-SYMCON\scripts\IPSBot\handlers\IPS.sb.php</b> on line <b>116</b><br />

23.09.2006 09:33:18.504 | DEBUG   | ExecuteThread ID: 7996 | Execution Result: <br />
<b>Parse error</b>:  parse error, unexpected ';' in <b>C:\Programme\IP-SYMCON\scripts\IPSBot\handlers\IPS.sb.php</b> on line <b>116</b><br />


Hast Du eine Ahnung wo ich einen Fehler gemacht haben könnte.

Kleine Anmerkung. Habe den Messenger Live in der Version 8.0.0812.00

Hallo wgreipl,

Sorry, ist mein Fehler. Ich habe im IPS handler eine Klammer am Ende nicht geschlossen. Zeile 116 im Script IPS.sb.php im Verzeichniss IPSBot/handlers.

$varUpdateTime = date("d.m.y @ H:i", IPS_GetUpdateTime($variableName));

Dein Log ist sonnst korrekt und es müsste funktionieren.

Gruß,

Zapp

Hallo zapp,

vielen Dank, dass war´s.

Da hätte ich auch selber draufkommen können :rolleyes:

So jetzt muss ich nur noch rausfinden wie ich den BOT für meine Bedürfnisse anpasse, aber das wird schon.