chatBot (vordefinierte Dialoge) für Telegram

Begonnen von igami, 27 März 2016, 17:17:32

Vorheriges Thema - Nächstes Thema

igami

So, ich wollte mich nun mal wieder daran setzen und habe aber ein paar Fragen an euch nutzer:
1. Was für einen Chat-Dienst nutzt ihr? Ausschließlich Telegram oder gibt es auch Adaptionen auf andere Dienste? Ich würde versuchen das ganze dann so modular wie möglich zu halten und das ganze midestens noch auf jabber zu erweitern.
2. Wie konfiguriert ihr lieber eure Dialoge? Eine "myUtils" Datei oder pro Dialog ein FHEM Device? Letzteres mache ich mit DOIF und finde das auch recht praktisch. So kann ich für jeden Dialog separat Berechtigungen vergeben.

Noch bin ich in der Findungsphase und der Meinung, dass ein Zweistufiges Modul Sinnvoll ist.
1. "DialogModerator" in dem man die Schnittstellen definiert, also den TelegramBot
2. "Dialog" in dem man die einzelnen Dialoge definiert.

Es gibt ja mittlerweile auch schon mehrere Ansätze hier im Forum (TALKTOME und TERRKO). Diese gehen aber weiter und machen auch eine Kontexterkennung.
Mir geht es aber ausschließlich um einen ChatBot mit vordefinierten Dialogen ohne Spielraum. Dadurch lässt sich das Handy einfach als Interface benutzen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

ripper

#91
Hallo Igami,

