Module: TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen

Begonnen von SirUli, 21 Juni 2016, 22:21:13

Vorheriges Thema - Nächstes Thema

SirUli

Hi Esjaycc,

Zitat von: Esjaycc am 23 Juni 2016, 10:54:31
Mich würde beiläufig interessieren, wie lange es eigentlich dauert so etwas auf die Beine zu stellen?
Da ich zwar viel Programmiere aber wenig mit Perl zu tun habe: Lange ;) Das Modul is nun bei mir seit etwa einem halben Jahr im Einsatz, aber ist durchaus ein paar Wochen lang in der Entwicklung gewesen.

Zitat von: Esjaycc am 23 Juni 2016, 10:54:31Bedarf es denn für den ersten Punkt i-einen define
Es bedarf eines defines - ich stelle das oben gleich klar!
Edit: Done

Zitat von: Esjaycc am 23 Juni 2016, 10:54:31Zu Punkt 2 wäre ich an der vorgehensweise der Installation interessiert.
Nehme ich ebenso oben auf - kleinen moment ;)
Edit: Done

Viele Grüße,
Uli

Esjay

Danke für die schnelle Antwort!

Werde es am Wochenende mal testen,und dann von mir hören lassen!

Grüße

RoBra81

Hallo,

ich habe es jetzt auch mal testen wollen, komme aber irgendwie nicht weiter: ich bin an dem Punkt, dass ich den Bot und den User habe und wenn ich per Telegram eine Nachricht an den Bot schicke, bekomme ich immer die Antwort "Ich konnte leider keine gute Antwort finden!" ans Telegram zurück. Im Bot scheint's anzukommen, denn es erscheinen Einträge im aktivierten Debug-Log:

[15:7:33] RiveScript: RiveScript v2.0.2 Initialized
[15:8:5] RiveScript: Get reply to [talkToUser_Ronny] Wie heißt du?
[15:8:5] RiveScript: Sorting triggers...
[15:8:5] RiveScript: Analyzing topic __begin__
[15:8:5] RiveScript: Collecting trigger list for topic __begin__ (depth=0; inheritence=0; inherited=0)
[15:8:5] RiveScript: Sorting triggers with priority 0.
[15:8:5] RiveScript: ip=0
[15:8:5] RiveScript: Sorting triggers...
[15:8:5] RiveScript: Sorting reverse triggers for %previous groups...
[15:8:5] RiveScript: Checking topic random for any %previous's.
[15:8:5] RiveScript: Processing responses to this trigger.
[15:8:5] RiveScript: Reply: ERR: No Reply Matched


Ich habe das RiveScript mit dem FHEM Verzeichnis (ich musste beim Starten ein Verzeichnis angeben, eine einzelne Datei ging nicht) mal auf der Console getestet und habe einen Haufen Fehlermeldungen bekommen (ß und Umlaute seien in Triggern nicht erlaubt). Also habe die mal rausgemacht und nun kann ich zumindest auf der Console mit SuSi reden, im FHEM funktioniert es aber leider nicht. Wo könnte mein Problem liegen?

Vielen Dank
Ronny

RoBra81

Kommando zurück! Es geht! Er hat den relativen Pfad zum Script nicht erkannt - absolut angegeben geht es jetzt  :)

Jetzt kann ich testen und bauen  :)

SirUli

Zitat von: RoBra81 am 30 Juni 2016, 15:16:13
ß und Umlaute seien in Triggern nicht erlaubt)
Das ist per Default auch korrekt - den UTF8-Support muss man separat einschalten. Guter Punkt mit dem Testen, das muss ich mal genauer fassen. Danke für den Hinweis.

Zitat von: RoBra81 am 30 Juni 2016, 15:20:10
Er hat den relativen Pfad zum Script nicht erkannt - absolut angegeben geht es jetzt  :)
Interessant - muss ich mal checken. Ich habe die Datei relativ angegeben und das lief ganz gut. Mal schauen.

Viele Grüße,
Uli

RoBra81

Ich glaube, nach dem definieren des Bots stand standardmäßig der Pfad

./TALKTOME.rive

was aber eigentlich

./FHEM/TALKTOME.rive

sein müsste...

Im FHEM funktionieren die Umlaute dann auch wieder...

Vielen Dank
Ronny

SirUli

Hi Ronny,

danke dir - tatsache. Danke dir für den Fund, ändere ich mit dem nächsten Release gleich ab.

Viele Grüße,
Uli

marvin78

Kleiner Tipp: Lass so eine "Vorkonfiguration" ganz weg aus dem Modul. Das ist, wie ich finde, nicht im Sinne von FHEM und macht sicher in dem speziellen Fall auch Probleme mit unterschiedlichen Systemen auf denen FHEM laufen kann. Die Pfade sind zum einen nicht immer gleich und noch dazu in global konfigurierbar. Dass deine Vorkonfiguration auf allen oder vielen Systemen läuft wäre also eher Zufall. Attribute sollten im Regelfall vom Anwender gesetzt werden und nicht vom Modul. Das gilt auch und insbesondere für Icons.

