Impossible de connecter le plugin Telegram avec l'API

Bonjour,

Je galère depuis quelques jours avec le plugin Telegram. J’utilise le plugin depuis plusieurs mois déjà pour envoyer des notifications depuis Jeedom vers mon téléphone portable. Jusque là tout marchait bien, du moins pour l’utilisation que j’en faisais.

Il y a quelques jours, j’ai voulu essayer d’utiliser la fonction ASK dans mes scenarios pour interagir avec jeedom depuis telegram. Bien que les questions ASK arrivaient bien sur telegram, les réponses n’étaient pas prises en compte par jeedom.

N’ayant pas trouver de solution à ce problème, j’ai essayé de supprimer/recréer mon objet telegram dans jeedom. Depuis, impossible de connecter le nouvel objet avec l’API Telegram. J’ai tout essayé, j’ai réinstallé le plugin, j’ai créer un nouveau bot, j’ai même réinstallé l’API Telegram sur mon portable mais rien n’y fait, le contact ne remonte pas dans les commandes de l’objet telegram.

Voilà mon objet Telegram :
*

*

Côté santé, tout est au vert :

*

*

Je précise que j’utilise le DNS jeedom pour accéder de l’extérieur.

Quelqu’un aurait une idée? Car là j’avoue que je ne sais plus dans quelle direction chercher…

Cordialement,
Julien

Bonjour,

As tu un log avec un message d’erreur ?
Ça va être compliqué de deviner sinon.

Est ce que ton jeedom est accessible d’internet en HTTPS sur le port 443. C’est un prérequis a l’utilisation de ask

Bonjour,

Dans les log de Telegram, j’ai ce message d’erreur qui remonte quand je sauvegarde mon objet :

Sinon oui mon jeedom est bien accessible depuis internet en HTTPS avec le DNS Jeedom.

Verifie ta configuration Reseau dans les paramètres jeedom.
Mets nous une copie d’ecran de cette partie là.

Tu dois avoir un caractère qui ne passe pas,
typiquement un caractère utilisé dans un querystring (url), genre > < = ’ etc

Je viens de voir que le statut de mon DNS était « Démarré : https://:80 » et que l’option « désactiver la gestion du réseau par Jeedom » était cochée.

J’ai décoché l’option et redémarré le DNS, maintenant la bonne adresse en http apparaît dans le statut du DNS.

Voilà mes paramètres réseau :

Côté log, ça donne ça maintenant :

Ce qui semble mieux.

MAIS, toujours pas de contact qui remonte dans mon objet telegram… J’envoie des messages depuis le bot et rien ne se passe.

Vérifie que tu a bien coche creation d’utilisateur automatique dans ton objets telegram…
en tapant hello a ton bot il devrait répondre " je n’ai pas compris…" et ton user devrait apparaître…

Bon ben en fait non, en décochant l’option “désactiver la gestion du réseau par Jeedom”, j’ai la configuration réseau externe qui passe en NOK général au niveau santé, donc à priori faut laisser cocher :

Du coup je suis revenu en arrière et je me retrouve dans la situation précédente : log avec erreur 400 dans telegram…

:sob::sob::sob:

C’est bien coché, voir premier screen shot, j’avais déjà vérifier ce point là. Mais merci pour la remarque

Ma configuration réseau est la suivante :

C’est bon ou pas?

tu doit pas cocher " desactiver la gestion du réseau par jeedom…"

Tu dit que tu a recréer un BOt tu est sur de ton token?

C’est ce que je me disais aussi, mais si je décoche cette case, ma santé réseau externe passe en NOK.

Oui je suis sûr de mon token, j’ai fait un copier/coller et j’ai déjà revérifier il est bon

Avec le dns jeedom, je n’ai jamais coché cette case…

Bonjour tout le monde, il y a du nouveau sur le sujet?? Je suis dans le même cas :

  • Service Pack power pour bénéficier du DNS Jeedom avec https
  • Dans Jeedom, activation de la connexion DNS avec openvn. Le tout avec succès, j’obtiens bien mon adresse https://xxxx.dns3.jeedom.com
  • Création d’un bot sur Telegram et copie du Token
  • Installation du plugin Telegram dans Jeedom
  • Création d’un Equipement Telegram, dans lequel je colle le token relevé précédemment,

Comme @Lonewolf, lorsque j’écris un message au bot, rien ne se passe dans le plugin Jeedom. J’ai essayé de relancé le plugin plusieurs fois, de recréer l’équipement, de le réinstaller, d’enlever puis remettre la coche création automatique contact…

Rien n’y fait… ça ne veut pas fonctionner.
Dans Santé, le plugin semble indiquer que la connexion https est OK.

Voici le log telegram:

