Skip to content
This repository has been archived by the owner on Apr 21, 2023. It is now read-only.

microsoftgraph/windowsupdates-teamsbot-sample

Repository files navigation

Windows Update for Business Teams Chat Bot

Bot Framework v4 bot using Teams authentication

This bot has been created using Bot Framework, it shows how to authenticate and make requests to the Microsoft Graph, specifically for Windows Updates calls.

This sample also illustrates how to use the Bot Framework support for OAuth in your bot. Teams behaves slightly differently than other channels in this regard. Specifically an Invoke Activity is sent to the bot rather than the Event Activity used by other channels. This Invoke Activity must be forwarded to the dialog if the OAuthPrompt is being used. This is done by subclassing the ActivityHandler and this sample includes a reusable TeamsActivityHandler. This class is a candidate for future inclusion in the Bot Framework SDK.

The sample uses the bot authentication capabilities in Azure Bot Service, providing features to make it easier to develop a bot that authenticates users to various identity providers such as Azure AD (Azure Active Directory), GitHub, Uber, etc. The OAuth token is then used to make basic Microsoft Graph queries.

IMPORTANT: The manifest file in this app adds "token.botframework.com" to the list of validDomains. This must be included in any bot that uses the Bot Framework OAuth flow.

Prerequisites

  • Microsoft Teams is installed and you have an account (not a guest account)

  • Node.js version 10.14 or higher

    # determine node version
    node --version

To try this sample

  • Clone the repository

  • In a console, navigate to the repository root directory

  • Install modules

    npm install
  • Run ngrok - point to port 3978

    ngrok http -host-header=rewrite 3978
  • Create Azure Bot registration resource in Azure

    • Use the current https URL you were given by running ngrok. Append with the path /api/messages used by this sample
    • Ensure that you've enabled the Teams Channel
    • Ensure that you've connected an identity provider to enable authentication.
  • Update the .env configuration for the bot to use the Microsoft App Id and App Password from the Bot Framework registration. (Note the App Password is referred to as the "client secret" in the Azure portal and you can always create a new client secret anytime.)

  • This step is specific to Teams.

    • Edit the manifest.json contained in the teamsAppManifest folder to replace your Microsoft App Id (that was created when you registered your bot earlier) everywhere you see the place holder string <<YOUR-MICROSOFT-APP-ID>> (depending on the scenario the Microsoft App Id may occur multiple times in the manifest.json)
    • Zip up the contents of the teamsAppManifest folder to create a manifest.zip
    • Upload the manifest.zip to Teams (in the Apps view click "Upload a custom app")
  • Run the bot

    node index.js

Interacting with the bot in Teams

Note this manifest.json specified that the bot will be installed in a "personal" scope only. Please refer to Teams documentation for more details.

You can interact with this bot by sending it a message. The bot will respond by requesting you to login to AAD. From there you can select a workflow and provide the required additional information when prompted. Then the bot will make a call to the Graph API and execute the selected workflow.

Deploy the bot to Azure

To learn more about deploying a bot to Azure, see Deploy your bot to Azure for a complete list of deployment instructions.

Further reading

Further reading

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

About

No description or website provided.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published