<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Nextcloud Talk Bot mit iobroker nutzen]]></title><description><![CDATA[<p dir="auto">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.</p>
<ol>
<li>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.<br />
Beispiel:</li>
</ol>
<pre><code>openssl rand -hex 40
2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2
</code></pre>
<ol start="2">
<li>In Nextcoud einen Bot erstellen: per ssh oder Konsole auf Nextcloud verbinden und im nextcloud Verzeichnis ausführen (die Stelen mit &lt; &gt; markiert müssen mit Euren Werten ausgefüllt werden:</li>
</ol>
<pre><code>occ talk:bot:install --feature response &lt;BOT-Name&gt; &lt;40-Zeichen-langer-Key&gt; &lt;Nextcloud-URL&gt;
Antwort:
Bot installed
ID: 1
Abfragen des Bots:
occ talk:bot:list
+----+-------------+-------------+-------------+-------+----------+
| id | name        | description | error_count | state | features |
+----+-------------+-------------+-------------+-------+----------+
| 1  | iobrokerBot |             | 0           | 1     | response |
+----+-------------+-------------+-------------+-------+----------+
</code></pre>
<ol start="3">
<li>Installieren von npm-Modul crypto-js (wird von Javascript benötigt)</li>
</ol>
<pre><code>npm install crypto-js
</code></pre>
<ol start="4">
<li>
<p dir="auto">Nextcloud Bot mit Chat verbinden<br />
<img src="/assets/uploads/files/1783935847875-8918a2f9-9cbf-4fc6-9d63-25282a496494-image.jpeg" alt="8918a2f9-9cbf-4fc6-9d63-25282a496494-image.jpeg" class=" img-fluid img-markdown" /><br />
<img src="/assets/uploads/files/1783935884461-27440011-566f-4a56-b336-6cbec72c3af4-image.jpeg" alt="27440011-566f-4a56-b336-6cbec72c3af4-image.jpeg" class=" img-fluid img-markdown" /><br />
Den Bot aktivieren.</p>
</li>
<li>
<p dir="auto">Nutzen des Bot im Javascript Adapter oder Blockly, etc.<br />
In der Javascript Instanz:<br />
<img src="/assets/uploads/files/1783936523640-c789b040-ac6f-4ae0-b982-3538e60d0422-image.jpeg" alt="c789b040-ac6f-4ae0-b982-3538e60d0422-image.jpeg" class=" img-fluid img-markdown" /></p>
</li>
</ol>
<p dir="auto">Chat-ID herausfinden:<br />
<img src="/assets/uploads/files/1783936824082-30ada4fe-afaf-4b0c-bc0d-332a90fd8720-image.jpeg" alt="30ada4fe-afaf-4b0c-bc0d-332a90fd8720-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Beispielscript:</p>
<pre><code>const CryptoJS = require('crypto-js');
const fetch = require('node-fetch');

const sharedSecret = "2bc08cc50dcd11fbb48cc3645821eb6c18d458ea8f2d72226246bef05987efe64b9e4c0f0d5d2ca2";   // &lt;-- anpassen
const url = "https://&lt;Nextcloud-url&gt;/ocs/v2.php/apps/spreed/api/v1/bot/&lt;chat-id&gt;/message";     // &lt;--  Anpassen der: &lt;Nextcloud-url&gt; und &lt;chat-id&gt;
var TalkMessage = "ioBroker Bot - gestartet";  

// --&gt;
// 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!';		// &lt;-- Nachricht
   sendBotMessage();					// &lt;-- Absenden der Nachricht
});
// &lt;--


// 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();
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1783936867739-8a5111ac-0d3c-45fb-a7d6-b6c5fb7ad511-image.jpeg" alt="8a5111ac-0d3c-45fb-a7d6-b6c5fb7ad511-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><strong>Conclusion:</strong><br />
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.</p>
]]></description><link>https://forum.iobroker.net/topic/84966/nextcloud-talk-bot-mit-iobroker-nutzen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 15:06:12 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/84966.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Jul 2026 10:06:31 GMT</pubDate><ttl>60</ttl></channel></rss>