NEWS
Nextcloud Talk Bot mit iobroker nutzen
-
Seit kurzem unterstützt Nextcloud auch sogenannte Bot´s. Ich möchte hier zeigen, wie man den Nextcloud Bot erstellt und aus iobroker füttern kann.
- Der Bot benötigt zum Verschlüsseln der Kommunikation einen 40 Zeichen langen Key. Diesen Key kann man z.B. mit openssl generieren. Es geht aber auch ein eigen generierter Key.
Beispiel:
openssl rand -hex 40 2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2- In Nextcoud einen Bot erstellen: per ssh oder Konsole auf Nextcloud verbinden und im nextcloud Verzeichnis ausführen (die Stelen mit < > markiert müssen mit Euren Werten ausgefüllt werden:
occ talk:bot:install --feature response <BOT-Name> <40-Zeichen-langer-Key> <Nextcloud-URL> Antwort: Bot installed ID: 1 Abfragen des Bots: occ talk:bot:list +----+-------------+-------------+-------------+-------+----------+ | id | name | description | error_count | state | features | +----+-------------+-------------+-------------+-------+----------+ | 1 | iobrokerBot | | 0 | 1 | response | +----+-------------+-------------+-------------+-------+----------+- Installieren von npm-Modul crypto-js (wird von Javascript benötigt)
npm install crypto-js-
Nextcloud Bot mit Chat verbinden


Den Bot aktivieren. -
Nutzen des Bot im Javascript Adapter oder Blockly, etc.
In der Javascript Instanz:

Chat-ID herausfinden:

Beispielscript:
const CryptoJS = require('crypto-js'); const fetch = require('node-fetch'); const sharedSecret = "2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2"; // <-- anpassen const url = "https://<Nextcloud-url>/ocs/v2.php/apps/spreed/api/v1/bot/<chat-id>/message"; // <-- Anpassen der: <Nextcloud-url> und <chat-id> var TalkMessage = "ioBroker Bot - gestartet"; // --> // Hier z.B. auf Objekte reagieren und die Variable "TalkMessage" setzen // z.B. on("user.0.Testmeldung", function (obj) { console.log('Testnachricht gesendet'); TalkMessage = 'Testnachricht von ioBroker!'; // <-- Nachricht sendBotMessage(); // <-- Absenden der Nachricht }); // <-- // Zufallswert erzeugen (32 Zeichen) function generateRandomHeader() { return CryptoJS.lib.WordArray.random(32).toString(CryptoJS.enc.Hex); } // Signatur erzeugen function signMessage(sharedSecret, message, randomHeader) { const hmac = CryptoJS.HmacSHA256( CryptoJS.enc.Utf8.parse(randomHeader + message), CryptoJS.enc.Utf8.parse(sharedSecret) ); return hmac.toString(CryptoJS.enc.Hex); } async function sendBotMessage() { const messageData = { message: TalkMessage, silent: false }; const randomHeader = generateRandomHeader(); const digest = signMessage(sharedSecret, messageData.message, randomHeader); const headers = { "Content-Type": "application/json", "X-Nextcloud-Talk-Bot-Random": randomHeader, "X-Nextcloud-Talk-Bot-Signature": digest, "OCS-APIRequest": "true" }; const response = await fetch(url, { method: "POST", headers: headers, body: JSON.stringify(messageData) }); const result = await response.text(); console.log("Server Response:", result); } sendBotMessage();
Conclusion:
Ich bin gespannt, welche Funktionen in dem Nextcloud Bot noch realisiert werden. Aktuell kann er bereits auf Nachrichten antworten. Das hier soll nur aufzeigen, wie man den neuen Bot nutzen kann. Um Nachrichten zu Nextcloud zu senden gibt es aktuell den Adapter um als User Nachrichten zu senden. - Der Bot benötigt zum Verschlüsseln der Kommunikation einen 40 Zeichen langen Key. Diesen Key kann man z.B. mit openssl generieren. Es geht aber auch ein eigen generierter Key.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden