TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen

Aus FHEMWiki
Version vom 5. Juli 2016, 14:57 Uhr von RoBra81 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Infobox Modul|...}} Mit Hilfe der Module TALKTOME & TALKTOUSER und der Sprache RiveScript ist es möglich, Chatbots - bekannt von Webseiten wie IKEA und co -…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen
Zweck / Funktion
{{{ModPurpose}}}
Allgemein
Typ undefiniert
Details
Dokumentation ModUndef
Modulname {{{ModTechName}}}
Ersteller {{{ModOwner}}}
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Mit Hilfe der Module TALKTOME & TALKTOUSER und der Sprache RiveScript ist es möglich, Chatbots - bekannt von Webseiten wie IKEA und co - für FHEM einzusetzen, um Frage-Antwort-Dialoge zu bauen.

Features / Funktionen

Die Haupteigenschaften von XYZ sind

  • Anbindung von RiveScript an fhem
  • Abruf von Readings, ReadingTimestamps, Attributen
  • Absetzen von fhem Befehlen oder Aufruf von perl Funktionen

Hinweise zum Betrieb mit FHEM

Voraussetzungen

Die Einrichtung von msg - das macht mir das Antworten in die diversen Kanäle sehr viel einfacher.

Installation von RiveScript in der Version 2.0.1 (oder neuer, falls eine erscheinen sollte) via CPAN. ACHTUNG nicht via apt-get installieren, da die Version zu alt ist.

msg

Bei der ersten Verwendung des Befehls "msg" wird ein Device namens globalMsg angelegt, was man aber dem Modul vorweg nehmen kann:

define globalMsg msgConfig

Damit sind die Voraussetzungen schon geschaffen

Installation von RiveScript

Rufe cpan auf:

cpan

Das sieht dann etwa so aus:

sudo cpan
Loading internal null logger. Install Log::Log4perl for logging messages
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v2.10)
Enter 'h' for help.

cpan[1]>

Installiere dann Rivescript mit Hilfe des folgenden Kommandos:

install RiveScript

Falls Fragen aufkommen, ob man Abhängigkeiten folgen soll, dann bitte richtig beantworten (yes) ;)

Installation der Module

Geht wie immer:

update all https://raw.githubusercontent.com/SirUli/FHEM-TALKTO/master/controls_talkto.txt

Anschließend sollte man im Ordner FHEM drei zusätzliche Files (42_TALKTOME.pm, 42_TALKTOUSER.pm sowie TALKTOME.rive.template) finden. Letzteres benennt man nun um in TALKTOME.rive. An dieser Stelle darf man das File natürlich auch schon editieren - wenn man möchte und Rivescript versteht.

Definition

Dann geht es los mit der Definition des Chatbots an sich:

define FHEMTALKTOME TALKTOME

FHEMTALKTOME ist sozusagen nun der Bot, welcher zu Beginn noch deaktiviert ist. Bevor man diesen aktiviert, muss man den Pfad zum TALKTOME.rive File setzen. Ist dieses file im Ordner FHEM (sozusagen also wie Auslieferungszustand und oben beschrieben), so setzt man folgendes:

attr FHEMTALKTOME rsbrainfile ./FHEM/TALKTOME.rive

Dann kann man das Attribut "disable" entfernen. Für die Nutzerinteraktion kann man noch weitere Details eines Nutzer anlegen (derzeit nur den "richtigen" Namen), daher brauchen wir ein Benutzermodul, also z.B. für mich:

define TALKTOUSER_ULI TALKTOUSER

Bitte noch nicht wundern - derzeit ist das noch nicht voll ausgebaut, besser ihr legt erstmal nur ein Benutzergerät an.

Nun kommt der wichtigste Teil - die Einbindung einer Quelle. Bei mir ist das nun Telegram, welches nun zwei zusätzliche Attribute via userAttr bekommen muss:

talktouserMonitorReading talktouserModSourceDev

Was heissen die Attribute?

talktouserMonitorReading: Bezeichnet das Reading welches überwacht werden soll, im falle von Telegram ist dies auf "msgText" zu setzen talktouserModSourceDev: Lässt eine Änderung des Quell Devices zu. So muss beispielsweise für Telegram, damit eine Antwort machbar ist, das Quelldevice verändert werden. Lokale Readings (also vom Quellverzeichnis) werden mit %%readingname%% angegeben, das device selbst ist %DEVICE%. Für Telegram muss beispielsweise %DEVICE%:@%%msgPeerId%% gesetzt werden, damit die Antworten ankommen

Wie legt man nun Dialoge an?

Dazu empfehle ich einmal durch das Tutorial ab den "First Steps" zu gehen und sich die Beispieldatei FHEM/TALKTOME.rive.template zu Gemüte zu führen. Diese bietet schon so kleinigkeiten wie "Wie heisst du" als Fragen oder die Frage nach dem Wetter (Geräte eben entsprechend austauschen!) oder den Raumtemperaturen.
Zusätzlich:

Readings lassen sich per

<call>readingsval BK_Wetter fc1_low_c Error</call>

auslesen
Readings Timestamps lassen sich per

<call>readingstimestamp LR_Wandthermostat temperature Error</call>

auslesen
Attribute lassen sich per

<call>attrval BK_Wetter fc1_low_c Error</call>

auslesen
FHEM Kommandos kann man so ausführen:

 <call>fhem set KU_SWITCH_COFFEE_Sw on</call>


Perl Methoden/Funktionen kann man so ausführen:

<call>perl chatbot_beispielfunktion</call>


Was ist derzeit noch ToDo?

Unterscheidung von Messages aus verschiedenen Quellen mit den entsprechenden Usern (siehe oben) - derzeit geht alles über ein TALKTOUSER Gerät evtl. Integration mit ROOMMATE Überarbeitung der Dokumentation

Umgesetzte Projekte

Folgen zeitnah

Weblinks