Telegram Interface #6

Closed
opened 2025-09-27 02:42:46 +02:00 by Berack96 · 3 comments
Berack96 commented 2025-09-27 02:42:46 +02:00 (Migrated from github.com)

È possibile anche utilizzare un Telegram Bot per interagire con l'applicazione utilizzando una delle librerie che consigliano.
Direi che per semplicità usiamo la libreria python-telegram-bot che ha anche molti esempi da mostrare.

L'interazione con l'utente sarebbe:

  • Collegamento con il BOT
  • /start
  • Il bot mostra qualche pulsante in modo da guidare l'utente nella query (es. lo stile e quale modello usare)
  • Quando l'utente manda il messaggio, allora fa partire tutta l'app
  • Ogni tanto manda qualche messaggio di update in modo da informare a che step è arrivato (che potrebbero essere tipo: 0 raccolta info, 1 scelta delle crypto migliori per lo stile, 2 raccolta informazioni dettagliate sulle crypto scelte, 3 generazione report)
  • Infine manda il messaggio finale con il report

Questo semplificherebbe un pochino le cose dal punto di vista Database perchè possiamo usare la chat di telegram come database e avere una separazione degli utenti netta.

Checklist

  • Setup: Configurare il ConversationHandler principale. Definire gli stati iniziali (e.g., SELECT_OPTIONS, AWAITING_TEXT) e i fallback per gestire il riavvio (/chat).
  • Inizio: Implementare il comando /start. Invia il primo messaggio con la InlineKeyboardMarkup e avvia la conversazione.
  • Config: Gestire la selezione multi-opzione. CallbackQueryHandler per intercettare i click. Utilizzare query.answer() per chiudere l'alert di caricamento. Usare query.edit_message_text per aggiornare il messaggio e i pulsanti
  • Input: Richiedere e acquisire il testo da elaborare. Transizione allo stato AWAITING_TEXT. Utilizzare un MessageHandler(filters.TEXT) per catturare l'input dell'utente.
  • Attesa: Inviare l'avviso di "Elaborazione in Corso...". Usare bot.edit_message_text (o query.edit_message_text se si modifica l'ultimo messaggio) per avvisare l'utente dell'inizio dell'attesa.
  • LLM: Eseguire l'Elaborazione LLM e aggiornare il progresso. Eseguire la chiamata LLM in un thread separato o in modo asincrono. Usare bot.edit_message_text periodicamente per aggiornare il messaggio di progresso (es. "Elaborazione... 25%"). Team Monitoring (#21)
  • Output: Inviare il risultato finale dell'LLM. bot.edit_message_text per sostituire il messaggio di progresso con la risposta finale completa.
