When we first started to think about how to implement a good interface to add members in Chat conversations, the first thing which comes to mind was to provide some Slack-like way to do this. You know:
“You have mentioned, X, Y and Z, do you want to add them to the conversation? [Click me]”
is just hundred times better than the Mattermost way (sorry guys, you are doing a good job, but not on this one):
“X, Y, and Z were mentioned, but they did not receive a notification because they do not belong to this channel.”
which also means
“Hey! go to the user list, search for X, click on ‘Add’, then search for Y, click on ‘Add’, then search for Z, doh, you badly typed Z, you can not find it, search it again, find it, click on ‘Add’”.
Then there are several ways to implement this. First there is the alone-in-my-chat-module way: Just listen to some types of messages and reply to them if needed. And then there is the nicer way: Just because we are not developing a Chat application but a collaborative solution composed with several modules, producing and consuming events, data, etc. And so we will need to add more intelligence and probably more ‘conversational interfaces’ to it that’s why this thing everybody are calling ‘Bots’ are the right candidates for this.
So here it is, the Bot is listening to chat messages, check if there are mentions inside, checks if mentions are about users which are not members of the conversation by using the OpenPaaS collaboration APIs, and sends back an ephemeral message to the original message creator devices. Ephemeral message are also new in Chat which means that it is not persisted nor indexed, just showed to a group of users, where the group here is just composed by the original message creator.
This Chat bot to handle user management is just the beginning of what we can achieve with such service. There are tons of use cases which can be implemented with Bots, even more in collaborative solutions like OpenPaaS which also integrates with external services. Are you ready, data science team?