Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
T
telenode
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • I-Node
  • telenode
  • Issues
  • #5

Closed
Open
Opened Jun 12, 2019 by Davide Pucci@dpucciOwner

Rimozione messaggi out-of-date

Sarebbe molto utile, per evitare il flooding di messaggi, delegare il bot stesso della rimozione di messaggi outdated, cioè che contengono informazioni non più coerenti. Per farlo, alla ricezione di un allarme bisognerebbe, una volta mandato il messaggio, registrarne il message_id e associarlo come valore ad una chiave del tipo host!service (per utilizzare la stessa struttura utilizzata da Icinga2). Ogni volta che cambia il valore di questa chiave (e quindi viene sovrascritto il vecchio message_id ), bisognerà prima prelevarlo e utilizzarlo come argomento per la rimozione del messaggio nelle chat aperte.

Visto che però il bot python non è coinvolto nell'invio delle notifiche Icinga2, ma lo fa un semplice script Bash con una chiamata REST, le alternative sono due:

  1. si spostano tutte le funzionalità all'interno del bot, così da conferire una natura stateful anche alla parte di invio delle notifiche. In questo caso lo snippet da usare per la rimozione del messaggio è:
bot.deleteMessage(telepot.message_identifier(message_id))
  1. si trova il modo di mantenere le informazioni sul message_id precedente rispetto allo stesso host!service, così da aggiungere la logica di rimozione direttamente sullo script. In quest'altro caso l'operazione da effettuare è una chiamata REST alla seguente URL:
https://api.telegram.org/${bot_token}/deleteMessage?chat_id=${chat_id}&message_id=${message_id}
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: i-node/telenode#5