È possibile anche utilizzare un [Telegram Bot](https://core.telegram.org/bots) per interagire con l'applicazione utilizzando una delle [librerie](https://core.telegram.org/bots/samples#python) che consigliano. Direi che per semplicità usiamo la libreria [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) che ha anche molti [esempi](https://github.com/python-telegram-bot/python-telegram-bot/tree/master/examples) da mostrare. L'interazione con l'utente sarebbe: - Collegamento con il BOT - /start - Il bot mostra qualche pulsante in modo da guidare l'utente nella query (es. lo stile e quale modello usare) - Quando l'utente manda il messaggio, allora fa partire tutta l'app - Ogni tanto manda qualche messaggio di update in modo da informare a che step è arrivato (che potrebbero essere tipo: 0 raccolta info, 1 scelta delle crypto migliori per lo stile, 2 raccolta informazioni dettagliate sulle crypto scelte, 3 generazione report) - Infine manda il messaggio finale con il report Questo semplificherebbe un pochino le cose dal punto di vista Database perchè possiamo usare la chat di telegram come database e avere una separazione degli utenti netta. ### Checklist - [x] **Setup**: Configurare il ConversationHandler principale. Definire gli stati iniziali (e.g., SELECT_OPTIONS, AWAITING_TEXT) e i fallback per gestire il riavvio (/chat). - [x] **Inizio**: Implementare il comando /start. Invia il primo messaggio con la InlineKeyboardMarkup e avvia la conversazione. - [x] **Config**: Gestire la selezione multi-opzione. CallbackQueryHandler per intercettare i click. Utilizzare query.answer() per chiudere l'alert di caricamento. Usare query.edit_message_text per aggiornare il messaggio e i pulsanti - [x] **Input**: Richiedere e acquisire il testo da elaborare. Transizione allo stato AWAITING_TEXT. Utilizzare un MessageHandler(filters.TEXT) per catturare l'input dell'utente. - [x] **Attesa**: Inviare l'avviso di "Elaborazione in Corso...". Usare bot.edit_message_text (o query.edit_message_text se si modifica l'ultimo messaggio) per avvisare l'utente dell'inizio dell'attesa. - [ ] ~**LLM**: Eseguire l'Elaborazione LLM e aggiornare il progresso. Eseguire la chiamata LLM in un thread separato o in modo asincrono. Usare bot.edit_message_text periodicamente per aggiornare il messaggio di progresso (es. "Elaborazione... 25%").~ #21 - [x] **Output**: Inviare il risultato finale dell'LLM. bot.edit_message_text per sostituire il messaggio di progresso con la risposta finale completa.
Simo93-rgb commented 2025-09-30 13:58:38 +02:00 (Migrated from github.com)

A me l'idea di presentarsi con una interfaccia mobile piace molto e siccome so che telegram va molto forte per queste cose potrebbe essere una buona idea per davvero. In passato ho sentito che Mantovani criticava i progetti di App WEB (il suo corso precedente) poiché non ben strutturati e onestamente pensare di fare bene anche la parte di database mi scoccia al quanto. Questa potrebbe essere un'altra ragione per usare telegram o comunque qualcosa di pronto all'uso equivalente se qualcuno conosce qualche altro servizio almeno al pari di telegram.

A me l'idea di presentarsi con una interfaccia mobile piace molto e siccome so che telegram va molto forte per queste cose potrebbe essere una buona idea per davvero. In passato ho sentito che Mantovani criticava i progetti di App WEB (il suo corso precedente) poiché non ben strutturati e onestamente pensare di fare bene anche la parte di database mi scoccia al quanto. Questa potrebbe essere un'altra ragione per usare telegram o comunque qualcosa di pronto all'uso equivalente se qualcuno conosce qualche altro servizio almeno al pari di telegram.
Berack96 commented 2025-10-01 16:28:13 +02:00 (Migrated from github.com)

Le librerie che a naso sembrano più easy da usare sono (ma potrei sbagliarmi):

Le librerie che a naso sembrano più easy da usare sono (ma potrei sbagliarmi): - [telegram.py](https://github.com/ilovetocode2019/telegram.py). An async API wrapper for the Telegram Bot API in Python. - [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot). A wrapper you can't refuse.
Berack96 commented 2025-10-06 16:39:31 +02:00 (Migrated from github.com)

Possibile tabella del flusso dei messaggi da implementare tra telegram e il server

Stato/Fase Task Dettagli Tecnici PTB
Setup Configurare il ConversationHandler principale. Definire gli stati iniziali (e.g., SELECT_OPTIONS, AWAITING_TEXT) e i fallback per gestire il riavvio (/chat).
Inizio Implementare il comando /chat. CommandHandler('/chat') che invia il primo messaggio con la InlineKeyboardMarkup e avvia la conversazione.
Config Gestire la selezione multi-opzione. CallbackQueryHandler per intercettare i click. Utilizzare query.answer() per chiudere l'alert di caricamento. Usare query.edit_message_text per aggiornare il messaggio e i pulsanti (aggiungere/rimuovere i checkmark ✔️).
Input Richiedere e acquisire il testo da elaborare. Transizione allo stato AWAITING_TEXT. Utilizzare un MessageHandler(filters.TEXT) per catturare l'input dell'utente.
Attesa Inviare l'avviso di "Elaborazione in Corso...". Usare bot.edit_message_text (o query.edit_message_text se si modifica l'ultimo messaggio) per avvisare l'utente dell'inizio dell'attesa.
LLM Eseguire l'Elaborazione LLM e aggiornare il progresso. Eseguire la chiamata LLM in un thread separato o in modo asincrono. Usare bot.edit_message_text periodicamente per aggiornare il messaggio di progresso (es. "Elaborazione... 25%").
Output Inviare il risultato finale dell'LLM. bot.edit_message_text per sostituire il messaggio di progresso con la risposta finale completa.
Finale Aggiungere pulsanti di azione successiva (es. Salva). Usare bot.edit_message_reply_markup sul messaggio finale per mostrare le opzioni di salvataggio/riprova.
Azione Gestire il salvataggio o altre azioni post-output. CallbackQueryHandler per intercettare l'azione "Salva". Eseguire la logica di backend (es. DB) e notificare l'utente modificando il messaggio.
Possibile tabella del flusso dei messaggi da implementare tra telegram e il server Stato/Fase | Task | Dettagli Tecnici PTB -- | -- | -- Setup | Configurare il ConversationHandler principale. | Definire gli stati iniziali (e.g., SELECT_OPTIONS, AWAITING_TEXT) e i fallback per gestire il riavvio (/chat). Inizio | Implementare il comando /chat. | CommandHandler('/chat') che invia il primo messaggio con la InlineKeyboardMarkup e avvia la conversazione. Config | Gestire la selezione multi-opzione. | CallbackQueryHandler per intercettare i click. Utilizzare query.answer() per chiudere l'alert di caricamento. Usare query.edit_message_text per aggiornare il messaggio e i pulsanti (aggiungere/rimuovere i checkmark ✔️). Input | Richiedere e acquisire il testo da elaborare. | Transizione allo stato AWAITING_TEXT. Utilizzare un MessageHandler(filters.TEXT) per catturare l'input dell'utente. Attesa | Inviare l'avviso di "Elaborazione in Corso...". | Usare bot.edit_message_text (o query.edit_message_text se si modifica l'ultimo messaggio) per avvisare l'utente dell'inizio dell'attesa. LLM | Eseguire l'Elaborazione LLM e aggiornare il progresso. | Eseguire la chiamata LLM in un thread separato o in modo asincrono. Usare bot.edit_message_text periodicamente per aggiornare il messaggio di progresso (es. "Elaborazione... 25%"). Output | Inviare il risultato finale dell'LLM. | bot.edit_message_text per sostituire il messaggio di progresso con la risposta finale completa. Finale | Aggiungere pulsanti di azione successiva (es. Salva). | Usare bot.edit_message_reply_markup sul messaggio finale per mostrare le opzioni di salvataggio/riprova. Azione | Gestire il salvataggio o altre azioni post-output. | CallbackQueryHandler per intercettare l'azione "Salva". Eseguire la logica di backend (es. DB) e notificare l'utente modificando il messaggio.
Sign in to join this conversation.