Telegram

Bonjour,

Pour faire suite au sujet de marmoul sur gammu, j’aimerais avoir un package Télégram pour que je puisse envoyer des messages à mon portable depuis Constellation et surtout recevoir des réponses.

L’intérêt de Télégram c’est qu’on peut envoyer des réponses prédéfinis, il reste plus qu’à cliquer sur la réponse.

Peut être que certains l’utilise pour jeedom par exemple.

Du coup j’ai regardé un peu comment ça se passait, il faut utiliser l’API bot. Pour ça il faut une connexion HTTPS au bot.

Première question, comment un package peut avoir une adresse https ?

Je confirme l’interet De Telegram de mon côté :slight_smile:
Un super projet éventuel.

Hello Hydro,

Pour répondre à ta question : comment est-ce qu’un package Constellation peut exposer un service HTTP ?

Nativement on ne peut pas, du moins Constellation expose des API REST (https://developer.myconstellation.io/client-api/rest-api/) qui permet, via une URI HTTP/HTTPS, de consommer la Constellation (s’abonner à des SO ou envoyer et recevoir des MC), de manager la Constellation (Management API) ou bien de créer des packages virtuels pour publier des SO ou en consommer, envoyer/recevoir des messages ou meme exposer des MC, produire des logs, etc…

C’est ce qu’on peut faire “nativement”. Ainsi n’importe quel systeme avec la possibilité de faire des call HTTP peut être un package virtuel ou bien consommer la Constellation.

Par contre dans ton cas, l’API Telegram, ou c’est la même chose avec des API comme celle de Google Assistant ou Google Action, ont une notion de WebHook.

C’est a dire que ton service HTTP doit respecter un certain contrat. Ainsi ce n’est pas le client (Telegram) qui s’adapte au service (Constellation) mais l’inverse, le service qui doit s’adapter au client ! Or nativement, les API REST Constellation sont standardisées !

De ce fait, il faut en effet créer un package (cad une application specifique) qui créera un service HTTP spécifique à tel ou telle API, dans ton cas à Telegram pour implémenter le protocole/API de Telegram et faire en sorte d’avoir un package connecteur entre Constellation et Telegram.

On peut donc utiliser le SDK Constellation pour créer un package Constellation en .NET/C# ou en Python qui créera un service HTTP pour traiter les requêtes entrantes de Telegram (ou autre).

Bien entendu, ca oblige à ouvrir manuellement les ports de son routeur pour rediriger un port TCP spécifique vers l’IP de la sentinelle sur laquelle est déployé ce package.

Je vais y réfléchir, mais on (ou je ;)) pourrait créer un package “Http Proxy” qu’on déploierait une bonne fois pour toute dans une Constellation (avec config manuelle de la redirection de port voire même à y intergrer l’UPnP pour une auto configuration si routeur compatible) et qui lui redirigerait le trafic HTTP vers les autres packages voulant exposer des endpoint (en gros un Reverse Proxy HTTP as a Package).

A+

Merci pour ces explications mais malheureusement je ne pense pas avoir les capacités pour faire de genre de chose.

En tout cas si tu fais ce genre de package et qu’on peut utiliser Telegram avec Constellation après, le résultat peut être vraiment sympa.

Bien noté, je vais creuser ca

Des nouvelles de se côté la ?

Salut les gars,

Je reagis sur le sujet, effectivement un RPaaS serait interessant, mais dans ce cas, pourquoi ne pas implementer un Nginx/HaProxy/ARR directement ?

Par contre sur le uPnP je suis pas trop pour, cote secu c’est quand meme bien moisi :slight_smile:

Autre point, Hydro, as tu regarder TLSharp ? https://github.com/sochix/TLSharp
D’apres le code que j’ai vu que tu as fait je pense que l’utilisation de cette lib est largement dans tes cordes :wink:
Des que ton device est enregistrer, normalement tu recois des messages via Push et tu dois pouvoir les envoyer vers Constellation via un MessageCallBack

Etienne
(desoler pour l’orthographe, les accents sur du qwerty, c’est pas la joie :))

Salut.

Merci de ton intérêt. Ce que je comprends pas c’est comment avoir un accès https vers Constellation pour utiliser un bot ?

Pour un serveur wamp sur port 80 je vois comment faire mais pour un package de Constellation je vois pas.

Si ton bot fait les calls lui même vers l’api rest de constellation tu peux installer chez toi un nginx, apache ou ARR ou un autre reverse proxy pour éviter d’exposer ta constellation en http. C’est pour moi une solution propre.
Dans le cas où c’est l’inverse, et que tu appelle le web service du bot de constellation, ça changera pas grand chose. Ton appel dans un package c# sera via le httpclient, webclient ou autre qui supportent bien le https.

De mon côté, je reste un peu ‘septique’ des cas d’usages d’un reverse proxy gérer par constellation, surtout en .NET qui imposerait de facto un server web. Node.JS intégre plus ou moins le sien, python propose des modules qui le font déjà très bien. Je pense que c’est plus cohérent de configurer via constellation éventuellement mais sans pour autant refaire la roue et la route :grinning: