Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Alert system via Telegram BOT

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Alert system via Telegram BOT

Messaggioda Foto Utentessormanni » 18 mar 2025, 8:36

Buongiorno a tutti,
sto realizzando un sistema di Alert che utilizza un BOT di Telegram. questo BOT è Admin di un gruppo dove gli altri utenti fisici vanno a leggere gli allarmi generati.
Il problema che sto avendo è che il BOT non inoltra i messaggi al gruppo. Ho provato anche a scrivere direttamente sul BOT ma non lo inoltra. Ho disattivato la privacy del BOT, abilitato tutte le opzioni, ma niente.
Qualcuno sa perché non lo fa?

grazie
Avatar utente
Foto Utentessormanni
43 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 7 set 2009, 18:34
Località: viareggio

0
voti

[2] Re: Alert system via Telegram BOT

Messaggioda Foto Utenteluxinterior » 18 mar 2025, 10:22

Sono un po'arruginito ma guardando il mio codice se la memoria non mi inganna dovresti mettere
"from":{"id":xxxxxxxxx.....
dove id è quello del bot
E poi
"chat":{"id":yyyyyyyyy
dove id è quellod el gruppo
occhio a dichiarare l'id della chat int64_t e non uint64_t

Vado a memoria e potrei dire scemenze mi pare che l'id della chat di gruppo letto come intero 64bit è un numero negativo

Altre cose non mi ricordo di avere fatto per comunicare con una chat di gruppo
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[3] Re: Alert system via Telegram BOT

Messaggioda Foto Utentessormanni » 18 mar 2025, 11:19

Quindi mi stai dicendo che se aggiungo il BOT al gruppo, non fa niente. siccome il testo dell'allarme lo invio tramite il comando CURL, la formattazione non mi prevede il gruppo ma solo il BOT.
Avatar utente
Foto Utentessormanni
43 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 7 set 2009, 18:34
Località: viareggio

0
voti

[4] Re: Alert system via Telegram BOT

Messaggioda Foto Utenteluxinterior » 18 mar 2025, 11:41

Fa una cosa molto semplice:
Il gruppo dev'essere bot + membri (Ho verificato il mio usato per test ci siamo io mia figlia e il bot)
Manda un messaggio da un membro del gruppo lo intercetti e vedi com'è fatto.
Io usavo un ESP32 e visualizzavo i messaggi ricevuti

provato adesso
curl -X POST -H "Content-Type:multipart/form-data" -F chat_id=$CHAT_ID -F text="message" "https://api.telegram.org/bot$TOKEN/sendMessage"

$CHAT_ID l'id delal chat del gruppo
$TOKEN il token del tuo bot

ricevuto "message" sulla chat del gruppo
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[5] Re: Alert system via Telegram BOT

Messaggioda Foto Utentessormanni » 19 mar 2025, 10:26

non riesco a trovare il chat_ID del gruppo, ma solo dei singoli componenti: vedi sotto
[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":790053993,
"message":{"message_id":18,"from":{"id":7579029950,"is_bot":false,"first_name":"Stefano S.","language_code":"it"},"chat":{"id":7579029950,"first_name":"Stefano S.","type":"private"},"date":1742372378,"forward_origin":{"type":"user","sender_user":{"id":7579029950,"is_bot":false,"first_name":"Stefano S.","language_code":"it"},"date":1742247102},"forward_from":{"id":7579029950,"is_bot":false,"first_name":"Stefano S.","language_code":"it"},"forward_date":1742247102,"text":"Test"}}]}
Avatar utente
Foto Utentessormanni
43 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 7 set 2009, 18:34
Località: viareggio

0
voti

[6] Re: Alert system via Telegram BOT

Messaggioda Foto Utenteluxinterior » 19 mar 2025, 11:03

la prima cosa che mi viene in mente:
da un membro del gruppo della chat invia un messaggio
fai una richiesta getUpdates usando curl con il token del tuo bot che deve essere membro della chat e ti dovrebbe restituire il messaggio che hai inviato come altro membro del gruppo dove c'è l'ID della chat

nel tuo messaggio si vede l'ID della tua chat meglio togliere non si sa mai
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[7] Re: Alert system via Telegram BOT

Messaggioda Foto UtenteJackd » 19 mar 2025, 20:11

Non sono sicuro se ci sono restrizioni tra l'inviare messaggi a "group" o "channel" .
Molto tempo fa ho fatto un bot che manda messaggi su un channel, dove è amministratore.
Di segutio ti giro porzione del codice di debug. Prendilo come traccia e considera che ho tagliato giù molto per farlo postabile. Potrebbero esserci errori dovuti ai tagli.

