Bonjour à tous,
j’ai donc le même problème que vous.
En debuggant l’erreur renvoyée j’ai bien vu qu’il s’agissait d’un problème de protection de caractères.
TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
at new NodeError (internal/errors.js:322:7)
at new ClientRequest (_http_client.js:155:13)
at Object.request (http.js:94:10)
at Request.start (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:751:32)
at Request.write (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:1491:10)
at end (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:549:18)
at Immediate._onImmediate (/var/www/html/plugins/maillistener/resources/node_modules/request/request.js:578:7)
at processImmediate (internal/timers.js:464:21) {
code: 'ERR_UNESCAPED_CHARACTERS'
}
dans le fichier plugins/maillistener/resources/maillistener.js
, du coté de la ligne 84, on trouve l’appel à l’API Jeedom
apiurl = urlJeedom+'&type=maillistener&messagetype=mailIncoming&email='+email+'&from='+mail.from[0].address+'&subject='+mail.subject;
console.log(apiurl);
request({
url: apiurl,
method: 'PUT',
json: {"body": mail.text, "html": mail.html},
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('contact Jeedom avec retour :',response.statusCode);
}
});
Comme le sujet est intégré à cette URL et qu’il contient des simples quotes, il faut donc « échapper » la chaine. J’ai utilisé encodeURI
, il y a surement d’autres fonctions mais j’ai fait au plus vite surtout.
request({
url: encodeURI(apiurl),
method: 'PUT',
json: {"body": mail.text, "html": mail.html},
},
Avec cette modif et un restart du listener, je peux à nouveau utiliser mes scénarios liés à l’alarme.
J’epère que ça vous portera chance aussi
++