We visit a lot of websites each day, sometimes we may want to get certain quick information about the site, or may have some doubts about it, on how to use it etc. But we are too lazy to read or search the entire website, or to even google the required information. At those times, website chat comes in handy. Many prominent websites have these kind of customer service chat embedded in their websites. So we can get to talk to a live chat agent about our doubts and queries. But the problem is, these chat agents may not be available 24*7... even if they are, they might be servicing multiple visitors, so we cant expect a quick reply.
That's why we thought of developing a chat-bot to eliminate all those difficulties. With the help of AWS Lex and Lambda, we created a chat widget in our website. This widget gets the user's query/message and sends it to Lex. After processing the data, Lex replies back with the appropriate answer to the user. With the inbuilt versatility of Lex, we were able provide the user, a human like experience with the bot. To make it even better, we also added AWS Polly, which gives speech responses to the user along with textual reply.
Apart from just chatting, we made the bot to do a lot more, like interacting with the website. The bot automatically highlights the required part on the screen based on user's query if it can.
At this point, we realised the power of the tool we were building. But the scope of the tool seemed to be very limited to just our site's users. We wanted to expand it.. This is where we started moving the bot from the website to a chrome extension. The chrome extension sitting on the users browser, dynamically appends itself to each website the user may visit. So, now we had a chat-bot on every website with a consistent look and feel to the user. But what we din't have was the required information. Since we wanted our bot to work on every website, we needed the information of all those websites as well. We made it to dynamically fetch the required information about the websites from various sources. For example, to know about the company details, the bot will go and search crunchbase data of that particular company. To know about the website, the bot uses AWIS and searches for the site related information from Alexa's data. It also uses other APIs to get details like community trust, safety, etc about a site.
Now we had a working bot capable of helping users with any site. To make it more productive and to increase the scope further, we also created a slack bot. This slack bot integrates directly with Lex. Now users can also get the required information from this slack bot directly.
We then created a slack app which uses Slack's Real Time Messaging API to communicate with the slack-bot as a user from the chrome extension. We also used this app to authenticate our users.
We also wanted to make full use of the power of chrome extension. We made our bot to do a whole lot more, than just to send and receive messages.
For example, By just saying
on a particular website, the bot automatically adds that website to bookmark. Similarly It can also clear the users browsing history of all the websites, or for a particular website. It can close or open a website. It can also set reminders, and close or open your website after a particular time or on a particular date. It can also be used to block unwanted websites.
As said earlier, we made our bot to interact with our website, like highlighting particular part of the screen as a response to users queries. For example a query like
how much is this?
will highlight the pricing tab of our site. We wanted to make our bot capable of doing the same thing in all other sites as well. So we made use of the extension, to analyse the sites, identify the html elements which may suit the given query and highlight it to the user.
We also went a step further, and made our bot to assist the users on other websites with the help of visual cues. For example a question like
what should i do
may provide the user with a set of steps by sequentially highlighting elements on screen and asking him to type or click on them.
For this to work in all websites, we need a more complex set of information which may not be readily available. So we made the extension to generate the information by itself. It observes the users interaction with a particular website, and tries to understand the way the user uses the website. With the help of dynamoDB, we were able to store the interactions of the users, which will then be used in the future, for other users visiting the same website.
So, finally we can proudly say that the bot is truly an Intelligent Browser assistant!!
There is still a huge scope for future development and enhancements. We can integrate with more services and API's to know completely about a website. We can also improve the way in which the interactions are selected and make it even better. We can also implement more functionalities, and make the bot to respond to a wider set of queries.
Hoping to continue developing this, and making it even better and more robust in the future!