TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen
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
- Forumsartikel Module: TALKTOME & TALKTOUSER - Sprachverarbeitung für Nutzerinteraktionen
- Forumsartikel Neuer FHEM Befehl "msg" für Benachrichtigungen
- RiveScript First steps