 Hello, my name is Prateesh Ebrahim. I'm a principal program manager on the Outlook extensibility team. In this video, I'm going to talk about Outlook add-in commands and show you how easy it is to build them. In addition, I'll cover new features and capabilities, including the new Outlook Inclined Store, which is a great way for users to discover and acquire your add-in. First, let's do a quick recap on Outlook add-ins. Add-ins help developers extend Outlook across platforms using standard web technologies. There are two main components to an add-in. The XML manifest that registers the add-in with Outlook and your HTML plus JavaScript code that's running on your web servers. Add-ins can communicate with Outlook using a lightweight JavaScript library called Office.js. One of the key features of Outlook add-ins is that you can write the add-in once and it runs everywhere, be it desktop Outlook on Windows or Mac or the Outlook web client that runs on all the major browsers, including phone and tablet. Depending on your scenario, your add-in may target consumer or business users, as we support add-ins in Office 365, On-Premise Exchange, and Outlook.com. By extending Outlook functionality, add-ins allow users to complete their task quickly and help them be more productive. There are three ways developers can extend Outlook today, in read, compose, or contextually. Notice how the Salesforce add-in lets the user look up CRM information. It allows the user to add new leads or opportunities without ever having to leave Outlook. Boomerang and Compose reminds you when folks have not responded to your email. It is a great follow-up scenario. Add-in commands allow developers to create their own buttons directly on the native command surface of Office. And in Outlook 1016, this is the Outlook ribbon. By doing so, your add-in looks more native and it really stands out to the user. Add-ins are easily accessible and now your buttons are just a click away. We announced add-ins commands back in April and we continue to update this model with more capabilities, such as the ability to insert a menu, as you can see in the emoji example below. It's time to see this in action. Notice the add-in commands in my Outlook 2016 client. I can now launch the Salesforce add-in on the ribbon with just one click. I can see the CRM information about the people and accounts associated with this email. Let me switch over to Compose. Notice how Boomerang took advantage of the menu functionality. I can now choose one of the remind me options and Boomerang updates the info bar, letting me know that this message will return in a week's time. It's time to build an add-in command now. This demonstration uses Yeoman. Yeoman is a scaffolding tool for modern web apps. In this example, I will use the Yeoman Office Generator that builds all the scaffolding I need to build an Outlook add-in command. In addition, it hosts the add-in right off your dev box, so you can try it out in Outlook immediately. I will slide in the end with all the links to get started, including these Yeoman steps and the GitHub add-in sample that I will use shortly in this demo. In the interest of time, I ran some of these commands already, but I will walk through them. The first step lets you install Yeoman, the Office Generator, and dependent component called Bower. Now, this will spew out a bunch of text which I don't show here. The second step, I created a folder called demo add-in commands. I then ran the Yeoman Office Generator. I followed all the default commands, which then generated all the code I needed for the Outlook add-in. I then went to GitHub and I downloaded the sample called command-demo. Once I did that, I copied all the files and folders from the GitHub sample into my scaffolding folder. Once I did that, I ran Gulp Server Static. Gulp basically starts the web server. This step basically starts the web server on localhost 8443. Running Gulp will generate a self-signed certificate. You can view the certificate from your browser by navigating to this URL. Please install and trust the certificate, as all add-ins must be hosted off an SSL endpoint. Let's go to the management interface. You can go to the management interface and over by clicking on the gear icon and clicking on manage add-ins. You can see in manage add-ins, I can install add-ins a couple of ways. One is to install from the store. The option I'm going to pick is install from file. I will browse to the scaffolding folder, find my manifest, and install it. This will upload my manifest to my mailbox. Outlook will check to see if syntactically everything looks right. And if so, the add-in is installed in my mailbox. Let's go into Outlook. Now Outlook gets a notification whenever a user or an admin has installed an add-in in my mailbox. When it gets that notification, Outlook will refresh the ribbon, as you can see, and these commands automatically show up on my ribbon. If I go into my compose surface, you can see that this sample creates a menu. I can choose one of the items in the menu, which creates some text and inserts it into the body of the email. It also updates the info bar saying that it did so successfully. Let me resize the ribbon. You can see that I didn't have to do any coding to handle the scaling of my commands and my buttons and my icons. Outlook did all of that for me. So how did this all work? I will go through the manifest, as this is the most important piece to understand. The manifest provides a declarative way to define UX and describes how your add-in would show on the Outlook ribbon. In other words, Outlook passes your manifest XML and automatically creates all the native UX for your buttons and your menus. See how I defined a control here, which is of type button on the compose command surface. The button has a set of icons and it has an action associated with it. The action type is execute function. The function name here is add default message to body. This function is defined in this function file. The second control is of type menu, as you can see. As you know, menu has a set of items associated with it. The first item also has an action, whose type is execute function. The second item in the menu is of type show task pane. What that means is when you click on item number two in this menu, it launches this task pane from this URL. Below in this manifest, you can see all the resource definitions for the names of your buttons over here, as well as the URLs to your icons and the URLs to your task pane and function file. Let's take a quick look at the code. See home.js under the app compose folder. Using office.js, I'm able to navigate to the item, body object, and call the method setSelectedDataAsync. This inserts text at the selected cursor. You can see it takes two parameters, the text to insert and a caution parameter, which lets me specify if I want to insert it as text or HTML. Since this function is an async routine, the callback method lets me know if the operation succeeded and if so, it writes to that info bar saying the message was inserted successfully. So what else is new? I'm happy to announce that add-in commands is coming soon to Outlook 2013. You can see that the Evernote add-in works in Outlook 2013, same with the PayPal app. And both of these add-ins work without any code changes, both in Outlook 2016 and in 2013. Now that we talked about Outlook add-in commands in Outlook 2016 and 2013, let's talk about how you can get these add-ins. Users can now install apps right from inside the Outlook experience. We call this feature the Inclined Store. Our primary goal was to give the store a native Outlook experience and make it super easy for users to install add-ins. Let's do a quick demo. You can see this Inclined experience by clicking on the Store button on the Outlook ribbon. Notice how some of the add-ins are already toggled to the on state. That's because these add-ins are already installed on my mailbox. To install an add-in, I can simply toggle the Evernote add-in to the on state. Notice there is search functionality here. I can search for any add-in in this experience. I can click on it to see more details. For example, I can see the ratings and the reviews and screenshot. When I'm done, I can close this Inclined experience. And you can see Outlook has refreshed and installed the Evernote add-in on my ribbon. Add-in commands is already available in Outlook 2016. In January, we will release support for add-in commands in Outlook 2013. And the Inclined Store will also be broadly available in Outlook 2016. Our plan does not stop here. Our goal is to take add-in commands to overandoutlook.com. We also plan to bring the Inclined Store to the other clients. Stay tuned for more updates. Here are some resources for you. I encourage you to visit dev.outlook.com. You can find the GitHub sample that I used to build this Outlook add-in command. You should have everything you need to get started. Thanks for telling this session, and I hope you found it useful. Happy coding, folks!