Sto riscontrando un problema con un’automazione che dovrebbe attivarsi all’inizio del mese; tuttavia, anche se è abilitata, non viene attivata automaticamente. Non riesco a trovare alcun registro o un modo per eseguire il debug del motivo per cui non viene eseguita autonomamente quando dovrebbe. Qualcuno di voi sa come risolvere questo problema, per favore?
Come potete vedere di seguito, l’automazione dovrebbe ‘Programmare una riunione con i risultati di Data Explorer’ automaticamente ogni mese. Se faccio clic su “Attiva ora”, funziona come previsto: gli utenti aggiunti all’elenco ricevono il risultato di Data Explorer nonché un file CSV; tuttavia, l’attivazione automatica non viene eseguita.
Hai effettuato dei test per assicurarti che tutti i criteri siano soddisfatti in modo naturale (a parte trigger now)?
Cioè, imposta l’orario per accadere ogni giorno e vai a un gruppo fittizio. Se funziona correttamente, passa poi a mensile per il tuo gruppo effettivo.
Inoltre, credo che il tuo pubblico di destinazione debba avere la query dell’esploratore di dati condivisa con loro.
Sì.. ma il problema non è che non viene eseguito alla data/ora prevista, il problema è che non viene eseguito affatto.
Dove posso trovare questo pulsante, per favore?
Dovrebbe inviare un messaggio privato diretto a due utenti. Gli utenti hanno la query condivisa con loro. Grazie per il suggerimento di testare provando orari diversi. Proverò a sperimentare anche usando un gruppo di prova.
Penso che inizierei configurando una nuova automazione con le stesse impostazioni e verificando se, dopo averla abilitata, venga visualizzata una “data di prossima attivazione”.
Utilizzo esattamente questo script di automazione in più punti senza problemi. Ecco la mia configurazione in uno di essi: ho modificato la ricorrenza in 5 minuti invece di una settimana per questo test, ma viene attivato settimanalmente come previsto quando è impostato così:
Forse prova a rimuovere l’emoji delle manopole di controllo dal nome dello script e dal titolo della query dell’esploratore dati. Potrebbe essere quello a rompere il payload (anche se penso che dovrebbero essere ok).
Grazie per l’aiuto! Temo che il mistero non sia ancora risolto… ecco perché:
Prima della ‘data di attivazione’, era esattamente così che appariva, con il messaggio ‘La prossima automazione si attiverà alle: [data/ora]’; tuttavia, dopo che quella data/ora è passata senza che venisse eseguita con successo, il messaggio non viene più mostrato. Durante i test, ho modificato l’orario in 1 minuto e il messaggio di attivazione è ricomparso. In un mese precedente, quando non si è attivata, ho aggiornato il timer e ha mostrato il messaggio che si sarebbe attivata alla prima ora del mese successivo (ma non è successo).
In realtà ha funzionato ed è stato attivato in alcuni mesi, mentre in altri no, quindi non è chiaro il motivo, ma ora sembra non attivarsi più automaticamente. Che versione di Discourse state utilizzando? La mia è 2026.5.0-latest…
Purtroppo, anche quando attivo manualmente, non appare nulla in /logs. (Ho selezionato tutte le opzioni).
Non credo sia questo il problema perché ho modificato l’attivazione a 1 minuto ed è stata inviata:
Ok, l’ho impostata su mensile, l’ho attivata e ha funzionato. Ma aspettare un mese per fare i test non è molto utile in questo caso. Tra pochi minuti proverò a impostare la data di inizio.
modifica: sembra che l’impostazione mensile funzioni per me
Ok, allora oggi Moin e io stavamo parlando di questo caso, e lei ha sollevato la possibilità che ci fosse un bug nell’uso della ricorrenza mensile, dato che la lunghezza dei mesi varia? Ovviamente aveva ragione, in un certo senso…
Comunque, ho fatto un po’ di ricerche
Non sono riuscito a trovare lo script di automazione per schedule pm with data-explorer results nella cartella core plugins/automation/lib/discourse_automation/scripts, quindi deve essere nascosto da qualche altra parte.
Tuttavia, ho esaminato la logica qui per le ricorrenze (presumibilmente quello script la utilizza) in plugins/automation/lib/discourse_automation/triggers/recurring.rb:
Penso che il codice sottostante per le automazioni mensili ricorrenti stia calcolando il N-esimo giorno della settimana invece della data effettiva del calendario, e che ci sia una discrepanza logica con Calendar day: inserendo BYDAY=#{count}#{byday} nell’RRule, l’automazione forza un allineamento al giorno della settimana, mentre dovrebbe usare BYMONTHDAY invece di BYDAY.
Quindi, se imposti un’automazione per iniziare il 15 aprile (che è il mercoledì 3° di aprile), il sistema interpreta la regola come: esegui il 3° mercoledì di ogni mese.
Quando arriva maggio, il 3° mercoledì è il 20 maggio, il che fa slittare la programmazione di 5 giorni.
Inoltre, se imposti un’automazione il 30 o il 31 di un mese (ad esempio, il “5° martedì”), il sistema cercherà il 5° martedì nel mese successivo. Se quel mese ha solo 4 martedì, l’automazione non troverà una data valida e salterà silenziosamente l’intero mese.
Ho una correzione testata e sto creando una PR se il team vuole dare un’occhiata. Cambia la logica dal N-esimo giorno della settimana alla data esatta del calendario.
Ecco alcuni screenshot dai miei test e debug:
2 istanze, una senza correzione e l’altra con la mia correzione logica
Crea la stessa automazione in entrambe (la versione corretta è a destra):
Guarda le differenze nei banner che dicono “La prossima automazione si attiverà alle:” con uno slittamento di 5 giorni: la versione non corretta slitta al mercoledì 3° (20 maggio), invece del 15 maggio.
Ad esempio, i mesi potrebbero essere completamente saltati se il sistema cercasse il 4° giovedì invece di una data effettiva.
Puoi testare lo stesso risultato anche nella console di Rails