NEWS
Hilfe bei der Script erstellung
-
@t0bit3ch
muss beim token noch das 'Bearer' voran? -
@t0bit3ch
Ja, bearer muss noch davor.
Vergleiche die Notation mit dem pdf. Genau so muss es raus.
sonst sieht es schon mal gut aus. Die Abfragen sind raus gegangen. -
@oliverio
Wie muss ich es denn schreiben? Ich hatte schon ein paar Sachen probiert, aber leider ohne Erfolg -
@t0bit3ch
es müsste eigentlich so richtig sein:{ headers: { 'Content-Type': 'text/plain', 'Authorization': 'Bearer ' + token, } })
-
Guten morgen,
ich habe bei den versuchen das Bearer in den code mit einzubauen das + vergessen
'authorization': 'Bearer ' + token,
ich habe den code jetzt so angepasst
const axios = require('axios'); function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', password: 'PASSWORD' },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json', } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token) } }) .catch(function (error) { console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": "Testnachricht", "recipients": [ { "serviceName": "eCityruf", "identifier": "********" } ] },{ headers: { 'Content-Type': 'text/plain', 'Authorization': 'Bearer ' + token, } }) .catch(function (error) { console.log(error); }); } auth();
doch leider bekomme ich noch folgende log
info javascript.0 (31387) script.js.Pager_Alarmierung.emessage_Send_3: registered 0 subscriptions and 0 schedules info javascript.0 (31387) script.js.Pager_Alarmierung.emessage_Send_3: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:260:11)\n at IncomingMessage.emit (events.js:326:22)\n at IncomingMessage.EventEmitter.emit (domain.js:483:12)\n at endReadableNT (_stream_readable.js:1241:12)\n at processTicksAndRejections (internal/process/task_queues.js:84:21)','config':{'url':'https://api.emessage.de/rs/eSendMessages','method':'post','data':'{\'messageText\':\'Testnachricht\',\'recipients\':[{\'serviceName\':\'eCityruf\',\'identifier\':\'5201709\'}]}','headers':{'Content-Type':'text/plain','Authorization':'Bearer ighndoönhgdboknbgoföänkjhäpsofmjsponmgbpoikfgnbäkmövkömnfpidsahfiohgniocjro#eiutv0gßreitéß049u48w+9r5uiq0´rwjkefgirgjzh+09vujr5tßhbz iüjvpoawxkjxe2','User-Agent':'axios/0.21.1','Content-Length':96},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1}}
und der pager bleibt auch ruhig.
-
@t0bit3ch sagte in Hilfe bei der Script erstellung:
axios.post('https://api.emessage.de/rs/eSendMessages',{
In der PDF steht das die Adresse:
axios.post('https://api.emessage.de/api/eSendMessages',{
-
@ticaki
Das ist korrekt, funktioniert aber leider nicht. Wenn man sich in der PDF die Screenshots des Postman Programms anschaut sieht man die funktionierende Adresse. Hatte es im Script aber auch schon mit beiden probiert. -
@T0biT3ch
Zeig nochmal die postman Informationen zum 2. request
Der funktioniert hat -
@oliverio
hier der code zum holen des tokenvar axios = require('axios'); var data = JSON.stringify({ "username": "USERNAME", "password": "PASSWORD" }); var config = { method: 'post', url: 'https://api.emessage.de/auth/login', headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
es scheint als würde dieser teil in deinem code funktionieren, da die log beim ausführen ja einen token ausgibt.
und das ist der code zum senden der nachrichten
var axios = require('axios'); var data = JSON.stringify({ "messageText": "Testnachricht", "recipients": [ { "serviceName": "eCityruf", "identifier": "********" } ] }); var config = { method: 'post', url: 'https://api.emessage.de/rs/eSendMessages', headers: { 'Authorization': 'Bearer hgöfhogsioghösibnovdjuös<opriheourhweidjmanspkf<gob vuodsöahgbfdosuib0dsifohw84u0ü93rhfouisjhbgnvsoifedsökgpfingüer4984utißqü+äowfmägjhipoqehwfüouasdhgousgjohugurhgjiwehfgiwhfwquhbdcasukojgbhikgögloadfjasfghitiu<fbghkjybgvidfgdhfhgkjhlkzthgtzjklioölzfkdtjrhgstgfzhjui.k,mnjhbgvfadeshgjm', 'Content-Type': 'application/json' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
-
@t0bit3ch
Content/Type ist anders -
@ticaki sagte in Hilfe bei der Script erstellung:
@t0bit3ch
Content/Type ist andersES FUNKTIONIERT
Vielen Vielen Vielen dank euch.const axios = require('axios'); function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', password: 'PASSWORD' },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json', } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token) } }) .catch(function (error) { console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": "Testnachricht", "recipients": [ { "serviceName": "eCityruf", "identifier": "********" } ] },{ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token, } }) .catch(function (error) { console.log(error); }); } auth();
eine kleine frage hätte ich noch um die sache perfekt zu machen
wie kann ich bei"messageText": "Testnachricht",
den Text "Testnachricht" durch den wert aus einem datenpunkt ersetzen?
-
genauso wie du den token an die nachricht anfügst.
du ersetzt die stelle mit einer variable und belegst die variable mit deinem nachrichtentext -
@oliverio sagte in Hilfe bei der Script erstellung:
genauso wie du den token an die nachricht anfügst.
du ersetzt die stelle mit einer variable und belegst die variable mit deinem nachrichtentextich habe den code jetzt so angepasst, aber er schmeißt mir nur fehler
const axios = require('axios'); var alarmmeldung = getState"javascript.0.emmesage.alarmtext".val; function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', //* E*Message Benutzername */ password: 'PASSWORD' //* E*Message Kennwort */ },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json', } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token) } }) .catch(function (error) { console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": alarmmeldung, //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */ "recipients": [ { "serviceName": "eCityruf", //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */ "identifier": "*******" //* E*Message Funkrufnummer */ } ] },{ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token, } }) .catch(function (error) { console.log(error); }); } auth();
error javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1 compile failed: at script.js.Pager_Alarmierung.emessage_send_test1:2
-
@t0bit3ch
Steht doch dain Zeile 2 ist ein Fehler. Da fehlen die Klammer setState().val
-
@ticaki
wenn ich es so machevar alarmmeldung = getState("javascript.0.emmesage.alarmtext").val;
bekomme ich den log
warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:2:20 21:09:20.934 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:49:3 21:09:20.935 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: registered 0 subscriptions and 0 schedules 21:09:21.235 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:260:11)\n at IncomingMessage.emit (events.js:326:22)\n at IncomingMessage.EventEmitter.emit (domain.js:483:12)\n at endReadableNT (_stream_readable.js:1241:12)\n at processTicksAndRejections (internal/process/task_queues.js:84:21)','config':{'url':'https://api.emessage.de/rs/eSendMessages','method':'post','data':'{\'messageText\':null,\'recipients\':[{\'serviceName\':\'eCityruf\',\'identifier\':\'*******\'}]}','headers':{'Content-Type':'application/json','Authorization':'Bearer TOKEN','User-Agent':'axios/0.21.1','Content-Length':85},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1}}
aber in zeile 3 steht ja garnichts
-
@t0bit3ch
In Zeile 3 steht die Funktion in der eine Warnung ausgelöst wird. In Zeile 20 rufst du console.log(error) auf. Keine Ahnung was in error drin steht, aber scheinbar kann die log funktion das nicht verarbeiten. -
hab es jetzt so probiert
var alarmmeldung = "javascript.0.E_Message.Alarmtext";
"messageText": getState(alarmmeldung).val,
jetzt kommt kein fehler mehr im log aber der pager wird auch nicht mehr ausgelöst
-
@t0bit3ch
Versuche mal folgende:const axios = require('axios'); var alarmmeldung = getState("javascript.0.emmesage.alarmtext").val; if (typeof alarmmeldung !== 'string' || alarmmeldung == '') log('das ist kein string'); log(alarmmeldung); function auth() { axios.post('https://api.emessage.de/auth/login',{ username: 'USERNAME', //* E*Message Benutzername */ password: 'PASSWORD' //* E*Message Kennwort */ },{ headers: { 'Authorization': 'Basic Og==', 'Content-Type': 'application/json' } }).then(function (response) { if (response.status==200) { var token = response.data.data.jwt; sendMessage(token); } }) .catch(function (error) { log('fehler in post'); console.log(error); }); } function sendMessage(token) { axios.post('https://api.emessage.de/rs/eSendMessages',{ "messageText": alarmmeldung + ' ', //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */ "recipients": [ { "serviceName": "eCityruf", //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */ "identifier": "*******" //* E*Message Funkrufnummer */ } ] },{ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token } }) .catch(function (error) { log('fehler in send'); console.log(error); }); }
Das bekommen wir schon ans laufen
EDIT: Da waren noch ein paar Komma drin, die da nichts zu suchen haben. -
@ticaki
jetzt kommt das in der loginfo javascript.0 (13740) Start javascript script.js.Pager_Alarmierung.emessage_send_test2 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:2:20 warn javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:49:3 info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: das ist kein string info javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: registered 0 subscriptions and 0 schedules
-
Was steht in "javascript.0.emmesage.alarmtext"? Ist der Datenpunkt als String definiert?
füge in Zeile 4 folgendes ein:
log(alarmmeldung);
Du hättest jetzt aber entweder mehr Logmeldungen oder eine pagernachricht bekommen sollen. Ich hab oben den Code editiert.