[2020-08-12 18:16:40][DEBUG] : https://xxxxxx.dns3.jeedom.com/plugins/telegram/core/api/jeeTelegram.php?apikey=j3FjUtEq3HIwHDaVZExPsptC4UhCqN7I&id=145
[2020-08-12 18:16:41][DEBUG] : {"ok":true,"result":true,"description":"Webhook is already set"}
[2020-08-12 18:16:41][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=telegram function=remove callInstallFunction=1
[2020-08-12 18:16:53][INFO] : Début d'activation du plugin
[2020-08-12 18:16:54][INFO] : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2020-08-12 18:16:54][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=telegram function=install callInstallFunction=1

Je ne sais plus quoi faire.

Merci de votre aide.

Je voulais aussi préciser que lorsque je tape des commandes avec curl à partir de jeedom (ssh), j’arrive à dialoguer avec mon bot.

Ainsi la commande :
curl 'https://api.telegram.org/botxxxxxxxxx:xxXxxXXXXxxXxXXXXXxXxXX/getUpdates?offset=0'

Me renvoie un résultat :

{"ok":true,"result":[{"update_id":243754104,
"message":{"message_id":5,"from":{"id":943789571,"is_bot":false,"first_name":"St\u00e9phane","last_name":"NOMFAMILLE","username":"mathojojo","language_code":"fr"},"chat":{"id":943789571
,"first_name":"St\u00e9phane","last_name":"NOMFAMILLE","username":"mathojojo","type":"private"},"date":1597182068,"text":"Yellow"}},{"update_id":243754105,
"message":{"message_id":6,"from":{"id":943789571,"is_bot":false,"first_name":"St\u00e9phane","last_name":"NOMFAMILLE","username":"mathojojo","language_code":"fr"},"chat":{"id":943789571
,"first_name":"St\u00e9phane","last_name":"NOMFAMILLE","username":"mathojojo","type":"private"},"date":1597182226,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"
}]}},{"update_id":243754106,

Pour moi, ça veut dire que ma config réseau est bonne, non ?? Par contre, mon prénom semble avoir un problème à cause de l’accent aigue (« Stéphane » devient « St\u00e9phane »). Est ce que ça peut venir de là? Le plugin n’arrive pas à interpréter ??

Bon, je pense avoir une piste.

En épluchant un peu le fonctionnement de Telegram, je vois qu’il peut fonctionner suivant 2 méthodes :

  • getUpdates
  • getWebhooks

A priori le plus adapté pour plus de réactivité c’est getWebhooks, et c’est cette méthode qui est utilisée au sein du plugin Jeedom.
Lorsqu’on configure notre Equipement Telegram avec le Token de notre bot, un lien va être donné au bot pour pousser les messages.
Dans mon log, on le voit c’est le fameux https://xxxxxx.dns3.jeedom.com/plugins/telegram/core/api/jeeTelegram.php?apikey=j3FjUtEq3HIwHDaVZExPsptC4UhCqN7I&id=145

ET le problème pour moi il est là. Parce que mon Jeedom est installé sur un serveur Openmediavault, qui utilise Nginx comme serveur Web (qui écoute sur le port 80), alors que Jeedom a installé un serveur apache 2 (qui écoute sur le port 8080). D’ailleurs pour accéder à mon Jeedom en local je dois taper ADRESSEIP:8008, sinon, ça me dirige directement sur l’interface de configuration de OpenmediaVault.
Or le lien Webhook ci dessus, n’est valide que par Apache2, par nGinx, l’arborescence est inconnue pour arriver au plugin Telegram (jeetelegram.php).

Il faut donc que je trouve un moyen sur openmediavault de rediriger le flux du dns jeedom vers le port 8008 sur Openmediavault. Vu mes faibles compétences en réseau… ça va finir par une installation sur un serveur virtuel, ou sur un RPI.

Je pense que tu touches quelques chose là mais c’est pas tout à fait ca: les domaines dnsX.jeedom.com arrive chez jeedom en 443 et ensuite passe par le vpn que ta box à ouvert; donc question:

  • est-ce que ton accès externe fonctionne? via l’url du dns jeedom.
    si oui, pas de raison que le bot ne puisse pas l’appeler, il s’en fou que ca soit ensuite sur le 80 ou 8080 ou 3618

edit: par contre, vire cette clé api et renouvelle là dans ta config, c’est une clé API utilisable depuis l’extérieur

edit2: d’ailleurs vérifié que ta clé api est bien active pour l’extérieur

1 « J'aime »

Et bien en fait c’était bien le problème, je viens de réussir à faire fonctionner le plugin :smiley:

Comme je disais, j’ai 2 serveurs installés :

  • Nginx (serveur par défaut de OpenMediaVault) qui écoute comme tout serveur sur le port 80 par défaut.
  • Apache2 (Installé par Jeedom), et que j’ai dû paramétrer sur un autre port, pour éviter des conflits avec Nginx.

Ce qui veut dire que par défaut l’URL fournie par le dns jeedom ouvrait Nginx.

@Mips : Oui mon accès externe fonctionnait très bien. Et oui, tu as raison, le bot s’en fout de ma config, il écoute sur ses ports prédéfinis et c’est tout. En revanche, le lien Webhook fourni donne accès à une arborescence virtuelle qui existe dans la configuration de Apache, mais qui n’existe pas dans celle de Nginx. Donc les notifications de mon bot n’arrivaient pas jusqu’au plugin Telegram de Jeedom.

Et, merci de t’inquiéter pour ma clé API, mais ce n’est pas celle de mon bot, donc rien de perso. C’est celle du plugin jeeTelegram.

Bref pour résoudre mon problème, j’ai fais quelque chose de très simple, j’ai inversé les ports d’écoute de mes 2 serveurs. Apache2 écoute désormais sur le port 80, alors que Nginx écoute sur l’autre port.

Tout con, mais diablement efficace !

qui est donc utilisable depuis n’importe ou pour appeler le plugin telegram… mais fait comme tu veux