Inspiration

Chat and communication is essential as part of any team and collaboration and with the current global situation we are relying on services like Teams, Skype, Telegram, Slack etc. even more. These conversations related to what we are working on and relate to the boards so wouldnt it be great if we could add monday actions into chat. Not just notifications but actually being able to create, update, report on and modify monday boards through natural language. Essentially like having an additional member of the team in group chats that can keep the board up to date.

What it does

Team Chat connects to chat channels as a bot, when added to a conversation it analyses each message using a natural language processor to understand what is being said. This understanding is then related to the monday boards to create, read, update and modify your results. The chat service also analyses and understands the column and rows of the monday boards so it can respond with questions and guided comments. This app aims to use monday as the backbone, and allow users to work with items quickly and easily whilst providing the links and context to get users into monday boards. Overall speeding up working with boards and adding more collaboration.

Kinds of things you can ask

The chat service is focused around bidireactional reading and writing to the monday board. Some example phrases (but not limited to) are:

Said by user Action
what boards do I have returns list of boards I have access to
use board {boardName} will set your default board to the board name (using fuzzy match) for other actions
create item will start a guided item create journey. On creation user will get a link to the item created
create item called {name} will quick create an item with just name
assign it to me if I have just created an item it will assign that row to me
set status to working on it form item {name} updates the status of an item called name
move {name} into working on it updates the status of an item called name
show me my tickets returns a list of tickets assigned to me. If there is a status column the app will also return a graph breakdown of the tickets by status

How we built it

I built this application using nodejs and the monday SDK along with nlpjs. The nodejs application provides a rest based service that can be connected to. I then deployed the chat service on Azure using Github actions for a continuous delivery methodology and a scaleable infrastructure and then connected each of the chat service providers to the connection services.

Supported Channels

This application currently supports 9 different channels:

  • Microsoft Teams
  • Skype
  • Skype for Business
  • Kik
  • Line
  • Slack
  • Alexa
  • SMS - for full offline connectivity to your monday boards
  • Telegram

Challenges we ran into

One of the challenges I ran into was setting up the natural language processor to understand what someone can say. Most common chatbots are quite prescriptive about what is said and what is responded, which can lead to frustration of the end user as the user then tries to guess what the chatbot needs them to match rather than just talking as they would normally.

To achieve the recognition I used nlpjs library and leveraged the techniques of NLP (Natural language Processing), NLU (Natural Language Understanding), NeuralNetwork and Duckling. This means that the application can understand texts easily and quickly. For instance:

Said by user Extracted Values Action
create row on tasks called new item method: create, board: tasks, name: new item Row is added to the tasks board with titlle 'new item'
could you add an item to tasks board called new item method: create, board: tasks, name: new item Row is added to the tasks board with titlle 'new item'
new item on tasks method: create, board: tasks starts a create journey which identifies required fields and asks for them

Using these overall techniques means that the chat service can understand the items and actions cleanly and easily without requiring someone to type in specific phrases of terms.

Accomplishments that we're proud of

Disconnected Communication with Monday using SMS

iPhone SMS Chat

In today's world there are still times when internet connectivity can be poor especially with people working out in the field and there are large amounts of the world that are still using feature phones without internet. These people and use cases can now use monday boards where they can create, update and modify the boards using SMS. SMS posed it's own challenges in providing a connection back to the chat service. This was done using Twilio, created a new number and then setup the webhooks to point back to the chat service. The speed and performance of the SMS service is amazing, it is like a natural conversation. I also tailored some of the interactions like selecting options in guided chat journeys so that a user just needs to send back a number to select each option eg. What do you want to set status to (1) working on it, (2) done or (3) stuck and the user can reply 2 to select done.

Responding with graphs and images

Guided Journey

To make communications richer and more advanced chat service can also respond with attachments from the boards and most interestingly the chat service can query the dataset and deliver the result in graphical response which makes the app more consumeable. In the example above you can ask for 'ticket breakdown by team member' this infers that we are looking for a status column and a people column and then the results are displayed in a bar chart in response. The charting system uses chartjs and supports bar charts, pie charts, line graphs and area charts. These charts are rendered server side and then pushed as an attachment to the chat conversation. A really easy way to generate a report.

Guided Journeys

Guided Journey

When creating items sometime there is information that needs to be selected as an option for instance for status or people columns. To make this easier I leveraged the capabilities of the chat services to send back the required message formats with options so a user can also just click on the items to select the value that should be assigned. This can make the process of creating or clarifying data really fast and efficient.

What we learned

This is the first time I had worked with NLP with chat channels. It was interesting working with machine learning to extract predict and understand intent, parameters in text and deep learning of what was being sent and understood. I also connected with the 9 different chat services which required registering and understanding of how each of the chat services works. All have their differences and unique capabilities which needed to be merged and handled correctly to deliver a unified experience where the user can choose their preferred communication channel.

What's next for Team Chat - Add Monday in chat channels (teams, skype etc.)

The chat service has been submitted for review from each of the chat services so that they can be published publically on each service provider's store. If you would like access to the chat service for a channel then please drop me a note so I can add you to the beta version to try it out.

As far as functionality next is to add deeper ML understanding and capabilities along with chained actions and multi user inferance so when you have the chat service in a group chat the app can related the actions and updates to the correct user along with a shared conversation state.

Share this project:

Updates