NEWS
JS zum senden über "Dockerized Signal Messenger REST API"
-
Hallo, ich muß als Neuling mal wieder was aufleben lassen.
Diesen Code hatte @Codierknecht 2023 zur Verfügung gestellt.function sendWithSignal(message, recipients) { var sendParams = { url: 'http://192.168.178.5:8086/v2/send', headers: {'Content-Type': 'application/json'}, body: '{"message": "' + message + '", "number": "+4915*****", "recipients": [ ' + recipients + ' ]}' }; request.post(sendParams, function(error, response, body) { if (error) { log(error); } else { log('Nachricht versendet!'); } }); }
Ich wollte diesen aufgrund mangelnder Codierkenntnisse auch nutzen.
Das funktioniert auch soweit, bis auf das dass Verfahren über request.post nicht mehr up to date ist.
Ich bin leider zu doof um das auf httpget oder fetch umzustellen.
Es wäre schön, wenn mir das jemand anpassen könnte ohne noch zusätzliche Pakete installieren zu müssen.
Vielen Dank
Klausimausi -
@klausimausi
Der Teil von Zeile 7 bis 13 sollte dann so aussehen:httpPost(url, reqBody, (error) => { if (error) { console.error(error) } else { console.log('Nachricht versendet!'); } });
-
@codierknecht
WoW! Schnell !
Da muss ich nochmal nachhaken.
Die Variable var sendParams brauche ich dann ja so nicht mehr. die URL kann ich da direkt eintragen
nur wie übergebe ich dann die benötigten Parameter an regBody?Danke Klausimausi
-
@klausimausi
So sieht meine Funktion komplett aus. Die kann auch Anhänge (Bilder) mitschicken.
Nur mit 'ner Nachricht aufgerufen, wird diese an den Standardempfänger (mich) versendet.
Man kann auch ein Array mitgeben - dann wird an mehrere Empfänger versendet.const url = 'http://192.168.179.13:8086/v2/send'; const fs = require('fs'); const mobileNumber = ['+49xxxxxx7']; function toBase64(filePath) { const img = fs.readFileSync(filePath); return Buffer.from(img).toString('base64'); } async function sendSignalMessage(message, recipients = mobileNumber, attachment = '') { const reqBody = { message, number: '+49xxxxxxx9', recipients: recipients, }; if (attachment != '') { const base64File = await toBase64(attachment); reqBody.base64_attachments = base64File; console.log('Sende Signal-Nachricht mit Anhang'); } httpPost(url, reqBody, (error) => { if (error) { console.error(error); } else { console.log('Nachricht versendet!'); } }); }
MOD EDIT: Private Handynummer unkenntlich gemacht
-
@codierknecht War mal so frei deine Handynummer unkenntlich zu machen.
-
@wendy2702
Danke - das waren logischerweise Phantasienummern -
@codierknecht
Danke ! Jetzt wird es klarer. Mal sehen ob ich das so in mein Script kriege.
MfG Klausimausi -
Also für heute gebe ich es auf.
Ich habe die attachments erstmal entfernt um die Fehlermeldung zu eleminieren, weil es kein (img) hatte.
Dann läuft das script ohne fehler durch und zeigt im LOG auch "Nachricht versendet!" an.
Nur am Empfänger kommt nichts an.MfG
-
@klausimausi
Du hast alsnumber
auch Deine Absendernummer eingetragen? -
@codierknecht
Ja. number ist die Absendenummer und mobileNumber als Zielnummer. Als message übergebe ich einen String mit Funktionsaufruf.httpPost Agrumente habe ich mir mal im log anzeigen lassen:
url --> http://192.168.33.33:8085/v2/send
reqBody--> {message:'Hallo Test',number:'+49xxxxxxx3',recipients:'+49xxxxxxxx9'} -
@klausimausi
Die Empfängernummer ist ein Array?recipients:['+49xxxxxxxx9']
-
@codierknecht
Yes ! Das Script sendet nun die Message. Im Log erhalte ichnun allerdings eine Fehlermeldung:error httpPost(url=http://192.168.33.33:8085/v2/send, error=timeout of 2000ms exceeded)
error timeout of 2000ms exceeded)Puh
MfG -
httpPost(url, reqBody, {timeout: 5000}, (error) => {
-
@codierknecht
Geschafft. Jetzt geht es! Nochmal ei dickes Lob!
MfG