Das soll keine Kritik sein. Dein Modul habe ich im Testeinsatz und finde es gelungen.

SirUli

Zitat von: marvin78 am 30 Juni 2016, 15:40:53
Kleiner Tipp: Lass so eine "Vorkonfiguration" ganz weg aus dem Modul.
Mein Ansatz dazu war, dass man lediglich die Datei umbenennen muss und es einfach "läuft", aber da hatte ich mir das zu einfach gedacht - die Vorkonfiguration nehme ich raus (genauso wie die Icons) und auf in die Installationsanleitung, ist vermutlich der bessere Ansatz.

Viele Grüße,
Uli

RoBra81

Bei mir ist beim "Spielen" ein Wunsch aufgetaucht - vielleicht hast du da ja eine Idee: Ich habe folgendes in der .rive-Datei ergänzt:

+ was kannst du
- Standardkommandos:
^ /Temperaturen


Das daraufhin kann ich das /Temperaturen im Telegram direkt anklicken. Leider wird es dann aber nicht erkannt. Ich habe die Zeile

+ temperaturen


schon durch

+ [*] temperaturen


ersetzt, aber leider ohne Erfolg (außer, dass jetzt die Frage "Wie sind die Temperaturen?" funktioniert)

Ronny

SirUli

Das heisst dass du dann an FHEM auch /Temperaturen zurücksendest, korrekt? Muss ich bei mir mal nachstellen - ich hätte wie du vermutet, dass das so funktioniert, da der "/" durch den RiveScript-Parser eigentlich entfernt wird.

Viele Grüße, Uli

SirUli

Sooo dann einmal "update" please ;) Hintergrund ist, dass "/" nicht als Satzzeichen erkannt wurde. Dazu habe ich nun die ursprünglich nur im Programmcode vorhandenen Satzzeichen (.,!?;:¡¿) in ein Attribut verlegt, dass bei Vorhandensein ausgewertet wird. WICHTIG unbedingt beachten, dass die "normalen" Satzzeichen weiterhin eingetragen werden, ansonsten hat man wenig Spaß in der Erkennung ;)

Beispiel für Ronny's Fall:
attr FHEMTALKTOME rspunctuation .,!?;:¡¿/

Ich muss mal noch in die Runde fragen wie ihr am liebsten das TALKTOUSER Device bestimmen würdet. Usprünglich hatte ich dazu angedacht ein Attribut im Quelldevice anzulegen, was das steuert. Was bei Yowsup einfach ist, denn da hat jeder Absender ein eigenes Device. Bei TELEGRAMBOT ist das schon sehr viel schwieriger da das Quelldevice von mehreren Nutzern genutzt wird. Problem also: Wie ordne ich Nachrichten verschiedenen TALKTOUSER Devices zu? Ideen?

Viele Grüße,
Uli

RoBra81

Super, werde ich morgen gleich mal probieren.

Zur TALKTOUSER-Zuordnung: Was hältst du von einem Attribut im "Kommunikationsdevice", in welches man entweder den Namen des TALKTOUSER-Device einträgt (z.B. bei Yowsup) oder den Namen des Readings, in dem der Empfänger steht (z.B. bei TelegramBot) - den müsste man dann noch z.B. als Alias im TALKTOUSER-Device eintragen...
Ronny

RoBra81

Hallo Uli,

also das Modul ist echt super! Ich baue gerade meinen DOIF-ChatBot auf deine Module um. Dabei sind zwei Wünsche aufgetaucht:

1. ich bräuchte neben fhem-Aufrufen auch die Möglichkeit, perl-Funktionen aufzurufen, um komplexe Antworten zusammenbauen zu können (ich habe mir die Möglichkeit schonmal schnell selbst eingebaut, vielleicht übernimmst du das ja - siehe Anhang (Achtung: ohne Fehlerhandling - ich befürchte, FHEM könnte abstürzen, wenn man versucht, eine nicht vorhandene Funktion aufzurufen))
2. schön wäre auch die Möglichkeit, Bilder (z.B. Charts oder Kamerabilder) als Anhang zu versenden

Vielen Dank für das tolle Modul!
Ronny

SirUli

Zitat von: RoBra81 am 01 Juli 2016, 14:35:08perl-Funktionen
Ja why not - hört sich gut an. Denke das sollte kein Problem sein (auch das abfangen von ungültigen Funktionen). Ich glaube nur der Anhang ist verloren gegangen :)

Zitat von: RoBra81 am 01 Juli 2016, 14:35:08Bilder (z.B. Charts oder Kamerabilder) als Anhang
Das muss ich mir mal ansehen, denn das ist bisschen trickreich. Habe ich mir auch schon gewünscht.