Tutorial: Build an Enterprise Calendar Bot

APPLIES TO: Composer v2.x

Create your project in Composer

The Enterprise Calendar Bot template is included in the Bot Framework Composer by default. Follow these steps to create a project:

  1. Open Bot Framework Composer (version 2.0.0 or later).

  2. On the home page, select Create new.

  3. Select the C# Enterprise Calendar Bot template, and select Next.

  4. Enter your desired Name, Location, and Runtime type.

    For the runtime type, you can choose Azure Web App or Azure Functions. For more information about these service types, see Choose an Azure compute service for your application.

  5. Select Create. Composer takes a few moments to create your bot from the template.

After creating the bot, you'll notice errors. In the next section, you'll enter the credentials to fix them.

Provision Azure resources

The Enterprise Calendar Bot requires Azure resources in order to run locally. Follow these steps to provision the required resources:

  1. Select the Publish button on the left. Then select the Publishing profile tab and select Create new.

  2. Fill out the values to create a publishing profile and provision resources. For more information see the Publish a bot to Azure article. The following resources are required for local development:

    • Microsoft Application Registration
    • Azure Hosting
    • Azure Bot resource
    • Microsoft Language Understanding Authoring Account
  3. Go to Configure > Development Resources. Then select Set up Language Understanding.

  4. Select Use existing resources and enter the subscription and the resource from the resource group you created earlier.

  5. Select Next and then select Done.

Configure authentication

You must configure an authentication connection on your Azure Bot in order to log in and access Microsoft Graph resources. You can configure these settings either through the Azure portal or via the Azure CLI.

Option 1: Using the Azure portal

  1. Go to the Azure portal.

  2. Open your Azure Bot resource and go to the Configuration tab.

  3. Click Add OAuth Connection Settings.

  4. Assign your connection setting a name (save this value for later).

  5. Select Microsoft Entra ID from the Service Provider dropdown.

  6. Fill in the following fields and click Save:

    • Client id: your Microsoft App ID
    • Client secret: your Microsoft App Password
    • Tenant ID: your Microsoft Entra ID tenant ID, or "common" to support any tenant
    • Scopes: Calendars.ReadWrite Contacts.Read People.Read User.ReadBasic.All User.Read
  7. In the Configuration tab, click Manage next to your Microsoft App ID.

  8. In the API permissions tab, click Add a permission.

  9. Click Microsoft Graph > Delegated Permissions and add the following scopes:

    • Calendars.ReadWrite
    • Contacts.Read
    • People.Read
    • User.ReadBasic.All
    • User.Read
  10. In the Authentication tab, click Add a platform.

    1. Select Web.
    2. Set the URL to https://token.botframework.com/.auth/web/redirect.
  11. In Bot Framework Composer, open your Project Settings and toggle the Advanced Settings View

  12. Set the following property to the value from Step 3:

    {
      "oauthConnectionName": "Outlook",
    }
    

Option 2: Using Azure CLI

  1. Get your Microsoft App Object ID (used in later steps):

    az ad app show --id <bot-app-id> --query objectId
    
  2. Set the Redirect URL on your Microsoft App:

    az rest --method patch --url https://graph.microsoft.com/v1.0/applications/<objectId> --body "{'web': {'redirectUris': ['https://token.botframework.com/.auth/web/redirect']}}"
    
  3. Add the required Microsoft Graph scopes to your Microsoft App:

    az rest --method patch --url https://graph.microsoft.com/v1.0/applications/<objectId> --body "{ 'requiredResourceAccess': [{'resourceAppId': '00000003-0000-0000-c000-000000000000', 'resourceAccess': [ { 'type': 'Scope', 'id': 'ba47897c-39ec-4d83-8086-ee8256fa737d' }, { 'type': 'Scope', 'id': 'ff74d97f-43af-4b68-9f2a-b77ee6968c5d' },  { 'type': 'Scope', 'id': '1ec239c2-d7c9-4623-a91a-a9775856bb36' }, { 'type': 'Scope', 'id': 'b340eb25-3456-403f-be2f-af7a0d370277' }, { 'type': 'Scope', 'id': 'e1fe6dd8-ba31-4d61-89e7-88639da4683d' } ]} ]}"
    
  4. Add your OAuth setting to your Azure Bot Service. The values for bot-name, bot-rg, bot-app-id, and bot-app-secret can be found in your bot's publish profile under Publish > Publishing profile > Edit > Import existing resources > Next.

    az bot authsetting create  --name <bot-name> --resource-group <bot-rg> --client-id <bot-app-id> --client-secret <bot-app-secret>  --service "Aadv2" --setting-name "Outlook" --provider-scope-string "Calendars.ReadWrite Contacts.Read People.Read User.Read User.ReadBasic.All" --parameters clientId="<bot-app-id>" clientSecret="<bot-app-secret>" tenantId=common
    
  5. Update your Bot settings with your OAuth Connection name in the Advanced Settings View:

    {
      "oauthConnectionName": "Outlook",
    }
    

Next steps

After you run and test your bot locally, you can publish your bot to Azure.

Publish to Azure

To publish your Enterprise Calendar Bot, follow the steps in the Publish your bot section of the publishing to Azure article.