Lembrei que no MessagingHub-Client funcionava, talvez exista outra maneira.
https://github.com/takenet/messaginghub-client-js
Olá @odirleiborgert,
Recentemente mudamos o nome da bliblioteca messaginghub-client-js
para blip-sdk-js
. Portanto, de agora em diante, utilize apenas a versão blip-sdk-js
.
Vamos a sua dúvida:
o método client.addMessageReceiver
recebe duas funções como parametros filter, messageHandler.
client.addMessageReceiver(filter, messageHandler)
A função filter é utilizada para filtrar quais mensagens serão processadas pela função messageHandler. Exemplo 1: O receiver abaixo loga todas as mensagens de texto enviadas pelos usuários
client.addMessageReceiver((m) => m.type === 'text/plain', (m) => {
console.log(m);
});
Isso acontece por que a primeira função (filter) passada para o método addMessageReceiver
retorna true
apenas para mensagens do tipo ‘text/plain’ e por que a segunda função (messageHandler) loga as mensagens que passarem pelo filtro.
filter: (m) => m.type === 'text/plain'
messageHandler: (m) => { console.log(m); }
Esse é o motivo do seu bot estar respondendo as duas mensagens para o cliente.
O fato de retornar false
no primeiro receiver não faz com que o segundo receiver não seja executado, apenas provoca uma falha na promise que trata a mensagem recebida.
No seu caso, seu segundo receiver receberá qualquer mensagem enviada pelo cliente e o primeiro receiver será executado sempre que algum usuário enviar a palavra “Teste” para o bot.
Sugiro que vc utilize os receivers para separar os tipos de mensagens (texto, media, etc) e não qual mensagem foi recebida pelo bot.
Legal @rafaelpa
A partir de agora vou separar os receivers por tipo de mensagem, dessa forma que fiz funcionou como esperado. Obrigado
// Text-plain
client.addMessageReceiver((message) => message.type === 'text/plain', (message) => {
if (message.content === 'Começar') {
client.sendMessage({
id: Lime.Guid(),
to: message.from,
type: "text/plain",
content: "Legal, vamos começar."
});
return false;
}
client.sendMessage({
id: Lime.Guid(),
to: message.from,
type: "text/plain",
content: "Não entendi sua mensagem."
});
return false;
});
// application/vnd.lime.media-link+json
client.addMessageReceiver((message) => message.type === 'application/vnd.lime.media-link+json', (message) => {
client.sendMessage({
id: Lime.Guid(),
to: message.from,
type: "text/plain",
content: "Não estou preparado para interagir com esse tipo de conteúdo"
});
return false;
});
👏 Essa é a ideia, muito bom 😉