also ich nutze Telegram und habe tiroso`s Version aus diesem Thread bei mir umgesetzt. Ich finde die alles in einer Datei zu haben aktuell sehr übersichtlich und gut zu warten. Allerdings gibt es bei mir momentan auch nicht so viel zu schalten, sodass sperate Berechtigungen kein Thema sind.

pole23

Moin,

ich benutze auch als Client ausschließlich Telegram und habe eine eigene "myutils" Datei für die Dialoge.

binford6000

Moin,
ich benutze als Client auch Telegram und fände die DOIF-Variante charmanter wie mit die myUtils.
VG Sebastian

tiroso

Ich bin zwischenzeitlich zu lange raus und habe iwie zu wenig Zeit. Da gehen mir viele Beiträge unter. Bin nicht so fit mit Forums Beiträge verfolgen ^^

Ich freue mich wenn meine Vorlage genutzt werden kann und würde auch gerne mehr helfen. Noch besser finde ich das andere da aushelfen können.

schka17

Telegram mit myUtils, DOIF's gibts bei mir nicht


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

felskrone

Ich nutze auch Telegram und bin kein Freund von DoIf.
Wichtig wäre mir die Möglichkeit, mehrere Benutzer mit unterschiedlichem Funktionsumfang abbilden zu können.
___________________________
FHEM 5.8 auf Raspi 1B und HMLAN

igami

Das mit den mehreren Benutzern realisiere ich momentan über die DOIF. Für jeden Dialog wird festgelegt wer den benutzten darf.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

PSI69

Ich nutze Telegram und derzeit die myutils; doifs mit einzelnen Berechtigungen (wobei ich diese im Moment nicht benötige) sind aber auch OK...

Peter
FHEM 6 auf RPi 4 unter Buster mit inzwischen einem ganzen Zoo von Geräten...

jkriegl

Benutze ausschließlich Telegramm, lasse mir zeitgesteuert Informationen zuschicken.
Über Menue und notify rufe ich Daten und plots ab.
Daten setzen z.B. Vorlauftemperatur ist in Planung.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Smarti

Guten Tag,
ich beschäftige mich auch gerade mit dem Thema ChatBot. Bisher habe ich noch nichts wirklich brauchbares implementiert. Habe mir aber da so meine Gedanken gemacht.

Für die Entwicklung eines ChatBot Moduls, sollte meines erachtens eine Trennung zwischen Code und Dialogen stattfinden: Sprich, wenn möglich sollten alle Dialoge in eine speaparte Datei ausgelagert werden (worin die Dialoge z.B. in XML, JASON, YAML oder einer andern Markup Language) abgelegt/gepflegt werden. Durch das Modul wird diese entsprechende Datei geparst.

Klingt das zu abwägig? Was meint Ihr dazu?

igami

Zitat von: Smarti am 01 September 2017, 08:20:55
Guten Tag,
ich beschäftige mich auch gerade mit dem Thema ChatBot. Bisher habe ich noch nichts wirklich brauchbares implementiert. Habe mir aber da so meine Gedanken gemacht.

Für die Entwicklung eines ChatBot Moduls, sollte meines erachtens eine Trennung zwischen Code und Dialogen stattfinden: Sprich, wenn möglich sollten alle Dialoge in eine speaparte Datei ausgelagert werden (worin die Dialoge z.B. in XML, JASON, YAML oder einer andern Markup Language) abgelegt/gepflegt werden. Durch das Modul wird diese entsprechende Datei geparst.

Klingt das zu abwägig? Was meint Ihr dazu?
So hatte ich das ja vor. Nur eben nicht einzelne Dateien, sondern devices in FHEM. Bei der Syntax bin ich mir aber noch nicht sicher was richtig ist.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

RoBra81

Dann solltest du dir das Modul mal ansehen: https://forum.fhem.de/index.php?topic=54863.0

Gesendet von meinem SM-G935F mit Tapatalk


igami

Zitat von: RoBra81 am 01 September 2017, 23:10:10
Dann solltest du dir das Modul mal ansehen: https://forum.fhem.de/index.php?topic=54863.0
Ja, das Modul kenne ich schon.
Meiner Meinung nach bietet es aber nicht die passende Syntax.
Ich denke ich werde es eher mit json machen

{
  "variables": {
    "actor": "HM_2C10D8_Sw",
    "controlUnit": "Waschkeller_washer_controlUnit",
    "state": "ReadingsVal($actor,'state', '') eq 'on' ? 'eingeschaltet' : 'ausgeschaltet';",
    "controlMode": "ReadingsVal($controlUnit,'controlMode', '') eq 'auto' ? 'Automatik' : 'Manuell';"
  },
  "request": "Waschmaschine",
  "message": [
    "Waschmaschine: $state",
    "Modus: $controlMode"
  ],
  "keyboard": [
    "Zeitprogramm stoppen",
    "programmieren",
    "einschalten",
    "Verlaufsdiagramm",
    "abbrechen"
  ],
  "reply": [{
      "request": "Zeitprogramm stoppen",
      "message": [
        "Das Zeitprogramm wurde gestoppt.",
        "",
        "/heimdall"
      ],
      "commands": "set $controlUnit controlMode manual"
    },
    {
      "request": "programmieren",
      "message": [
        "Wann soll die Wäsche fertig sein?",
        "Bitte Uhrzeit in HH:MM angeben.",
        "Aktuell ist [Waschkeller_washer_controlUnit:time] eingestellt."
      ],
      "keyboard": [
        ["bestätigen", "abbrechen"],
        ["00:00", "00:15", "00:30", "00:45"],
        ["01:00", "01:15", "01:30", "01:45"],
        ["02:00", "02:15", "02:30", "02:45"],
        ["03:00", "03:15", "03:30", "03:45"],
        ["04:00", "04:15", "04:30", "04:45"],
        ["05:00", "05:15", "05:30", "05:45"],
        ["06:00", "06:15", "06:30", "06:45"],
        ["07:00", "07:15", "07:30", "07:45"],
        ["08:00", "08:15", "08:30", "08:45"],
        ["09:00", "09:15", "09:30", "09:45"],
        ["10:00", "10:15", "10:30", "10:45"],
        ["11:00", "11:15", "11:30", "11:45"],
        ["12:00", "12:15", "12:30", "12:45"],
        ["13:00", "13:15", "13:30", "13:45"],
        ["14:00", "14:15", "14:30", "14:45"],
        ["15:00", "15:15", "15:30", "15:45"],
        ["16:00", "16:15", "16:30", "16:45"],
        ["17:00", "17:15", "17:30", "17:45"],
        ["18:00", "18:15", "18:30", "18:45"],
        ["19:00", "19:15", "19:30", "19:45"],
        ["20:00", "20:15", "20:30", "20:45"],
        ["21:00", "21:15", "21:30", "21:45"],
        ["22:00", "22:15", "22:30", "22:45"],
        ["23:00", "23:15", "23:30", "23:45"],
        ["24:00", "24:15", "24:30", "24:45"]
      ],
      "reply": [{
        "request": "bestätigen",
        "message": [
          "Das Zeitprogramm wurde eingestellt.",
          "Die Wäsche wird voraussichtlich um [Waschkeller_washer_controlUnit:time] Uhr fertig sein.",
          "Bitte die Waschmaschine vorbereiten.",
          "",
          "/heimdall"
        ],
        "commands": "set $controlUnit controlMode auto"
      },
      {
        "request": "([0-1][0-9]|2[0-3]):[0-5][0-9]",
        "message": [
          "Das Zeitprogramm wurde eingestellt.",
          "Die Wäsche wird voraussichtlich um [Waschkeller_washer_controlUnit:time] Uhr fertig sein.",
          "Bitte die Waschmaschine vorbereiten.",
          "",
          "/heimdall"
        ],
        "commands": [
          "set Waschkeller_washer_controlUnit time [TelegramBot:msgText]",
          "set $controlUnit controlMode auto"
        ]
      }]
    },
    {
      "request": "einschalten",
      "commands": [
        "set $controlUnit controlMode manual",
        "set $actor on"
      ]
    },
    {
      "request": "Verlaufsdiagramm",
      "message": [
        "{plotAsPng('Waschkeller_washer_SVG')}",
        "/heimdall"
      ]
    }
  ]
}

Dabei kann man dann auch einigermaßen gut den ganzen Dialog überblicken.

Aber so ganz ausgereift ist das halt immer noch nicht.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

RoBra81

Darf ich fragen, was dir bei der Syntax fehlt?

Gesendet von meinem SM-G935F mit Tapatalk