Controllo di nuovi messaggi di chat tramite API

Ciao,

Sto integrando Discourse in un’altra applicazione e sto cercando di verificare tramite API se qualcuno ha attività di chat in sospeso. Se ci sono nuovi messaggi, voglio solo mostrare un badge rosso.

Più specificamente, sto cercando di sfruttare le preferenze che il cliente ha impostato nel suo “chat_header_indicator_preference” e al momento l’ho impostato su “all_new”, che penso dovrebbe mostrare tutti i nuovi messaggi nei canali a cui appartengo, nonché menzioni/DM non letti.

Speravo che andando su /session/current.json avrei potuto vedere qualcosa lì che potessi usare per questo, ma non ho visto nulla di utile.

Esiste un endpoint API che posso utilizzare per capire se ci sono nuovi messaggi in base al “chat_header_indicator_preference” di un utente?

/chat/api/me/channels e la chiave di tracciamento contengono tutte le informazioni necessarie, potremmo creare un endpoint più specializzato in futuro

1 Mi Piace

Grazie @j.jaffeux. Sto esaminando /chat/api/me/channels e vedo sotto tracking che posso scorrere tutti i canali e vedere se unread_count per uno qualsiasi dei canali è > 0, il che è utile.

Ma questo non sembra avere nulla a che fare con chat_header_indicator_preference di un utente e inoltre non mi dice se ci sono stati DM o menzioni per l’utente.

In teoria posso provare a ricreare la logica di chat_header_indicator_preference controllando prima se l’utente ha impostato “all_new” e, in tal caso, verificando se tutti gli unread_count per i suoi canali sono 0 e se questi sono tutti 0, quindi controllando i DM/menzioni non letti.

Ma spero che ci possa essere un modo migliore per farlo… (e inoltre non sono sicuro di come ottenere quel secondo pezzo per i DM/menzioni non letti).

Qualsiasi aiuto / guida sarebbe molto apprezzato.

1 Mi Piace

Mi dispiace, non capisco cosa stai cercando di ottenere.

Sto cercando di mostrare un badge nella mia app se qualcuno ha nuove attività nella chat.

Nelle preferenze → Chat c’è un’impostazione chiamata “chat_header_indicator_preference” che ha le seguenti opzioni:

Un utente si aspetterebbe di vedere un badge rosso per le nuove attività solo in base a questa preferenza. Se qualcuno ha impostato “Tutti i nuovi messaggi”, mi aspetterei che ciò significhi che un badge apparirebbe se ci fosse qualsiasi nuova attività in uno qualsiasi dei canali in cui si trova o se è stato menzionato o ha ricevuto un DM.

Mi hai mostrato come scorrere tutti i canali e vedere se ci sono messaggi non letti, ma 1) ciò non ha nulla a che fare con questa preferenza
2) ciò non mi aiuterebbe a capire se hanno messaggi diretti o menzioni

Idealmente, speravo di trovare un endpoint che mi aiutasse a mostrare un badge in base alla chat_header_indicator_preference del cliente.

Se ciò non fosse possibile, allora sembra che dovrei prima verificare se hanno messaggi non letti nella “sezione di tracciamento” di chat/api/me/channels, e poi controllare una seconda posizione per vedere se hanno avuto DM/menzioni.

Non so dove sarebbe questa seconda posizione, ma speravo che qualcun altro qui potesse indicarmi la giusta direzione.

Ha senso?

1 Mi Piace

Il tracciamento ha canali diretti e pubblici.

2 Mi Piace

Grazie… non mi era ovvio.

Nel tracciamento, c’è un modo per sapere quali canali sono DM e quali sono pubblici?

Se un utente ha chat_header_indicator_preference impostato su “Messaggi diretti e menzioni”, non vorrei mostrare un badge per i nuovi messaggi normali in un canale.

1 Mi Piace

Sì, hai direct_message_channels e public_channels, quindi puoi fare ricerche con l’ID nel tracciamento.

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.