| page_type | sample | ||||
|---|---|---|---|---|---|
| description | This sample shows a feature where user can send task request to his manager and manager can approve/reject the request in group chat. | ||||
| products |
|
||||
| languages |
|
||||
| extensions |
|
||||
| urlFragment | officedev-microsoft-teams-samples-bot-request-approval-csharp |
This sample shows a feature where:
- Requester : Can request for any task approval from manager by initiating a request in group chat using bot command
requestand only requester can edit the request card. - Manager : Can see the request raised by user in the same group chat with an option of approve or reject.
- Others: Other members in the group chat can see the request details only.
-
.NET Core SDK version 6.0
determine dotnet version
dotnet --version
-
Ngrok (For local environment testing) Latest (any other tunneling software can also be used)
run ngrok locally
ngrok http -host-header=localhost 3978
-
Teams Microsoft Teams is installed and you have an account
-
In Azure portal, create a Azure Bot resource.
- For bot handle, make up a name.
- Select "Use existing app registration" (Create the app registration in Azure Active Directory beforehand.)
- If you don't have an Azure account create an Azure free account here
-
While registering the bot, use
https://<your_ngrok_url>/api/messagesas the messaging endpoint.NOTE: When you create your bot you will create an App ID and App password - make sure you keep these for later.
-
Register your app with Microsoft identity platform via the Azure AD portal
-
Your app must be registered in the Azure AD portal. See Register an application with the Microsoft identity platform.
-
Ensure that you've enabled the Teams Channel
-
-
Clone the repository
git clone https://github.com/OfficeDev/Microsoft-Teams-Samples.git
-
Open the code in Visual Studio
- File -> Open -> Project/Solution
- Navigate to folder where repository is cloned then
samples/bot-request-approval/csharp/BotRequestApproval.sln
-
Run ngrok - point to port 3978
# ngrok http -host-header=rewrite 3978 -
Setup and run the bot from Visual Studio: Modify the
appsettings.jsonand fill in the following details:MicrosoftAppId- Generated from Step 1 (Application (client) ID)is the application app idMicrosoftAppPassword- Generated from Step 1, also referred to as Client secret- Press
F5to run the project
-
Setup Manifest for Teams
-
This step is specific to Teams.
- Edit the
manifest.jsoncontained in the ./AppPackage folder to replace your Microsoft App Id (that was created when you registered your app registration earlier) everywhere you see the place holder string{{Microsoft-App-Id}}(depending on the scenario the Microsoft App Id may occur multiple times in themanifest.json) - Edit the
manifest.jsonforvalidDomainsand replace{{domain-name}}with base Url of your domain. E.g. if you are using ngrok it would behttps://1234.ngrok.iothen your domain-name will be1234.ngrok.io. - Zip up the contents of the
AppPackagefolder to create amanifest.zip(Make sure that zip file does not contains any subfolder otherwise you will get error while uploading your .zip package)
- Edit the
-
Upload the manifest.zip to Teams (in the Apps view click "Upload a custom app")
- Go to Microsoft Teams. From the lower left corner, select Apps
- From the lower left corner, choose Upload a custom App
- Go to your project directory, the ./AppPackage folder, select the zip folder, and choose Open.
- Select Add in the pop-up dialog box. Your app is uploaded to Teams.
-
Initiated request using bot command
requestin group chat. -
Card will refresh for requester to fill details.
-
After submitting the request, requester can edit or cancel the request.
Note: Users who created the card will only be able to see the buttons to edit or cancel the request.
Manager:
-
After requester submit the request, manager can approve/reject the request.
Note: Manager of the task request will only be able to see the buttons to approve or reject the request.
-
If manager approves or rejects the request, card will be refreshed for all the members in group chat.





