page_type | description | products | languages | extensions | urlFragment | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sample |
Demonstrating on how to implement sequential flow, user specific view and upto date adaptive cards in bot. |
|
|
|
officedev-microsoft-teams-samples-bot-sequential-flow-adaptive-cards-csharp |
This sample illustrates sequential workflow, user specific views and upto date adaptive cards bot and the list of incident created can be seen in messaging extension and can share a specific incident to the chat/team.
- Microsoft Teams is installed and you have an account
- .NET Core SDK version 3.1
- ngrok or equivalent tunnelling solution
-
Clone the repository
git clone https://github.com/OfficeDev/Microsoft-Teams-Samples.git
-
If you are using Visual Studio
- Launch Visual Studio
- File -> Open -> Project/Solution
- Navigate to
samples/bot-sequential-flow-adaptive-cards/csharp/
folder - Select
SequentialUserSpecificFlow.csproj
file
-
Run ngrok - point to port 3978
ngrok http -host-header=rewrite 3978
-
This step is specific to Teams.
- Edit the
manifest.json
contained in theManifest
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 themanifest.json
). - Zip up the contents of the
teamsAppManifest
folder to create amanifest.zip
- Upload the
manifest.zip
to Teams (in the Apps view click "Upload a custom app")
- Edit the
-
Update appsettings.json file with Microsoft App Id, App Secret.
-
Run your app, either from Visual Studio with
F5
or usingdotnet run
in the appropriate folder.
sequenceDiagram
participant Teams User B
participant Teams User A
participant Teams Client
Teams User A->>+Teams Client: Enters create incident bot commands
Sample App->>+Teams Client: loads card with option
Teams User A->>+Teams Client: Enters required details and assigns to user B
Sample App-->>Teams Client: Posts the incidet card with auto-refresh for user A and user B
Teams Client->>Teams User A: loads incident card with loading indicator
Teams Client->>Sample App: Automatically invokes refresh action
Sample App-->>Teams User A: Responds with Updated AC for the user A
Teams User B->>Teams Client: User opens the chat
Teams Client-->>Teams User B: Loads the incident base card
Teams Client->>Sample App: Automatically invokes refresh action
Sample App-->>Teams User B: Responds with card for user B with option to approve/reject
sequenceDiagram
participant Teams User B
participant Teams User A
participant Teams Client
Teams User A->>+Teams Client: Clicks on Incidents ME action in a group chat
opt App not installed flow
Teams Client-->>Teams User A: App install dialog
Teams User A->>Teams Client: Installs app
end
Teams Client->>+Sample App: Launches Task Module
Sample App-->>-Teams Client: Loads existing incidents created using Bot
Teams User A->>Teams Client: Selects incident to share in chat
Teams Client->>Sample App: Invoke action callback composeExtension/submitAction
Sample App-->>Teams Client: Posts Base card with auto-refresh for user A and user B
Teams Client->>Teams User A: loads incident card with loading indicator
Teams Client->>Sample App: Automatically invokes refresh action
Sample App-->>Teams User A: Responds with Updated AC for the user A
Teams User B->>Teams Client: User opens the chat
Teams Client-->>Teams User B: Loads the incident base card
Teams Client->>Sample App: Automatically invokes refresh action
Sample App-->>Teams User B: Responds with card for user B with option to approve/reject
- In Teams, Once the app is successfully installed in a group chat, ping the bot by @mentioning it. Bot will reply with a card showing that the person has initiated the incident.
- Using refresh activity only the person who has initiated will be able to proceed further by entering the details of the incident and assign it to a person from the group chat, while others in the group chat will still be able to see only the initiated card.
- User who has initiated the incident will be able to enter the details using the series of cards in a sequential flow and submit it for the further approval/rejection process.
- Once the details are submitted and assigned to a person from the group chat, it will send an updated card to the chat with all the entered details.
- Now, only the person assigned to will be able to either approve or reject it.
- After the approval/rejection of the card, the final updated card will be sent to the group chat.
-
On selecting app from messaging extension,it checks whether bot is installed in chat/team. If not installed, user will get a option for justInTimeInstallation card.
-
After successful installation, list of all incident will be available in messaging extension.
-
User can select any incident from the list and can share to that chat/team.