Artificial Intelligence (AI) is perhaps one of most powerful technology disruptions taking place today. One of the major components gaining value in an AI system is the Bot framework. There are quite a few Bot frameworks available in the current market, such as the Facebook Bot Engine, API.ai, and Viv (co-founded by authors of Siri).
This blog post talks about the Microsoft Bot framework and one of the demo applications that our team created as part of the Ness Hackathon, Gear Up 2017. We wanted to develop something that will help business users simplify reporting needs.
The Bot framework enables us to build intelligent agents to interact with users through many channels (such as shown in Figure 1), making the technology a communication platform that generates a better user experience.
The Figure 1 below depicts the basic overview of the Microsoft Bot framework.
Our idea was to integrate SSRS Web APIs with the Bot framework. The architecture of the concept is shown in Figure 2. The objective of this concept is to provide an interactive way for users to communicate with reporting services. We picked “SQL Server Reporting service” for our Bot in the project. This “Reporting Bot” will be used to enhance the user experience in the application and fetch the desired reports. It will act as a third-party agent and interact with the SSRS web service on behalf of the user.
As you can see in the image, the Reporting Bot sits between the SSRS web service and the user, where the user will be communicating with the Bot through chat. It can be integrated with Skype chat, Slack or a custom-designed chat system in your ASP.NET application.
The Conversation Flow:
You can see the flow of the conversation in the activity diagram (Fig 3.) where a user starts the conversation and the Reporting Bot presents the list of the available reports to the user. Here, we can add sign-in cards to get the user authenticated for the reporting service. The sign-in card can be used to authenticate the user through OAuth. Then based on the permission, the Bot will fetch the list of available reports to the user. Once the user selects the report from the list presented, the Bot will check if there are any input-parameters required for the reports and if yes, it will communicate with the user to collect the input values for each parameter. Once all the input values are collected, the Bot will ask the user in what format he would like to get the report file. Depending on the user response, the Bot will send the file to the user.
In addition to this flow, the SSRS subscription functionality can also be added very easily, which we didn’t implement in this particular demo. The SSRS subscription allows you to subscribe to the reports by defining its ‘input parameters’, ‘output format’ (like pdf/excel/html, etc.) and ‘type’ (i.e. email/file share) along with a schedule which is similar to CRON Jobs.
Making Your Bot Intelligent:
One of the Microsoft Cognitive Services is LUIS (Language Understanding Intelligent Service). LUIS is designed to provide you with an easy way to create models where your application can understand the user commands. You need to create a LUIS model that consists of ‘Intent’ and ‘Utterances’. Intent is ‘what a user wants’ and utterances are the various ways a user can ask questions. The combination of these two is a model that understands the user intent based on the utterances defined. Once the intent is found, the model can redirect the user request to the appropriate method.
Although we implemented LUIS in this demo Bot, there are a few other cognitive services available to be integrated with your Bot which can be an add-on to your system:
Making use of these services is completely dependent on your business needs and target audience.
Overall, the generic concept is to provide a Conversational User Interface (CUI) to your reporting system and to create a framework that will provide a way to extend/inherit the reporting functionality to your own project needs. Although we used the SSRS service in our demo, any other reporting service could be used, and perhaps you could also integrate a custom-designed reporting Web service. The Reporting Bot will act as a plug-in to your core business-application.
When we thought about the concept, we had a particular target audience in our mind, like the users who are frequently in need of reports. For example, people from domains like sales/marketing/finance/trading/etc. usually make decisions based on reports. This concept would be an ideal fit in such cases and would help simplify the user experience for reporting systems.