page_type | description | products | languages | extensions | urlFragment | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sample |
This sample app demonstrates the use of tag mention funtionality in teams scope using Bot Framework. |
|
|
|
officedev-microsoft-teams-samples-bot-tag-mention-csharp |
This sample app demonstrates the use of tag mention funtionality in teams scope using Bot Framework.
- Bots
- Adaptive Cards
- Teams Conversation Events
- Microsoft Teams is installed and you have an account
- .NET SDK version 6.0
- dev tunnel or ngrok latest version or equivalent tunnelling solution
- Create tags within the team channel prior to utilizing the bot.
- Register a new application in the Microsoft Entra ID � App Registrations portal.
- Select New Registration and on the register an application page, set following values:
- Set name to your app name.
- Choose the supported account types (any account type will work)
- Leave Redirect URI empty.
- Choose Register.
- On the overview page, copy and save the Application (client) ID, Directory (tenant) ID. You�ll need those later when updating your Teams application manifest and in the appsettings.json.
- Under Manage, select Expose an API.
- Select the Set link to generate the Application ID URI in the form of
api://{base-url}/botid-{AppID}
. Insert your fully qualified domain name (with a forward slash "/" appended to the end) between the double forward slashes and the GUID. The entire ID should have the form of:api://fully-qualified-domain-name/botid-{AppID}
- ex:
api://%ngrokDomain%.ngrok-free.app/botid-00000000-0000-0000-0000-000000000000
.
- ex:
- Select the Add a scope button. In the panel that opens, enter
access_as_user
as the Scope name. - Set Who can consent? to
Admins and users
- Fill in the fields for configuring the admin and user consent prompts with values that are appropriate for the
access_as_user
scope:- Admin consent title: Teams can access the user�s profile.
- Admin consent description: Allows Teams to call the app�s web APIs as the current user.
- User consent title: Teams can access the user profile and make requests on the user's behalf.
- User consent description: Enable Teams to call this app�s APIs with the same rights as the user.
- Ensure that State is set to Enabled
- Select Add scope
- The domain part of the Scope name displayed just below the text field should automatically match the Application ID URI set in the previous step, with
/access_as_user
appended to the end:- `api://[ngrokDomain].ngrok-free.app/botid-00000000-0000-0000-0000-000000000000/access_as_user.
- The domain part of the Scope name displayed just below the text field should automatically match the Application ID URI set in the previous step, with
- In the Authorized client applications section, identify the applications that you want to authorize for your app�s web application. Each of the following IDs needs to be entered:
1fec8e78-bce4-4aaf-ab1b-5451cc387264
(Teams mobile/desktop application)5e3ce6c0-2b1f-4285-8d4b-75ee78787346
(Teams web application)
- Navigate to API Permissions, and make sure to add the follow permissions:
- Select Add a permission
- �Select Microsoft Graph ->�Delegated permissions.
TeamworkTag.Read
TeamworkTag.ReadWrite
- Click on Add permissions. Please make sure to grant the admin consent for the required permissions.
- Navigate to Authentication If an app hasn't been granted IT admin consent, users will have to provide consent the first time they use an app.
- Set redirect URI:
- Select Add a platform.
- Select web.
- Enter the redirect URI
https://token.botframework.com/.auth/web/redirect
. This will be use for bot authenticaiton.
-
Navigate to the Certificates & secrets. In the Client secrets section, click on "+ New client secret". Add a description(Name of the secret) for the secret and select �Never� for Expires. Click "Add". Once the client secret is created, copy its value, it need to be placed in the appsettings.json.
-
Create a Bot Registration
- Register a bot with Azure Bot Service, following the instructions here.
- Ensure that you've enabled the Teams Channel
- While registering the bot, use
https://<your_tunnel_domain>/api/messages
as the messaging endpoint. - Select Configuration section.
- Under configuration -> Add OAuth connection string.
- Provide connection Name : for eg
ssoconnection
- Select service provider ad
Azure Active Directory V2
- Complete the form as follows:
a. **Name:** Enter a name for the connection. You'll use this name in your bot in the appsettings.json file.
b. **Client id:** Enter the Application (client) ID that you recorded for your Azure identity provider app in the steps above.
c. **Client secret:** Enter the secret that you recorded for your Azure identity provider app in the steps above.
d. **Tenant ID** Enter value as `common`.
e. **Token Exchange Url** Enter the url in format `api://%ngrokDomain%.ngrok-free.app/botid-00000000-0000-0000-0000-000000000000`(Refer step 1.5)
f. Provide **Scopes** like "User.Read openid"
-
Run ngrok - point to port 3978
ngrok http 3978 --host-header="localhost:3978"
Alternatively, you can also use the
dev tunnels
. Please follow Create and host a dev tunnel and host the tunnel with anonymous user access command as shown below:devtunnel host -p 3978 --allow-anonymous
-
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\meetings-events\csharp\MeetingEvents.sln
-
Setup and run the bot from Visual Studio: Modify the
appsettings.json
and fill in the following details:{{MicrosoftAppId}}
- Generated from Step 1 (Application (client) ID)is the application app id{{MicrosoftAppTenantId}}
- Enter value ascommon
.{{MicrosoftAppPassword}}
- Generated from Step 1.14, also referred to as Client secret{{ ConnectionName }}
- Generated from step 15.- Press
F5
to run the project
-
Modify the
manifest.json
in the/AppManifest
folder and replace the following details:<<YOUR-MICROSOFT-APP-ID>>
with Application id generated from Step 3<<domain-name>>
- Your application's base url domain. E.g. for https://12345.ngrok-free.app the base url domain will be 12345.ngrok-free.app if you are using ngrok and if you are using dev tunnels then your domain will be like:12345.devtunnels.ms
.
-
Zip up the contents of the
AppManifest
folder to create amanifest.zip
orAppManifest_Hub
folder into aAppManifest_Hub.zip
. (Make sure that zip file does not contains any subfolder otherwise you will get error while uploading your .zip package) -
Upload the manifest.zip to Teams (in the Apps view click "Upload a custom app")
- Go to Microsoft Teams and then go to side panel, select Apps
- Choose Upload a custom App
- Go to your project directory, the ./AppManifest folder, select the zip folder, and choose Open.
- Select Add in the pop-up dialog box. Your app is uploaded to Teams.
You can interact with this bot in Teams by sending it a message, or selecting a command from the command list. The bot will respond to the following strings.
Note : Before using the Tag Mention sample in a team channel scope, please install this app in your Personal scope to enable Single Sign-On (SSO) login.
Team channel Scope
- Show Welcome
- Result: The bot will send the welcome card for you to interact with necessary commands
- Valid Scopes: team chat
Show Welcome command interaction:
- MentionTag
-
Result: The bot will respond to the message and mention a tag
-
Valid Scopes: team chat
MentionTag command interaction:
Command 1: @<Bot-name> <your-tag-name>
- It will work only if you have Graph API permissions to fetch the tags and bot will mention the tag accordingly in team's channel scope.
Command 2: @<Bot-name> @<your-tag>
- It will work without Graph API permissions but you need to provide the tag as command to experience tag mention using bot.
Hover on the tag to view the details card:
Message interaction: When you mention the bot in Teams without providing any commands, you will receive the following message.
If you attempt to use the bot before creating a tag or if you provide an incorrect tag name, you will receive the following message.
To learn more about deploying a bot to Azure, see Deploy your bot to Azure for a complete list of deployment instructions.