Open lexrosenot opened 4 years ago
If you would alter the token you would need to restart the bot... is that what you want?
Hello. no, what I want is that a person who generates his own bot from telegram can configure the token of his own bot from the nodered dashboard. it's possible ?.
Thanks for your reply
No that is not possible, it would be only through a restart of node red. Maybe I will add this in future but it is not of the highest priority right now.
Hi, I am also looking for a way to set the token in run-time. My use case is similar to @lexrosenot (I think) : the user doesn't have access to the Node-RED Telegram configuration node and will enter his/her token in another simplified user interface. I understand that you 're not planning to do this in the near future, do you mind hinting where I would add it temporarily (while waiting for your proper implementation) ?
No not really as the bot is started when deployed. Even if you could alter the value you would need to deploy the changes
Thank you @windkh , this is my case : it's an embedded system and I have full control over all files and I can restart the Node-Red run-time. I could 1) modify/replace NR source files or 2) write the token to a config file and finally restart NR Which approach would be the easiest and which file(s) should I aim for. Thank you for a great and stable node implementation, we'll make donation ProKNX when it works
@jenskastensson I have several ideas how to lazy initialize the bot when the token is not set in the config node. But implementing it would definately take some time. Or do you rather need a quick hack to get some prototype up and running?
It depends on when it would be available: If you think it could be available within a month - I can wait If it is longer, then I can live with a hack (or hack my self with your guidance)
Let‘s start finding a nice solution by gathering some ideas... I would appreciate if anybody else would also provide his thoughts:
Idea 1: instead of entering the token directly I could read it from an external config file. You would enter the full path to the file instead of the token in the config node
Idea 2: I could read the token from an environment variable like reading from a file# :heavy_check_mark: implemented in version 8.6.0
Idea 3: this could also work somehow (https://flows.nodered.org/flow/6fe183c197b3464a1fe4d89744e068ff) but the bot would need to be triggered to reinitialize somehow.
Idea 4: token in config is empty. The token is injected into the node via the msg object. Some predecessor in the flow would have to set this value at least in one initial message
Idea 5: create a new config node which can be placed in the flow and controlled from e.g. an inject node. This one would be just a proxy to the real config node in the sidebar. Restarts could be done too, when the bot has a problems with the network.
Idea 6: hack: enter a placeholder in the token field. Search an replace this placeholder in the config file of nodred before restarting the nodered instance. :x: this is not better than Idea 2
.... what solution would you like most?
Any solution is fine for me, but is has to be possible to set it even if it's not empty.
Idea 7: could be to use the Dynamic auth that you have implemented for usernames {global.get("telegramtoken")}
(edit: windkh: :x: this won't work as the flow is initialized after the bot is started)
Personally, I think passing it on with the msg variable is the most commonly used method. But then I don't have the full picture.
Idea 7 could be done in addition to others. :x: does not work
@lexrosenot What do you think?
BTW I will use it for a chatbot for Home Automation: PRATGLAD for Trådfri, https://pratglad.com Here's a video https://www.youtube.com/watch?v=IuBVU6duVDM The chatbot backend input is feed to an offline Voice recognition NLU by Snips/SONOS, pretty cool, isn't it? We're struggling to explain that is in fact a superior solution than Alexa and Google Home, it respects users privacy.
Nice I did something similar... what speech to text engine did you use? ... ah just saw it. We used rasa ... also very nice
We're using Snips, now SONOS
On Sat, Sep 5, 2020 at 2:40 PM Karl-Heinz Wind notifications@github.com wrote:
Nice I did something similar... what speech to text engine did you use
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-687605542, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQMNMUXRT4ZPZH6KHCLSEIWTXANCNFSM4QP76Y6A .
@lexrosenot What do you think?
Hello guys, My case is similar to that of @jenskastensson , it is an embedded system, but in a raspberry pi where node-red runs and works as an orchestrator of independent modules (esp8266/esp32) through the mqtt protocol, being able to control this from the dashboard or telegram. I think that idea 4 is the one that best adapts and simplest at the node configuration level.
Idea 7 does not work with global context variables as the bot is started upon deployment and thus is initialized before the flow is started. This won't work
Idea 2: Instead of reading the value from a context variable in the flow it is read from the environment as follows
The only drawback would be that you would have to enter the variable into the settings.js of node-red before you start node-red.
:heavy_check_mark: Idea 2 is implemented in version 8.6.0
Excellent, I'll have go tomorrow
On Sun, Sep 6, 2020 at 2:20 PM Karl-Heinz Wind notifications@github.com wrote:
Idea 8 is implemented in version 8.6.0
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-687774886, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQNBRAUVO5PGPA34LBLSEN47LANCNFSM4QP76Y6A .
Couldn't wait so tried it today.. It seems I have a problem: Node-RED v0.20.7 (the user base is on this version) I've updated node-red-contrib-telegrambot to 8.6.0 (shown in Palette) Entered a token manually in the UI to confirm it works, then replaced the token with {env.get("BOT_TOKEN")} Edited the settings.js file and added process.env.BOT_TOKEN = "61648djsjd...."; on the first line. Restarted Node-RED (tried to reboot the system too) but I only see "polling error" in the status field. I verified that the env var is ok by adding a Inject node which reads $BOT_TOKEN and send to debug output The browser runs at very high CPU when the polling error happens, tis will potentially be a problem for my usres too. Most of them will not use the Telegram node, and so they will have the {env.get("BOT_TOKEN")} and and empty env variable. Do you have any ideas what goes wrong here and how I can troubleshoot it? Thanks for your efforts
Hm... I will check what happens when the variable is not set or not present
if the environment variable is not found (does not exist) you get the following:
If the environment variable is found and contains a valid key you get the following:
If the token is not valid you will get a polling error which is reset after a while.... right now it returns to green state "polling" which is wrong. I will improve this so that it will look like this
If the environment variable is empty then you get the following:
Couldn't wait so tried it today.. It seems I have a problem: Node-RED v0.20.7 (the user base is on this version) I've updated node-red-contrib-telegrambot to 8.6.0 (shown in Palette) Entered a token manually in the UI to confirm it works, then replaced the token with {env.get("BOT_TOKEN")} Edited the settings.js file and added process.env.BOT_TOKEN = "61648djsjd...."; on the first line. Restarted Node-RED (tried to reboot the system too) but I only see "polling error" in the status field. I verified that the env var is ok by adding a Inject node which reads $BOT_TOKEN and send to debug output The browser runs at very high CPU when the polling error happens, tis will potentially be a problem for my usres too. Most of them will not use the Telegram node, and so they will have the {env.get("BOT_TOKEN")} and and empty env variable. Do you have any ideas what goes wrong here and how I can troubleshoot it? Thanks for your efforts
I can't reproduce your problem. I am using the following environment: npm 6.4.1 node-red 1.1.2 node 10.15.0
Can you try 8.6.1 of the nodes and recheck?
Great, after upgrade to the latest version 8.6.1 it works as expected. Ill try on a few more devices.
On Sun, Sep 6, 2020 at 8:10 PM Karl-Heinz Wind notifications@github.com wrote:
Couldn't wait so tried it today.. It seems I have a problem: Node-RED v0.20.7 (the user base is on this version) I've updated node-red-contrib-telegrambot to 8.6.0 (shown in Palette) Entered a token manually in the UI to confirm it works, then replaced the token with {env.get("BOT_TOKEN")} Edited the settings.js file and added process.env.BOT_TOKEN = "61648djsjd...."; on the first line. Restarted Node-RED (tried to reboot the system too) but I only see "polling error" in the status field. I verified that the env var is ok by adding a Inject node which reads $BOT_TOKEN and send to debug output The browser runs at very high CPU when the polling error happens, tis will potentially be a problem for my usres too. Most of them will not use the Telegram node, and so they will have the {env.get("BOT_TOKEN")} and and empty env variable. Do you have any ideas what goes wrong here and how I can troubleshoot it? Thanks for your efforts
I can't reproduce your problem. I am using the following environment: npm 6.4.1 node-red 1.1.2 node 10.15.0
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-687858894, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQKEADTX2UZ43FR5AQTSEPGAFANCNFSM4QP76Y6A .
Just a quick note to let you know that I got it up and working, it's a bit ugly but should work. I 'll get back when we've tested a bit more. Thx
On Mon, Sep 7, 2020 at 8:21 AM Jens Kastensson jens@kastensson.se wrote:
Great, after upgrade to the latest version 8.6.1 it works as expected. Ill try on a few more devices.
On Sun, Sep 6, 2020 at 8:10 PM Karl-Heinz Wind notifications@github.com wrote:
Couldn't wait so tried it today.. It seems I have a problem: Node-RED v0.20.7 (the user base is on this version) I've updated node-red-contrib-telegrambot to 8.6.0 (shown in Palette) Entered a token manually in the UI to confirm it works, then replaced the token with {env.get("BOT_TOKEN")} Edited the settings.js file and added process.env.BOT_TOKEN = "61648djsjd...."; on the first line. Restarted Node-RED (tried to reboot the system too) but I only see "polling error" in the status field. I verified that the env var is ok by adding a Inject node which reads $BOT_TOKEN and send to debug output The browser runs at very high CPU when the polling error happens, tis will potentially be a problem for my usres too. Most of them will not use the Telegram node, and so they will have the {env.get("BOT_TOKEN")} and and empty env variable. Do you have any ideas what goes wrong here and how I can troubleshoot it? Thanks for your efforts
I can't reproduce your problem. I am using the following environment: npm 6.4.1 node-red 1.1.2 node 10.15.0
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-687858894, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQKEADTX2UZ43FR5AQTSEPGAFANCNFSM4QP76Y6A .
@jenskastensson should I close this issue or are you still interested in a better solution?
Thanks, Karl, you can close it. It's not an ideal solution but you did it very fast and it does the job! Highly appreciated, sorry for the delay I 've sent a small contribution /Jens
On Mon, Nov 30, 2020 at 10:23 PM Karl-Heinz Wind notifications@github.com wrote:
@jenskastensson https://github.com/jenskastensson should I close this issue or are you still interested in a better solution?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-736065168, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQPL5JWEHGOPPWU5RHDSSQEOZANCNFSM4QP76Y6A .
@jenskastensson I will create a better solution... just wanted to check the priorities
Not urgent for me, I have the current solution implemented and tested! Don't fix it if it ain't broke ;)
On Tue, Dec 1, 2020 at 2:43 PM Karl-Heinz Wind notifications@github.com wrote:
@jenskastensson https://github.com/jenskastensson I will create a better solution... just wanted to check the priorities
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/windkh/node-red-contrib-telegrambot/issues/124#issuecomment-736559693, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSPHQPQXATBDMCABSGZTD3SSTXJBANCNFSM4QP76Y6A .
i can implement idea 2 very succesfully. thanks a lot !
I opened again … as I will try to improve this in future
Senhores! eu utilizei a ideia das variáveis de ambiente para setar o token pelo usuário e funcionou muito bem apesar de ter que reiniciar o node-red. coloquei o arquivo Settings.js a linha process.env.BOT_TOKEN = "61648djsjd...." ; e na configuração do nó Token do nó {env.get("BOT_TOKEN")}. Ta muito bom essa implementação, era isso que eu precisava. valew!!!!
muy bien
Hello, is there any way to modify the token value in the node configuration at runtime from the node-red dashboard? The idea is that people without access to the node's configuration can do it from the dashboard. I really appreciate your work.