Verificando novas mensagens de chat via API

Olá,

Estou integrando o Discourse em outro aplicativo e estou tentando verificar via API se alguém tem alguma atividade de chat pendente. Se houver alguma mensagem nova, quero apenas mostrar um selo vermelho.

Mais especificamente, estou tentando aproveitar as preferências que o cliente definiu em seu “chat_header_indicator_preference” e, no momento, defini para “all_new”, o que acho que deve mostrar quaisquer novas mensagens nos canais aos quais pertenço, bem como menções/DMs não lidas.

Eu esperava que, acessando /session/current.json, eu pudesse ver algo lá que pudesse usar para isso, mas não vi nada útil.

Existe algum endpoint de API que eu possa usar para entender se há novas mensagens com base no chat_header_indicator_preference de um usuário??

/chat/api/me/channels e a chave de rastreamento têm todas as informações de que você precisa, podemos criar um endpoint mais especializado algum dia

1 curtida

obrigado @j.jaffeux. Estou analisando /chat/api/me/channels e vejo em rastreamento que posso percorrer todos os canais e ver se o unread_count de algum dos canais é > 0, o que é útil.

Mas isso não parece ter nada a ver com a preferência chat_header_indicator_preference de um usuário e também não me diz se houve alguma DM ou menção para o usuário.

Em teoria, posso tentar recriar a lógica de chat_header_indicator_preference verificando primeiro se o usuário a definiu como “all_new” e, se for o caso, verificando se algum unread_counts de seus canais é > 0 e se todos são 0, então verificando DMs/menções não lidas.

Mas espero que haja uma maneira melhor de fazer isso… (e também não tenho certeza de como obter essa segunda parte para DMs/menções não lidas).

Qualquer ajuda / orientação seria muito apreciada.

1 curtida

Desculpe, não entendi o que você está tentando realizar.

Estou tentando mostrar um distintivo no meu aplicativo se alguém tiver alguma atividade nova no chat.

Em preferências –> Chat, há uma configuração chamada “chat_header_indicator_preference” que tem as seguintes opções:

Um usuário só esperaria ver um distintivo vermelho para novas atividades com base nesta preferência. Se alguém tiver “Todas as Novas Mensagens” definido, eu esperaria que isso significasse que um distintivo apareceria se houvesse alguma nova atividade em qualquer um dos canais em que eles estão ou se tivessem uma menção ou DM.

Você me mostrou como percorrer todos os canais e ver se há mensagens não lidas, mas 1) isso não tem nada a ver com essa preferência
2) isso não me ajudaria a entender se eles têm alguma Mensagem Direta ou Menção

Idealmente, eu esperava encontrar um endpoint que me ajudasse a mostrar um distintivo com base no chat_header_indicator_preference do cliente.

Se isso não for possível, então parece que eu precisaria primeiro verificar se eles têm mensagens não lidas na “seção de rastreamento” de chat/api/me/channels, e depois verificar um segundo local para ver se eles tinham DMs/menções.

Eu não sei onde seria esse segundo local, mas esperava que alguém aqui pudesse me indicar a direção certa.

Isso faz sentido?

1 curtida

O rastreamento possui canais diretos e públicos.

2 curtidas

Obrigado… isso não estava claro para mim.

No rastreamento, há alguma maneira de saber quais canais são DM e quais são públicos?

Se um usuário tiver chat_header_indicator_preference definido como “Mensagens Diretas e Menções”, eu não gostaria de mostrar um distintivo para novas mensagens regulares em um canal.

1 curtida

Sim, você tem direct_message_channels e public_channels, então você pode fazer pesquisas com o ID no rastreamento.

2 curtidas

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