NEWS
[gelöst]: signal-rest-api: Nachricht mit Bild senden
-
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? -
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?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== -
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?@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.ä.
-
@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.ä.
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'); -
@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-automatisierung sagte in signal-rest-api: Nachricht mit Bild senden:
irgendwelche Anführungszeichen


-
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');@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?

-
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');@haus-automatisierung
By the way: Was macht Dein Speicher-Projekt?
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