Fondamentalmente questo codice ti rimanda in chat privata o in channel quello che uno gli scrive, estraendo dal messaggio Json una serie di informazioni.

Da quel che mi ricordo, ho dovuto fare più passaggi ma alla fine ci sono riuscito.
Prima ho fatto in modo che il bot mi potesse rispondere in privato
poi l'ho invitato nel "channel", e messo come amministratore, poi ho scritto qualcosa nel canale ed il bot rimandandomi in privato quello che gli ho scritto in "channel" mi ha indicato l'ID del "channel" che è un numero che parte col "-*********"

Codice: Seleziona tutto

<?php
$token 
= "";//tuotoken
$website="https://api.telegram.org/bot" . $token;

//ricevo dati da chat telegram
$update1 = file_get_contents('php://input');
//converto stringa in variabili utilizzabili da php
$update = json_decode($update1, TRUE);

//recupero informazioni dal client
//id di chi ti ha scritto - per dare risposta.
$chatID = $update['message']['from']['id'];
//nome impostato in telegram
$nome   = $update['message']['from']['first_name'];
//text è quello che han scritto
$text = $update['message']['text'];


//per debug
$agg = json_encode($update,JSON_PRETTY_PRINT);

//funzione che fisicamnete manda messaggi
function sendMessage($chatID,$text,$tastiera=null)
{
    if(isset($tastiera))
    {
        $tastierino = '&reply_markup={"keyboard":['.$tastiera.'],"resize_keyboard":true}';
    }
    $url = $GLOBALS[website]."/sendMessage?chat_id=$chatID&text=".urlencode($text).$tastierino;
    file_get_contents($url);
}



//debug : tutto quanto scriviamo al bot (o in canale dove è admin) viene re-inoltrato a questo canale 
//non mi ricordo se ci fosse stato un motivo per spezzare in  righe.
// -************** è il codice del canale quando ce l'hai lo puoi inserire qui sotto 
//e togliere la commentatura seguente

   /*
   sendMessage("-**************", "inizio debug - json encoded - Loopback on channel 
   $agg
   ");
   */

//commenta o meno  le righe dell funzioni a seconda di cosa/come vuoi vedere il loopback
//sendMessage($chatID, "raw  $update1");
//sendMessage($chatID, $agg);
sendMessage($chatID, "inizio debug - Loopback solo testo in messaggio privato:
$text
"
);

?>


Pr quanto riguarda questo Json: è il messaggio che te hai mandato al bot in privato. gli hai inoltrato il messaggio di te stesso che gli scriveva "test". essendo un messaggio diretto tra te e il bot, non c'è nessun riferimento a "group" o "channel. Mi viene da dire che l'hai incollato male, perché offset ecc sono alla fine non all'inizio...
Ti consiglio di prendre il Json e leggrlo su notepad++ almeno hai un aiuto a colori.

Codice: Seleziona tutto
{
"offset":0,
"length":6,
"type":
"bot_command"
}
,

{
    "update_id":790053993,
    "message":{
        "message_id":18,
        "from":{
            "id":7579029950,
            "is_bot":false,
            "first_name":"Stefano S.",
            "language_code":"it"
        },
        "chat":{
            "id":7579029950,
            "first_name":"Stefano S.",
            "type":"private"
            },
            "date":1742372378,
            "forward_origin":{
                "type":"user",
                "sender_user":{
                    "id":7579029950,
                    "is_bot":false,
                    "first_name":"Stefano S.",
                    "language_code":"it"
                    },
                    "date":1742247102
                
},
            "forward_from":{
                "id":7579029950,
                "is_bot":false,
                "first_name":"Stefano S.",
                "language_code":"it"
            },
            "forward_date":1742247102,
            "text":"Test"
        }
    }
Codice: Seleziona tutto
[code=php]per il codice a colori[/code]
Avatar utente
Foto UtenteJackd
794 4 7
Expert
Expert
 
Messaggi: 282
Iscritto il: 15 set 2014, 19:10
Località: Padova

0
voti

[8] Re: Alert system via Telegram BOT

Messaggioda Foto Utentessormanni » 23 mar 2025, 11:59

Buongiorno a tutti,
ho risolto questo problema dividendolo in due fasi:
1) ID del gruppo: per trovare l'ID del gruppo basta invitare un BOT di nome IDBot (@myidbot) che con il comando /setgroupid dice qual è (ID inizia sempre con -100xxxxxx)
2) invio messaggio al gruppo: il comando da inviare è: curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" -d chat_id=<CHAT_ID> -d text="TEXT to SEND"

Saluti
Avatar utente
Foto Utentessormanni
43 1 2 4
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 7 set 2009, 18:34
Località: viareggio


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti