Michigan State UniversityMicrosoft Intune Company Portal Helper BotProject PlanSpring 2017Microsoft Staff:Kurt SeippelTeam:Lefan ZhangNicholas BuntonRamon NieblaDavid SaksaAnh Nguyen

Team MicrosoftProject Plan DocumentTable of Contents1. Executive Summary .32. Functional Specifications .43. Design Specifications3.1Overview3.2User Interface3.3Process Flow .64. Technical Specifications .125. Risk Analysis .156. Schedule .172

Team MicrosoftProject Plan Document1. Executive SummarySince 1975, Microsoft has become a prominent leader of innovative software, hardware,and services. Its headquarters in Redmond, WA and satellite offices all over the worldthrive on the idea of productivity and the empowerment of businesses and individualsto achieve more.Microsoft Intune is a cloud-based enterprise mobility management service that aims tohelp workforces manage their mobile devices. With the Intune service, clients are able tocontrol which devices are able to access company data, manage the applicationsinstalled on the devices, and make sure that the devices are compliant to companysecurity requirements.Intune’s client base is growing at a rapid pace. The Company Portal app allows clients toaccess their Intune account and manage their devices on-the-go. The company portalandroid team actively receives bug reports from users without much information aboutwhat they are experiencing. These experiences can vary from application crashes to notknowing how to use a specific feature of the application. This leads to unorganized andcluttered data that can be avoided if the user was presented with appropriatedocumentation on the issue, or a way to report detailed bugs to Microsoft engineers.A solution to fix these issues would be to implement a helper chat bot that couldunderstand if the user is trying to get support for the Intune service or if they are tryingto report a bug or give feedback.3

Team MicrosoftProject Plan Document2. Functional SpecificationsThe Intune Company Portal Helper Bot is an advanced natural language bot capable ofdiagnosing, reporting, and resolving problems customers are having with the CompanyPortal experience. Many Company Portal and Intune customers are experiencingproblems with the application and are unable to resolve their problems. It’s difficult andtime consuming for the customer to search for help via Google or the Documentation.In addition, searching via search engines proves to include many unrelated answers. Thecurrent bug reporting system is also a key problem. To submit a bug, the user clicks abutton which will email the Microsoft team with log files. The log files are long,complicated files which include tons of noise making them quite useless in many cases.It does not have any more information about the bug or have any information abouthow to reproduce the bug. These are our two main problems.Our primary goal is to create a bot capable of resolving problems without the need forhuman interaction. The first step is to create an intelligent bot capable of finding,linking, and distributing relevant articles and links to the user when they ask a question.This is done via a messaging application on a mobile device. When a user asks aquestion, the bot will do several things. First, it will query API.AI to parse out keywordsfrom the question. Then, the bot takes these keywords and queries the GitHub SearchAPI on the Intune Documentations to look for articles relating to the issue. Finally, thebot will check the response and send back articles it received. The bot gains knowledgeon previous experiences to provide even more accurate results for future users. Inaddition to linking users to relevant articles, another main goal is to provide a betterbug reporting experience. As stated above, current bug reports consist primarily of logfiles which do not help the user nor the Microsoft team. Our team plans onimplementing a new system to report troublesome bugs back to the Microsoft team.The new process would simply be integrated into the chat bot. Whenever the bot isunable to find relevant or helpful articles the user can send a bug report instead. Thebot will ask questions relating to how they experienced the bug, how to reproduce the4

Team MicrosoftProject Plan Documentbug, as well as being able to attach relevant screenshots to demonstrate the problemthe user is having.The third goal of our project is to make the bot more intelligent over time. To do this,the bot will need a sophisticated knowledge bank capable of teaching itself to predictthe user’s intentions as well as learn from past experiences. In the early life of the bot,the bot has a difficult time predicting which articles are most helpful to a user. As timegoes on, the model will continually update itself in a variety of ways. First, as Microsoftadds more articles and documentation to help users, the bot will be able to use thesearticles to provide more accurate results. The bot is constantly keeping track of howoften certain links appear, how often they are clicked, and how frequently a specificquestion is asked. Using a combination of this information, the bot will be able toprovide more accurate results for future users. In addition, during the conversation thebot will ask questions relating to the articles. Based on this feedback the bot will updateits article bank and knowledge model to provide better results for future users.The bot will first be available for Android. The Android app is the primary goal of theproject and will be the main focus for the project. Once the Android app is functioningcompletely, the iOS app will also be built. Because the bot must work for multipleplatforms, it is important for the team to build an extensible app.5

Team MicrosoftProject Plan Document3. Design Specification3.1 OverviewThe Intune Company Portal Helper bot is designed for the user to interact and talk tothe bot in a question-answer manner. Therefore, the user interface allows the user toinput messages and expect the bot to return a sophisticated and programmed response.Like most messaging applications, users are able to see message history until they endthe session. When the bot responds with a link that it thinks might be helpful to users,users are then able to click on the provided link to open it in their default web browserapplication.3.2 User InterfaceSince the Intune Company Portal Helper bot is an add-on feature to Microsoft’s Intune,its user interface is kept as simple and functional for a messaging application aspossible.6

Team MicrosoftProject Plan DocumentFigure 1: Bot responds with relevantFigure 2: WebView that is displayedlink to appropriate support articlewhen user clicks on linkThe above mockups demonstrate a basic user flow where users open the IntuneCompany Portal Helper Bot application and ask a question of how to enroll a user onAndroid platform. In return, the bot programmatically searches and responds with a linkit thinks is helpful. Users can then click on the link to have it open in WebView clientsupported by Android as demonstrated in figure 2.In the case where the bot is unable to retrieve a helpful answer, it continues to ask ifusers could provide more details. If users agree to proceed seeking for help, they can doso by rephrasing the previous question. The bot then attempts to find a sophisticatedanswer to return to users. Figure 3 depicts this scenario.7

Team MicrosoftProject Plan DocumentFigure 3. Bot reattempts to find an answer.8

Team MicrosoftProject Plan DocumentWhen the bot fails to retrieve an answer the first time, it asks the users if they want totry again. If users deny, they are asked whether they would like to file a bug report.Users can continue to converse with the bot by giving more details on the issue, so thebot can store the transcript to send to Microsoft engineers, as shown in Figure 4 and 5.Figure 4. Bot asks for bug report.Figure 5. User gives feedback.After receiving feedback from user, the bot then proceeds to send the entireconversation to Microsoft’s engineering for inspection and provide further details onhow to go about fixing the reported issue to client.9

Team MicrosoftProject Plan Document3.3 Process Flow10

Team MicrosoftProject Plan Document4. Technical SpecificationsSystem ArchitectureFor the system architecture, our bot will be hosted in Microsoft Azure Bot Services. AMicrosoft Intune user will be able to communicate using the Microsoft Intune CompanyPortal app. When the user sends a message to the bot, the message will be sent to model to figure out the intent of the user’s message. Once an intent has beenclassified for the message, then the model will parse out keywords in the message tofigure out proper articles to send to the users using the GitHub search API. The articleURL’s will be returned to the bot, where the bot will be able to provide the article linksto the Intune user to help figure out their issue. The SQL database hosted in MicrosoftAzure will keep track of which articles are returned from the certain keywords of a user’smessage. The bot will prompt the user to see if the article they viewed was helpful ornot and will keep track of that in the database in order to present the help articles in theorder of being the most relevant related to the user’s issue.11

Team MicrosoftProject Plan DocumentThere are two other cases that could occur in the Company Portal user and botconversation. If the user sends a greeting message, such as “Hello, I’m having aproblem.”, the bot will begin to prompt the user to figure out the specifics of theproblem so it can attempt to figure out an intent.The last case would be when none of the provided articles helped the user figure out asolution to their problem. In this case, the bot will create a transcript of the wholeconversation and send a bug report to Microsoft Intune engineers so they can begin todebug the issue.Mobile ApplicationsOur Android and iOS applications will allow Microsoft Intune users to have aconversation with the bot. The application will be able to communicate with the bot viaDirect Line API tline/). This APIallows the bot to execute HTTP GET and POST requests. The application will receive andsend data as a JSON object.Microsoft Intune users will be able to send text messages and also attach files to theirmessages. The file attachments (such as images) will be beneficial to the MicrosoftIntune engineers as it will make it easier to understand what type of bug is occurring.APIOur bot will be using three API’s. The first one will be the GitHub Search API. This willretrieve Microsoft Intune documentation based upon search terms that is received froma user. Once retrieved, the bot will then be able to link users to appropriate articles.The second API used is the Direct Line API. This API will connect the bot to the mobileapplication. Once the bot is connected, it will be able to receive messages from Intuneusers and send messages back to them, to help them figure out any potential issuesthey are having.The last API we are using is our natural language processing model called When auser sends a message in the mobile application, our bot will send the message to the12

Team MicrosoftProject Plan model which will figure out the intent of the message. If the message has beenclassified as a general question (the user is trying to figure out how to do something onIntune), then our bot will proceed to use the GitHub Search API to gather articles tosend back to the user. If the user’s message has not been classified as a generalquestion, then our model will generate an appropriate message to send back to theuser.Microsoft AzureThe bot will be hosted in Microsoft Azure using Azure Bot Services. The Direct Line API allowsour Android application to communicate with a bot in Azure Bot Services which will allow theapplication to carry out a real time conversation with the bot.Also, the bot will be using a Azure SQL Database. The database will be used to be able to makethe bot smarter. The bot will keep track of which articles are clicked on by the user in the mobileapplication. Once a user views an article, the bot will prompt the user to see if the article washelpful or not. This type of information will help the bot learn which articles are helpful andwhich ones are not.Also, the SQL database will allow Microsoft database administrators to enter in any possible newbugs that have just been discovered in the Company Portal app. If an Intune user sends amessage that resulted in zero help articles being returned, then the bot will search the SQLdatabase to see if the user’s message relates to any new bugs that have been discovered. If thatis the case, the bot will let the user know that their issue is currently being resolved by Microsoftengineers and would prompt the user to send a bug report to the Microsoft Intune team.Software Technologies1. Microsoft Bot Framework (C#)2. Api.ai3. Android (Java)4. Direct Line API (Java)5. Microsoft Azure6. GitHub Search API7. iOS (Swift)13

Team MicrosoftProject Plan DocumentDevelopment EnvironmentsThe bot will be created in Visual Studio using the Microsoft Bot Framework, written inC#. The model will be used to create intents for the bot to recognize and then testthe bot using the Microsoft Bot Framework Emulator. Once the bot is successfully testedon the Emulator, the bot will be moved to Microsoft Azure to be able to be used withthe mobile applications.The Android application will be created in Android Studio. In order to connect theAndroid app with the bot, the Direct Line API will allow users to have conversations withthe bot in the application. The iOS application will be developed in Xcode and will alsobe using the Direct Line API to allow conversations.Test PlanThe bot will be tested locally using the Microsoft Bot Emulator, in which our bot will betested on how it responds to certain messages. The Android application will be testedby running the app in Android Studio, and the iOS application will be tested locally onXcode. Once a prototype is developed for the bot, the Microsoft Android CompanyPortal team will provide real life scenario testing. The testing team will ask the botfrequently asked questions and report test bugs and then the team will receive andanalyze that data to see if there are ways to improve the user experience.14

Team MicrosoftProject Plan Document5. Risk AnalysisMicrosoft Bot FrameworkDifficulty: EasyDescription: The framework that the team will be using to develop a naturallanguage processing bot. None of the team members have worked with the botframework before. This bot framework is essential for the project.Mitigation: Review the documentation of the Microsoft Bot Framework, as wellas going over various tutorials of how to use the framework.REST API with Microsoft Azure Bot ServicesDifficulty: ModerateDescription: Android mobile application will use REST APIs to send messages tothe bot from the Intune Company Portal user and vice versa. The format of themessages will be a JSON object and will need to be formatted to fit into theAndroid application chat interface. The bot should be able to handle multipletypes of data and information.Mitigation: Review Azure Bot Services documentation and go over tutorials.Experiment with the Azure IDE available through the Azure website.API.aiDifficulty: ModerateDescription: Advanced natural language processing model, which has the abilityto determine the intent(s) of a conversation. will parse out certain keywordsin a message that will make searching for appropriate articles more efficient.Mitigation: Go through tutorials and documentation. Create automatic modelsto optimize the fluidity of the conversation between the user and bot.15

Team MicrosoftProject Plan DocumentAndroid DevelopmentDifficulty: Moderate/HardDescription: The team must develop an Android application that allows aMicrosoft Intune user to have a conversation with the developed bot. Since theteam has little experience with Android this will be a challenge.Mitigation: Reviewing documentation and going over tutorials.iOS DevelopmentDifficulty: Moderate/HardDescription: Along with the Android application, the team has to develop an iOSapplication. With almost no experience in iOS development, this will be difficultto mitigate.Mitigation: Reviewing documentation and going over tutorials.16

Team MicrosoftProject Plan Document6. ScheduleStages Week 1: 01/16 - 01/221. Review documentation and tutorials2. Get familiar with all software we are going to use3. Team Assignment Week 2: 01/23 - 01/291. Set up meeting schedules2. Build screen mock up3. Process flow4. Project Design Document Week 3: 01/30 - 02/051. Build Basic UI2. Research various searching methods3. Bot transcript for conversation uploading to a text file4. Let bot framework interact with LUIS Week 4: 02/06 - 02/121. API to link back to the framework2. Implement a basic search engine3. Conservation storage and what data do we store4. Build up LUIS models Week 5: 02/13 - 02/191. Chat interface setting on Android2. Come up with a score threshold for the search engine3. Make alpha presentation PowerPoint4. Practice alpha presentation Week 6: 02/20 - 02/261. Pop open Chrome browser setting2. Get article bank up and running3. Figure out how to get attachment into the email4. Figure out intent and entities in LUIS model Week 7: 02/27 - 03/051. Design Bot Icon17

Team MicrosoftProject Plan Document2. Compare and store results from previous requests3. Link intentions from LUIS as independent functions4. JSON Parsing (make this on C# and upload to LUIS) Week 8: 03/06 - 03/121. Store the conversation on the device temporarily for retrieval2. Compare and store results from previous requests3. Send bot information to Android using API4. Discuss what type of intents Week 9: 03/13 - 03/191. Instructional tutorial for taking and storing screenshots2. Make Bot smarter based on search3. JSON "cheat sheet" based on intentions from LUIS Week 10: 03/20 - 03/261. Research on annotations on images2. Make bot smarter based on search3. Get familiar with Azure Week 11: 03/27 - 04/021. Refresh button/reset the connection2. Make Beta presentation PowerPoint3. Practice for the Beta presentation Week 12: 04/03 - 04/091. Refresh button/reset the connection2. Make bot smarter based on search3. Put bot in the cloud Week 13: 04/10 - 04/161. Practice for status report2. Start working on the project video3. Make bot smarter based on search4. Build IOS UI5. Chat interface setting on IOS Week 14: 04/17 - 04/231. Store the conversation on the device temporarily for retrieval on iOS2. Working on project video3. Instructional tutorial for taking and storing screenshots on iOS Week 15: 04/24 - 04/3018

Team MicrosoftProject Plan Document1. Working on project video2. Refresh button/reset the connection on iOS3. Design day Week 16: 05/01 - 05/071. Finish project video2. Complete the application on Android and iOS19

Team Microsoft Project Plan Document 3 1. Executive Summary Since 1975, Microsoft has become a prominent leader of innovative software, hardware, and services. Its headquarters in Redmond, WA and satellite offices all over the world thrive on the idea of productivity and the e