Aller au contenu
971jmd

telegram et fibaro

Recommended Posts

j’essaye d'utilisée ce code trouver sur le FOFO sur la HC2

 

Visiblement il fonctionne très bien mai le prob vient de telegram.org

https://forum.fibaro.com/topic/20581-sending-messages-from-your-hc2-to-your-telegram-account/?page=5&tab=comments#comment-162522

 

avez-vous un idée ?

merci d'avance

 

[DEBUG] 07:36:45: bonjour
[DEBUG] 07:36:46: failed
[DEBUG] 07:36:46: {"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
--[[
%% properties
%% globals
Telegram
--]]
local debug = true;
local token = "xxxxxxxxxxxxxxxxxxxxxx"
local chat_id = "xxxxxx"
local url = "https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="

local function log(str) if debug then fibaro:debug(str); end; end
local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end

--Prevents the scene from running again
if (tonumber(fibaro:getGlobalValue("Telegram")) == 0) then
  fibaro:abort();
end

local selfhttp = net.HTTPClient({timeout=2000})

local msg = fibaro:getGlobalValue("Telegram")
log(msg);

url = url .. msg

selfhttp:request(url, {
  options={
    headers = selfhttp.controlHeaders,
    data = requestBody,
    method = 'GET',
    timeout = 5000
  },
  success = function(status)
    local result = json.decode(status.data);
    if result.ok == true then
      log("successful");
    else
      errorlog("failed");
      log(status.data);
    end
  end,
  error = function(error)
    errorlog("ERROR")
    log(error)
  end
})

--Reset the global Telegram variable to 0
fibaro:setGlobal("Telegram", "0")

Partager ce message


Lien à poster
Partager sur d’autres sites

Le message d'erreur est clair, je n'utilise pas telegram, mais un bot n'envoie pas de message a un bots .

 

Esaie ca avec fibaro:args()

 

fibaro:startScene(69, { "Hello! How are you?!" })

scene #69

 

--[[
%% properties
%% globals
--]]

function url_encode(str) 
if (str) then 
     str = string.gsub (str, "\n", "\r\n") 
     str = string.gsub (str, "([^%w %-%_%.%~])", 
       function (c) return string.format ("%%%02X", string.byte(c)) end) 
   str = string.gsub (str, " ", "+") 
end 
	return str    
end 

function urldecode(s)
  return string.gsub(s, '%%(%x%x)', 
    function (hex) return string.char(tonumber(hex,16)) end)
end

function urldecodeTable(tab)
  for k,v in pairs(tab) do 
    if type(v) == "string" then
      tab[k] = urldecode(v)
    elseif type(v) == "table" then
      urldecodeTable(v)
    end
  end
end

local debug = true;
local token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
local chat_id = "111111111111"
local url = "https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="

local function log(str) if debug then fibaro:debug(str); end; end
local function errorlog(str) fibaro:debug("<font color='red'>"..str.."</font>"); end

local selfhttp = net.HTTPClient({timeout=2000})

local msg = "<empty>";

if fibaro:args() == nil then
    fibaro:debug("no args");
	return
else
    jMsg = fibaro:args()
    urldecodeTable(jMsg)
    if jMsg[1] == nil or jMsg[1] == "" then
    	fibaro:debug("no msg");
		return
    end
	msg = jMsg[1];
end

url = url .. url_encode(msg);
log(url);

selfhttp:request(url, {
  options={
    headers = selfhttp.controlHeaders,
    data = requestBody,
    method = 'GET',
    timeout = 5000
  },
  success = function(status)
    local result = json.decode(status.data);
    if result.ok == true then
      log("successful");
    else
      errorlog("failed");
      log(status.data);
    end
  end,
  error = function(error)
    errorlog("ERROR")
    log(error)
  end
})

Si ca fonctionne, l'adaptation avec modif d'une globale sera facile.

Partager ce message


Lien à poster
Partager sur d’autres sites

pareille 


[DEBUG] 11:26:01: failed
[DEBUG] 11:26:01: {"ok":false,"error_code":403,"description":"Forbidden: bot can't send messages to bots"}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Regarde ca :

 

https://www.assistanz.com/get-server-notification-telegram-app/


 

Guess it isnt working anymore {“ok”:false,”error_code”:403,”description”:”Forbidden: bot cant send messages to bots”}

Deekshith Hadil

April 22, 2017 at 5:55 pm

Seems like bot is not configured correctly. Dont use the token id, chat id given in the tutorial. These are dummy values.
After creating the bot, you need to initiate chat with the bot by searching it in the search box. Then identify its chat ID.

 

Peut-etre que tu dois recreer ton bot depuis l'appli en suivant le lien du tuto ci-dessus, ila des copies d'ecran ;-)

 

 

https://www.domoticz.com/wiki/Telegram_Bot

Partager ce message


Lien à poster
Partager sur d’autres sites

super le lien mai toujours pareille 

 

j'ai tester ça :

 

https://api.legram.org/bot730xx2211:AAFV9y0qT-es-Ixxxx-B05OZ1aZPQ-MKSmk/sendMessage?chat_id=7308882211&text=Hello+World

 

toujours rien:15:
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @971jmd Cool :60:

Alors qu'elle est le code qui fonctionne ? Et quelle procédure alors ? Ca mérite un petit tuto tu as déja fait le boulot. Tu passes par une variable ou par fibaro;args() ?

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

 

oui j’ai commencée le tuto,

je le poste ou ?

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

si tu vois des choses qui ne vont pas dis-le-moi

 

aujourd’hui mercredi j'ai les enfants dans la maison pfffff 

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

×