Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]: signal-rest-api: Nachricht mit Bild senden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[gelöst]: signal-rest-api: Nachricht mit Bild senden

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 3 Kommentatoren 357 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • CodierknechtC Offline
    CodierknechtC Offline
    Codierknecht
    Developer Most Active
    schrieb am zuletzt editiert von Codierknecht
    #1

    Mahlzeit!
    Heute bräuchte ich mal wieder eure Hilfe.

    Ich habe auf meiner Synology einen Docker-Container mit dem signal-rest-api laufen.
    Das Versenden von Nachrichten funktioniert damit wunderbar.

    Jetzt scheitere ich aber leider daran, auch Nachrichten mit einem Bild zu versenden.

    Ich mache das mit folgendem Code:

    var fs = require('fs');
    
    var base64File = '';
    
    function toBase64(filePath) {
      const img = fs.readFileSync(filePath);
      return Buffer.from(img).toString('base64');
    }
    
    function sendSignalTest(message, recipients, attachment = '') {
    
        if (attachment == '') {
            var sendParams = {
                url: 'http://192.168.178.5:8086/v2/send',
                headers: {'Content-Type': 'application/json'},
                body: '{"message": "' + message + '", "number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
            };
        } else {
            base64File = toBase64(attachment);
            var sendParams = {
                url: 'http://192.168.178.5:8086/v2/send',
                headers: {'Content-Type': 'application/json'},
                body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
            };
        }
    
        request.post(sendParams, function(error, response, body) {
            if (error) {
                console.error(error);
            } else {
                if(response.statusCode == 200) {
                    console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                } else {
                    console.log(response.body);
                }
            }
        });
    }
    
    sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
    

    Beim Versenden erhalte ich leider folgende Fehlermeldung:

    14:11:36.629	info	javascript.0 (640) script.js.test.SignalTest: {"error":"Couldn't process request - invalid request"}
    

    Es liegt entweder an der Art und Weise, wie das (Base64-codierte) Bild in die Parameter geprömpelt wird, oder an der Codierung der Datei.

    Wo ist hier der Fehler?
    Kann mir da mal jemand Licht ans Fahrrad machen?

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
    HmIP|ZigBee|Tasmota|Unifi
    Zabbix Certified Specialist
    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

    CodierknechtC haus-automatisierungH 2 Antworten Letzte Antwort
    0
    • CodierknechtC Codierknecht

      Mahlzeit!
      Heute bräuchte ich mal wieder eure Hilfe.

      Ich habe auf meiner Synology einen Docker-Container mit dem signal-rest-api laufen.
      Das Versenden von Nachrichten funktioniert damit wunderbar.

      Jetzt scheitere ich aber leider daran, auch Nachrichten mit einem Bild zu versenden.

      Ich mache das mit folgendem Code:

      var fs = require('fs');
      
      var base64File = '';
      
      function toBase64(filePath) {
        const img = fs.readFileSync(filePath);
        return Buffer.from(img).toString('base64');
      }
      
      function sendSignalTest(message, recipients, attachment = '') {
      
          if (attachment == '') {
              var sendParams = {
                  url: 'http://192.168.178.5:8086/v2/send',
                  headers: {'Content-Type': 'application/json'},
                  body: '{"message": "' + message + '", "number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
              };
          } else {
              base64File = toBase64(attachment);
              var sendParams = {
                  url: 'http://192.168.178.5:8086/v2/send',
                  headers: {'Content-Type': 'application/json'},
                  body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
              };
          }
      
          request.post(sendParams, function(error, response, body) {
              if (error) {
                  console.error(error);
              } else {
                  if(response.statusCode == 200) {
                      console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                  } else {
                      console.log(response.body);
                  }
              }
          });
      }
      
      sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
      

      Beim Versenden erhalte ich leider folgende Fehlermeldung:

      14:11:36.629	info	javascript.0 (640) script.js.test.SignalTest: {"error":"Couldn't process request - invalid request"}
      

      Es liegt entweder an der Art und Weise, wie das (Base64-codierte) Bild in die Parameter geprömpelt wird, oder an der Codierung der Datei.

      Wo ist hier der Fehler?
      Kann mir da mal jemand Licht ans Fahrrad machen?

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      Die Base64-Codierung schließe ich fast aus.
      Wenn ich das Bild online durch einen Dienst codieren lasse, sieht das Ergebnis identisch aus.

      JS:
      /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko+MzZGNywtQFdBRkxOUlNSMj5aYVpQYEpRUk//2wBDAQ4ODhMREyYVFSZP...AAAAAAAAAAAAAAAAD/2Q==
      
      Online:
      /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4pLSwzOko+MzZGNywtQFdBRkxOUlNSMj5aYVpQYEpRUk//2wBDAQ4ODhMREyYVFSZP...AAAAAAAAAAAAAAAAD/2Q==
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        Mahlzeit!
        Heute bräuchte ich mal wieder eure Hilfe.

        Ich habe auf meiner Synology einen Docker-Container mit dem signal-rest-api laufen.
        Das Versenden von Nachrichten funktioniert damit wunderbar.

        Jetzt scheitere ich aber leider daran, auch Nachrichten mit einem Bild zu versenden.

        Ich mache das mit folgendem Code:

        var fs = require('fs');
        
        var base64File = '';
        
        function toBase64(filePath) {
          const img = fs.readFileSync(filePath);
          return Buffer.from(img).toString('base64');
        }
        
        function sendSignalTest(message, recipients, attachment = '') {
        
            if (attachment == '') {
                var sendParams = {
                    url: 'http://192.168.178.5:8086/v2/send',
                    headers: {'Content-Type': 'application/json'},
                    body: '{"message": "' + message + '", "number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
                };
            } else {
                base64File = toBase64(attachment);
                var sendParams = {
                    url: 'http://192.168.178.5:8086/v2/send',
                    headers: {'Content-Type': 'application/json'},
                    body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'
                };
            }
        
            request.post(sendParams, function(error, response, body) {
                if (error) {
                    console.error(error);
                } else {
                    if(response.statusCode == 200) {
                        console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                    } else {
                        console.log(response.body);
                    }
                }
            });
        }
        
        sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
        

        Beim Versenden erhalte ich leider folgende Fehlermeldung:

        14:11:36.629	info	javascript.0 (640) script.js.test.SignalTest: {"error":"Couldn't process request - invalid request"}
        

        Es liegt entweder an der Art und Weise, wie das (Base64-codierte) Bild in die Parameter geprömpelt wird, oder an der Codierung der Datei.

        Wo ist hier der Fehler?
        Kann mir da mal jemand Licht ans Fahrrad machen?

        haus-automatisierungH Online
        haus-automatisierungH Online
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @codierknecht sagte in signal-rest-api: Nachricht mit Bild senden:

                body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'                                                                                                                                                                            
        

        Also ich bin ja immer Fan davon, JSON-Strings NICHT manuell zusammenzubauen, sondern die entsprechenden Funktionen dafür zu nutzen. Sonst sind wieder irgendwelche Anführungszeichen falsch o.ä.

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        haus-automatisierungH HomoranH 2 Antworten Letzte Antwort
        0
        • haus-automatisierungH haus-automatisierung

          @codierknecht sagte in signal-rest-api: Nachricht mit Bild senden:

                  body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'                                                                                                                                                                            
          

          Also ich bin ja immer Fan davon, JSON-Strings NICHT manuell zusammenzubauen, sondern die entsprechenden Funktionen dafür zu nutzen. Sonst sind wieder irgendwelche Anführungszeichen falsch o.ä.

          haus-automatisierungH Online
          haus-automatisierungH Online
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von haus-automatisierung
          #4

          Ich nehme an, dass die recipients falsch sind und sicherlich auch in Anführungszeichen müssen. Also

          body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": ["' + recipients + '"]}'
          

          Aber wie gesagt...

          const fs = require('fs');
           
          function toBase64(filePath) {
              const img = fs.readFileSync(filePath);
              return Buffer.from(img).toString('base64');
          }
          
          function sendSignalTest(message, recipients, attachment) {
              const reqBody = {
                  message,
                  number: '+491571234567',
                  recipients: [recipients],
              };
           
              if (attachment) {
                  reqBody.base64_attachments = [toBase64(attachment)];
              }
          
              const sendParams = {
                  url: 'http://192.168.178.5:8086/v2/send',
                  headers: { 'Content-Type': 'application/json' },
                  body: JSON.stringify(reqBody),
              };
          
              request.post(sendParams, (error, response, body) => {
                  if (error) {
                      console.error(error);
                  } else {
                      if (response.statusCode == 200) {
                          console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                      } else {
                          console.log(response.body);
                      }
                  }
              });
          }
           
          sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
          

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          CodierknechtC 2 Antworten Letzte Antwort
          0
          • haus-automatisierungH haus-automatisierung

            @codierknecht sagte in signal-rest-api: Nachricht mit Bild senden:

                    body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": [ ' + recipients + ' ]}'                                                                                                                                                                            
            

            Also ich bin ja immer Fan davon, JSON-Strings NICHT manuell zusammenzubauen, sondern die entsprechenden Funktionen dafür zu nutzen. Sonst sind wieder irgendwelche Anführungszeichen falsch o.ä.

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #5

            @haus-automatisierung sagte in signal-rest-api: Nachricht mit Bild senden:

            irgendwelche Anführungszeichen

            Screenshot_20230913-144836_Firefox.jpg

            :thinking_face:

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • haus-automatisierungH haus-automatisierung

              Ich nehme an, dass die recipients falsch sind und sicherlich auch in Anführungszeichen müssen. Also

              body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": ["' + recipients + '"]}'
              

              Aber wie gesagt...

              const fs = require('fs');
               
              function toBase64(filePath) {
                  const img = fs.readFileSync(filePath);
                  return Buffer.from(img).toString('base64');
              }
              
              function sendSignalTest(message, recipients, attachment) {
                  const reqBody = {
                      message,
                      number: '+491571234567',
                      recipients: [recipients],
                  };
               
                  if (attachment) {
                      reqBody.base64_attachments = [toBase64(attachment)];
                  }
              
                  const sendParams = {
                      url: 'http://192.168.178.5:8086/v2/send',
                      headers: { 'Content-Type': 'application/json' },
                      body: JSON.stringify(reqBody),
                  };
              
                  request.post(sendParams, (error, response, body) => {
                      if (error) {
                          console.error(error);
                      } else {
                          if (response.statusCode == 200) {
                              console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                          } else {
                              console.log(response.body);
                          }
                      }
                  });
              }
               
              sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
              
              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @haus-automatisierung
              Du bist heute mein Held des Tages.
              Funktioniert einwandfrei. Tausend Dank!

              Hatte ich schon mal erwähnt, dass ich mit JS auf Kriegsfuß stehe? :grin: :grin: :grin:

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                Ich nehme an, dass die recipients falsch sind und sicherlich auch in Anführungszeichen müssen. Also

                body: '{"message": "' + message + '", "base64_attachments": ["' + base64File + '"],"number": "+491571234567", "recipients": ["' + recipients + '"]}'
                

                Aber wie gesagt...

                const fs = require('fs');
                 
                function toBase64(filePath) {
                    const img = fs.readFileSync(filePath);
                    return Buffer.from(img).toString('base64');
                }
                
                function sendSignalTest(message, recipients, attachment) {
                    const reqBody = {
                        message,
                        number: '+491571234567',
                        recipients: [recipients],
                    };
                 
                    if (attachment) {
                        reqBody.base64_attachments = [toBase64(attachment)];
                    }
                
                    const sendParams = {
                        url: 'http://192.168.178.5:8086/v2/send',
                        headers: { 'Content-Type': 'application/json' },
                        body: JSON.stringify(reqBody),
                    };
                
                    request.post(sendParams, (error, response, body) => {
                        if (error) {
                            console.error(error);
                        } else {
                            if (response.statusCode == 200) {
                                console.log('Signal-Nachricht an Empfänger ' + recipients + ' versendet!');
                            } else {
                                console.log(response.body);
                            }
                        }
                    });
                }
                 
                sendSignalTest('Test', '+491721234567', '/opt/iobroker/ipcam/snapshots/20230912111634.jpg');
                
                CodierknechtC Offline
                CodierknechtC Offline
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #7

                @haus-automatisierung
                By the way: Was macht Dein Speicher-Projekt? :sunglasses:

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                807

                Online

                32.4k

                Benutzer

                81.5k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe