cesko-digital / volunteer-sync

Sync volunteer info from Slack to AirTable

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Doplnit statistiky aktivit

zoul opened this issue · comments

Například počet napsaných zpráv? Vypadá to, že přímá podpora pro tohle v API není, je nutné to napočítat ručně.

Jak tomu aktuálně rozumím, nepraktické je, že pro ruční počítání aktivity (tedy například počtu zpráv v kanálech) bysme museli aplikaci volunteer_sync přidat do všech kanálů, aby k nim měla přístup.

Pro poslední aktivitu na Slacku vypadá dobře metoda team.accessLogs, jen je potřeba starší uživatelský token místo běžného botího. Zkoušel jsem, ale dostal jsem chybu missing_scope, takže nízká oprávnění. Teď už jsem workspace admin, zkusím později znova.

OK, ty access logy jdou vyndat, vypadají například takhle:

{
    "user_id": "UJJ3MNA91",
    "username": "tomas.znamenacek",
    "date_first": 1583487847,
    "date_last": 1583487847,
    "count": 1,
    "ip": "213.235.140.67",
    "user_agent": "ApiApp/AURC5123A tiny-http",
    "isp": "CD-Telematika a.s.",
    "country": "CZ",
    "region": "78"
},

Akorát je k tomu potřeba uživatelský token s administrátorskými právy a těch záznamů je tam hodně, konkrétně 4347 stránek po 100 záznamech. A tahle metoda API je omezená na zhruba 20+ dotazů za minutu, plus nejde vyptat všecko:

It is not possible to request more than 1000 items per page or more than 100 pages.

Filtrování podle uživatele to neumí. Celkově mně to nepřijde příliš atraktivní cesta – kdybysme stahovali historii kanálů, bude jednodušší odvodit nedávnou aktivitu z těchto dat.

Kdybysme se chtěli vrátit k tomu poslednímu datu přihlášení, tak tady je proof of concept v Pythonu: https://github.com/frenzymadness/Slack-last-login.