Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

Scheduled Pinned Locked Moved JavaScript
7 Posts 3 Posters 357 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • CodierknechtC Online
    CodierknechtC Online
    Codierknecht
    Developer Most Active
    wrote on last edited by 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 Replies Last reply
    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 Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      wrote on last edited by
      #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 Reply Last reply
      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 Offline
        haus-automatisierungH Offline
        haus-automatisierung
        Developer Most Active
        wrote on last edited by
        #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 Replies Last reply
        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 Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          wrote on last edited by 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 Replies Last reply
          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 Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #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 Reply Last reply
            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 Online
              CodierknechtC Online
              Codierknecht
              Developer Most Active
              wrote on last edited by
              #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 Reply Last reply
              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 Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                wrote on last edited by
                #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 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                522

                Online

                32.4k

                Users

                81.5k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe