diff --git a/authoring/solutions/README.md b/authoring/solutions/README.md index 9b903da7..3933507e 100644 --- a/authoring/solutions/README.md +++ b/authoring/solutions/README.md @@ -14,6 +14,7 @@ Importable Power Platform solutions in PnP format. Each solution includes packag | Folder | Description | |--------|-------------| | [account-contact-lookup/](./account-contact-lookup/) | Multi-agent Dataverse account and contact lookup | +| [adaptive-card-refresh/](./adaptive-card-refresh/) | Refresh/replace an Adaptive Card after submission in Teams (Universal Actions) | | [auto-detect-language/](./auto-detect-language/) | Automatically detect user language | | [dataverse-indexer/](./dataverse-indexer/) | Index Dataverse tables for agent knowledge | | [feedback-analyzer/](./feedback-analyzer/) | Analyze agent conversation feedback with MDA and workflows | diff --git a/authoring/solutions/adaptive-card-refresh/LICENSE b/authoring/solutions/adaptive-card-refresh/LICENSE new file mode 100644 index 00000000..e735bbd2 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Nghiem Doan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/authoring/solutions/adaptive-card-refresh/README.md b/authoring/solutions/adaptive-card-refresh/README.md new file mode 100644 index 00000000..d5c05700 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/README.md @@ -0,0 +1,82 @@ +--- +title: Adaptive Card Refresh +parent: Solutions +grand_parent: Authoring +nav_order: 7 +--- +# Adaptive Card Refresh (Universal Actions) + +Refresh or replace an Adaptive Card the moment a user submits it in Microsoft Teams, +so a completed form can't be filled in or submitted twice. + +By default, an Adaptive Card stays interactive after a user clicks **Submit**: the +inputs clear, the card still looks fillable, and the user gets no confirmation that +their response was received. This solution fixes that using the +[Universal Action model](https://learn.microsoft.com/en-us/adaptive-cards/authoring-cards/universal-action-model): +the card's buttons use `Action.Execute` with a unique `verb`, a listener topic +catches the resulting invoke activity, branches on the verb, and returns a +replacement card that Teams swaps in place. + +![Adaptive Card refresh demo](./assets/RefreshAdaptiveCard.gif) + +{: .note } +> **Attribution.** This solution was authored by **Nghiem Doan** and is included here +> under its original MIT license (see [`LICENSE`](./LICENSE)). Original repository: +> [nghiemdoan-msft/AdaptiveCardInCopilotStudio](https://github.com/nghiemdoan-msft/AdaptiveCardInCopilotStudio). + +## How it works + +1. **Design the card with `Action.Execute`.** Instead of `Action.Submit`, each button + uses `Action.Execute` with a unique `verb` (for example `feedbackSubmitForm` and + `feedbackSkipForm`) and `"fallback": "Action.Submit"` for clients that don't + support Universal Actions. +2. **Display it with a "Send a message" node.** Do not use "Ask with Adaptive Card" — + that node uses `Action.Submit` internally and won't trigger the invoke/refresh flow. +3. **Listen for the invoke.** A topic triggered by **Invoke Received** parses the + activity payload and reads `resultData.action.verb`. +4. **Return a replacement card.** The listener branches on the verb and returns the + Universal Action response format, and Teams replaces the original card in place: + + ```json + { + "statusCode": 200, + "type": "application/vnd.microsoft.card.adaptive", + "value": { "type": "AdaptiveCard": "..." } + } + ``` + +## What's in the solution + +| Topic | Role | +|---|---| +| `CaptureFeedbackV2` | Displays the survey Adaptive Card (`Action.Execute` buttons) | +| `CardListenerV2` | Listens for the invoke activity and returns the replacement card | + +Unpacked source (PnP format) is in [`sourcecode/`](./sourcecode/); the importable +package is in [`solution/`](./solution/). + +## Importing + +1. Download [`solution/FeedbackAgent_1_0_0_5.zip`](./solution/FeedbackAgent_1_0_0_5.zip). +2. Go to [make.powerapps.com](https://make.powerapps.com) > **Solutions** > **Import solution**. +3. Select the zip, then **Next** > **Import**. +4. Open the imported **FeedbackAgent** in Copilot Studio and **Publish** it. +5. Add the **Microsoft Teams** channel. + +{: .warning } +> Test in **Teams**, not the Copilot Studio test canvas. The invoke/refresh flow only +> runs in a published channel, so the card replacement won't appear in the test panel. + +## Notes and trade-offs + +- **Teams-specific.** The invoke/refresh flow relies on the Teams channel. For custom + web portals built on BotFramework-WebChat, use the client-side attachment middleware + pattern instead. Neither pattern applies in the Microsoft 365 Copilot channel today. +- **Publish to debug.** Because the invoke response only works in a published channel, + you'll need to publish the agent to test each change. + +## Related reading + +- Blog walkthrough: [Disabling Adaptive Cards After Submission in Copilot Studio Agents](https://microsoft.github.io/mcscatblog/posts/disable-adaptive-cards-after-submission/) +- [Universal Action model](https://learn.microsoft.com/en-us/adaptive-cards/authoring-cards/universal-action-model) +- [Send a message node](https://learn.microsoft.com/microsoft-copilot-studio/authoring-send-message) diff --git a/authoring/solutions/adaptive-card-refresh/assets/RefreshAdaptiveCard.gif b/authoring/solutions/adaptive-card-refresh/assets/RefreshAdaptiveCard.gif new file mode 100644 index 00000000..eae07cf1 Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/assets/RefreshAdaptiveCard.gif differ diff --git a/authoring/solutions/adaptive-card-refresh/assets/image-1.png b/authoring/solutions/adaptive-card-refresh/assets/image-1.png new file mode 100644 index 00000000..f7a72d40 Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/assets/image-1.png differ diff --git a/authoring/solutions/adaptive-card-refresh/assets/image-2.png b/authoring/solutions/adaptive-card-refresh/assets/image-2.png new file mode 100644 index 00000000..a33ed5d5 Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/assets/image-2.png differ diff --git a/authoring/solutions/adaptive-card-refresh/assets/image-3.png b/authoring/solutions/adaptive-card-refresh/assets/image-3.png new file mode 100644 index 00000000..f8080cd5 Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/assets/image-3.png differ diff --git a/authoring/solutions/adaptive-card-refresh/assets/image.png b/authoring/solutions/adaptive-card-refresh/assets/image.png new file mode 100644 index 00000000..a1602ffb Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/assets/image.png differ diff --git a/authoring/solutions/adaptive-card-refresh/solution/FeedbackAgent_1_0_0_5.zip b/authoring/solutions/adaptive-card-refresh/solution/FeedbackAgent_1_0_0_5.zip new file mode 100644 index 00000000..3a889ad3 Binary files /dev/null and b/authoring/solutions/adaptive-card-refresh/solution/FeedbackAgent_1_0_0_5.zip differ diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Customizations.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Customizations.xml new file mode 100644 index 00000000..495dda57 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Customizations.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + 1033 + + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Solution.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Solution.xml new file mode 100644 index 00000000..4086ee25 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/Other/Solution.xml @@ -0,0 +1,83 @@ + + + + FeedbackAgent + + + + + 1.0.0.5 + 0 + + MicrosoftPowerAccelerator + + + + + + + mpa + 86542 + +
+ 1 + 1 + + + + + + + + + + + + + + + + 1 + + + + + + + + +
+
+ 2 + 1 + + + + + + + + + + + + + + + + 1 + + + + + + + + +
+
+
+ + +
+
\ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/botcomponent.xml new file mode 100644 index 00000000..5d800ec1 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/botcomponent.xml @@ -0,0 +1,11 @@ + + 16 + This knowledge source searches information on the web found in https://learn.microsoft.com/ website + 0 + https://learn.microsoft.com/ + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/data new file mode 100644 index 00000000..e5968baf --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.knowledge.httpslearnmicrosoftcom_PzjBlx5MtLj91xzrCByAR/data @@ -0,0 +1,4 @@ +kind: KnowledgeSourceConfiguration +source: + kind: PublicSiteSearchSource + site: https://learn.microsoft.com/ \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/botcomponent.xml new file mode 100644 index 00000000..bdf83cbe --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/botcomponent.xml @@ -0,0 +1,10 @@ + + 9 + 0 + Capture Feedback + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/data new file mode 100644 index 00000000..14efa786 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CaptureFeedbackV2/data @@ -0,0 +1,116 @@ +kind: AdaptiveDialog +modelDescription: Regarding feedback or survey +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: Untitled (Copy) + + actions: + - kind: SendActivity + id: sendActivity_XauhTN + activity: + text: + - Please share your feedback with us! + attachments: + - kind: AdaptiveCardTemplate + cardContent: |- + { + "type": "AdaptiveCard", + "$schema": "https://adaptivecards.io/schemas/adaptive-card.json", + "version": "1.5", + "body": [ + { + "type": "Container", + "items": [ + { + "type": "ColumnSet", + "columns": [ + { + "type": "Column", + "width": "auto", + "items": [ + { + "type": "Icon", + "name": "TaskListSquareRtl", + "size": "Small" + } + ], + "spacing": "Small" + }, + { + "type": "Column", + "width": "stretch", + "spacing": "Small", + "items": [ + { + "type": "TextBlock", + "text": "Survey", + "wrap": true, + "weight": "Bolder" + } + ], + "verticalContentAlignment": "Center" + } + ] + } + ], + "showBorder": false + }, + { + "type": "Container", + "separator": true, + "spacing": "Medium", + "items": [ + { + "type": "TextBlock", + "text": "Experience Feedback", + "wrap": true, + "size": "Large", + "weight": "Bolder" + } + ] + }, + { + "type": "Input.Rating", + "isRequired": true, + "errorMessage": "Please select rating stars.", + "id": "ratingStars", + "color": "Marigold", + "label": "How was your overall experience?" + }, + { + "id": "txtComments", + "type": "Input.Text", + "placeholder": "Provide your comments", + "isMultiline": true, + "maxLength": 255, + "label": "Any other comments?" + }, + { + "type": "ActionSet", + "actions": [ + { + "type": "Action.Execute", + "title": "Submit", + "data": { + "actionType": "submitted" + }, + "verb": "feedbackSubmitForm", + "fallback": "Action.Submit", + "style": "positive" + }, + { + "type": "Action.Execute", + "title": "Skip", + "data": { + "actionType": "skipped" + }, + "associatedInputs": "none", + "verb": "feedbackSkipForm", + "fallback": "Action.Submit" + } + ] + } + ] + } \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/botcomponent.xml new file mode 100644 index 00000000..a7f4be6b --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/botcomponent.xml @@ -0,0 +1,10 @@ + + 9 + 0 + Card Listener + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/data new file mode 100644 index 00000000..e50e8be4 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.CardListenerV2/data @@ -0,0 +1,206 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnActivity + id: main + priority: 0 + type: Invoke + actions: + - kind: SendActivity + id: sendActivity_4gh1Cv + activity: "{System.Activity.Value}" + + - kind: ParseValue + id: 3TJax1 + variable: Topic.resultData + valueType: + kind: Record + properties: + action: + type: + kind: Record + properties: + data: + type: + kind: Record + properties: + userResponse: String + + id: String + title: String + tooltip: String + type: String + verb: String + + trigger: String + + value: =System.Activity.Value + + - kind: SetTextVariable + id: setVariable_wmAYA6 + variable: Topic.rawData + value: "{System.Activity}" + + - kind: ConditionGroup + id: conditionGroup_5IesVe + conditions: + - id: conditionItem_TCfNNv + condition: =Topic.resultData.action.verb = "feedbackSubmitForm" + actions: + - kind: SendActivity + id: sendActivity_PknjwL + activity: + kind: Activity + value: |- + ={ + status: 200, + body: { + statusCode: 200, + type: "application/vnd.microsoft.card.adaptive", + value: { + type: "AdaptiveCard", + body: [ + { + type: "ColumnSet", + columns: [ + { + type: "Column", + items: [ + { + type: "Image", + url: "data:image/png;base64,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", + altText: "Success Icon", + size: "Small" + } + ], + width: "auto" + }, + { + type: "Column", + items: [ + { + type: "TextBlock", + weight: "Bolder", + text: "Submitted", + wrap: true + }, + { + type: "TextBlock", + spacing: "None", + text: "Submitted on "&Text(Now(),DateTimeFormat.ShortDateTime24), + isSubtle: true, + wrap: true + } + ], + width: "stretch" + } + ] + }, + { + type: "TextBlock", + text: "Thank you for sharing your feedback.", + wrap: true + } + ], + '$schema': "http://adaptivecards.io/schemas/adaptive-card.json", + version: "1.5" + } + } + } + activityType: InvokeResponse + name: RespondToFeedbackSubmitForm + + - id: conditionItem_DYxLGK + condition: =Topic.resultData.action.verb = "feedbackSkipForm" + actions: + - kind: SendActivity + id: sendActivity_m6AcR0 + activity: + kind: Activity + value: |- + ={ + status: 200, + body: { + statusCode: 200, + type: "application/vnd.microsoft.card.adaptive", + value: { + type: "AdaptiveCard", + body: [ + { + type: "ColumnSet", + columns: [ + { + type: "Column", + items: [ + { + type: "Image", + url: "data:image/png;base64,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", + altText: "Success Icon", + size: "Small" + } + ], + width: "auto" + }, + { + type: "Column", + items: [ + { + type: "TextBlock", + weight: "Bolder", + text: "Skipped", + wrap: true + }, + { + type: "TextBlock", + spacing: "None", + text: "Updated on "&Text(Now(),DateTimeFormat.ShortDateTime24), + isSubtle: true, + wrap: true + } + ], + width: "stretch" + } + ] + }, + { + type: "TextBlock", + text: "You skipped this survey", + wrap: true + } + ], + '$schema': "http://adaptivecards.io/schemas/adaptive-card.json", + version: "1.5" + } + } + } + activityType: InvokeResponse + name: ResponseToSkippedSurvey + + elseActions: + - kind: SendActivity + id: sendActivity_4u6V7A + activity: + kind: Activity + value: |- + ={ + status: 200, + body: + { + statusCode: 200, + type: "application/vnd.microsoft.card.adaptive", + value: + { + type: "AdaptiveCard", + body: + [ + { + type: "TextBlock", + text: "I dont understand: " & Topic.rawData, + wrap: true + } + ], + version: "1.3" + } + } + } + activityType: InvokeResponse + name: UnknownResponse \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/botcomponent.xml new file mode 100644 index 00000000..e1502a02 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This system topic triggers when the copilot receives an Activity indicating the beginning of a new conversation. If you do not want the copilot to initiate the conversation, disable this topic. + 0 + Conversation Start + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/data new file mode 100644 index 00000000..b86cbc5a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ConversationStart/data @@ -0,0 +1,52 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnConversationStart + id: main + actions: + - kind: SendActivity + id: sendMessage_M0LuhV + activity: + text: + - Hello, I'm {System.Bot.Name}, a virtual assistant. Just so you are aware, I sometimes use AI to answer your questions. If you provided a website during creation, try asking me about it! Next try giving me some more knowledge by setting up generative AI. + speak: + - Thanks for calling, how can I help? + + - kind: SendActivity + id: sendActivity_giqeBX + activity: + attachments: + - kind: AdaptiveCardTemplate + cardContent: |- + { + "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "type": "AdaptiveCard", + "version": "1.5", + "body": [ + { + "type": "TextBlock", + "size": "Medium", + "weight": "Bolder", + "text": "Test Card Multiple Options", + "horizontalAlignment": "Center", + "wrap": true, + "style": "heading" + } + ], + "actions": [ + { + "type": "Action.Submit", + "title": "Take a survey", + "data": "Take a survey" + }, + { + "type": "Action.Submit", + "title": "Order a pizza", + "data": "Order a pizza" + }, + { + "type": "Action.Submit", + "title": "Start over", + "data": "Start over" + } + ] + } \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/botcomponent.xml new file mode 100644 index 00000000..8b72181d --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/botcomponent.xml @@ -0,0 +1,12 @@ + + 9 + This system topic is only triggered by a redirect action, +and guides the user through rating their conversation with the copilot. + 0 + End of Conversation + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/data new file mode 100644 index 00000000..d9d8c83a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.EndofConversation/data @@ -0,0 +1,75 @@ +kind: AdaptiveDialog +startBehavior: CancelOtherTopics +beginDialog: + kind: OnSystemRedirect + id: main + actions: + - kind: Question + id: 41d42054-d4cb-4e90-b922-2b16b37fe379 + conversationOutcome: ResolvedImplied + alwaysPrompt: true + variable: init:Topic.SurveyResponse + prompt: Did that answer your question? + entity: BooleanPrebuiltEntity + + - kind: ConditionGroup + id: condition-0 + conditions: + - id: condition-0-item-0 + condition: =Topic.SurveyResponse = true + actions: + - kind: CSATQuestion + id: csat_1 + conversationOutcome: ResolvedConfirmed + + - kind: SendActivity + id: sendMessage_8r29O0 + activity: Thanks for your feedback. + + - kind: Question + id: question_1 + alwaysPrompt: true + variable: init:Topic.Continue + prompt: Can I help with anything else? + entity: BooleanPrebuiltEntity + + - kind: ConditionGroup + id: condition-1 + conditions: + - id: condition-1-item-0 + condition: =Topic.Continue = true + actions: + - kind: SendActivity + id: sendMessage_4eOE6h + activity: Go ahead. I'm listening. + + elseActions: + - kind: SendActivity + id: yHBz55 + activity: Ok, goodbye. + + - kind: EndConversation + id: jh1GMT + + elseActions: + - kind: Question + id: PM68ot + alwaysPrompt: true + variable: init:Topic.TryAgain + prompt: Sorry I wasn't able to help better. Would you like to try again? + entity: BooleanPrebuiltEntity + + - kind: ConditionGroup + id: KNxYBf + conditions: + - id: DPveFP + condition: =Topic.TryAgain = false + actions: + - kind: BeginDialog + id: cngqi4 + dialog: mpa_FeedbackAgent.topic.Escalate + + elseActions: + - kind: SendActivity + id: GrVHEW + activity: Go ahead. I'm listening. \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/botcomponent.xml new file mode 100644 index 00000000..a5d43c8a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/botcomponent.xml @@ -0,0 +1,13 @@ + + 9 + This system topic is triggered when the user indicates they would like to speak to a human agent. +You can configure how the copilot will handle human hand-off scenarios in the copilot settings. +If your copilot does not handle escalations, this topic should be disabled. + 0 + Escalate + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/data new file mode 100644 index 00000000..51204dfe --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Escalate/data @@ -0,0 +1,60 @@ +kind: AdaptiveDialog +startBehavior: CancelOtherTopics +beginDialog: + kind: OnEscalate + id: main + intent: + displayName: Escalate + includeInOnSelectIntent: false + triggerQueries: + - Talk to agent + - Talk to a person + - Talk to someone + - Call back + - Call customer service + - Call me please + - Call support + - Call technical support + - Can an agent call me + - Can I call + - Can I get in touch with someone else + - Can I get real agent support + - Can I get transferred to a person to call + - Can I have a call in number Or can I be called + - Can I have a representative call me + - Can I schedule a call + - Can I speak to a representative + - Can I talk to a human + - Can I talk to a human assistant + - Can someone call me + - Chat with a human + - Chat with a representative + - Chat with agent + - Chat with someone please + - Connect me to a live agent + - Connect me to a person + - Could some one contact me by phone + - Customer agent + - Customer representative + - Customer service + - I need a manager to contact me + - I need customer service + - I need help from a person + - I need to speak with a live argent + - I need to talk to a specialist please + - I want to talk to customer service + - I want to proceed with live support + - I want to speak with a consultant + - I want to speak with a live tech + - I would like to speak with an associate + - I would like to talk to a technician + - Talk with tech support member + + actions: + - kind: SendActivity + id: sendMessage_s39DCt + conversationOutcome: Escalated + activity: |- + Escalating to a live agent is not currently configured for this copilot, however this is where the copilot could provide information about how to get in touch with someone another way. + + Is there anything else I can help you with? \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/botcomponent.xml new file mode 100644 index 00000000..fb4c481a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This system topic triggers when the user's utterance does not match any existing topics. + 0 + Fallback + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/data new file mode 100644 index 00000000..293e6a91 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Fallback/data @@ -0,0 +1,19 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnUnknownIntent + id: main + actions: + - kind: ConditionGroup + id: conditionGroup_LktzXw + conditions: + - id: conditionItem_tlGIVo + condition: =System.FallbackCount < 3 + actions: + - kind: SendActivity + id: sendMessage_QZreqo + activity: I'm sorry, I'm not sure how to help with that. Can you try rephrasing? + + elseActions: + - kind: BeginDialog + id: 5aXj5M + dialog: mpa_FeedbackAgent.topic.Escalate \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/botcomponent.xml new file mode 100644 index 00000000..45a9d018 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This topic triggers when the user says goodbye. By default, it does not end the conversation. If you would like to end the conversation when the user says goodbye, you can add an "End of Conversation" action to this topic, or redirect to the "End of Conversation" system topic. + 0 + Goodbye + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/data new file mode 100644 index 00000000..def0d78c --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Goodbye/data @@ -0,0 +1,39 @@ +kind: AdaptiveDialog +startBehavior: CancelOtherTopics +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: Goodbye + includeInOnSelectIntent: false + triggerQueries: + - Bye + - Bye for now + - Bye now + - Good bye + - No thank you. Goodbye. + - See you later + + actions: + - kind: Question + id: question_zf2HhP + variable: Topic.EndConversation + prompt: Would you like to end our conversation? + entity: BooleanPrebuiltEntity + + - kind: ConditionGroup + id: condition_DGc1Wy + conditions: + - id: condition_DGc1Wy-item-0 + condition: =Topic.EndConversation = true + actions: + - kind: BeginDialog + id: dn94DC + dialog: mpa_FeedbackAgent.topic.EndofConversation + + - id: condition_DGc1Wy-item-1 + condition: =Topic.EndConversation = false + actions: + - kind: SendActivity + id: sendMessage_LdLhmf + activity: Go ahead. I'm listening. \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/botcomponent.xml new file mode 100644 index 00000000..4297688f --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This topic is triggered when the user greets the copilot. + 0 + Greeting + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/data new file mode 100644 index 00000000..c4c2099a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Greeting/data @@ -0,0 +1,25 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: Greeting + includeInOnSelectIntent: false + triggerQueries: + - Good afternoon + - Good morning + - Hello + - Hey + - Hi + + actions: + - kind: SendActivity + id: sendMessage_abmysR + activity: + text: + - Hello, how can I help you today? + speak: + - Hello, how can I help? + + - kind: CancelAllDialogs + id: cancelAllDialogs_01At22 \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/botcomponent.xml new file mode 100644 index 00000000..a7184fb0 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This system topic triggers when the copilot matches multiple Topics with the incoming message and needs to clarify which one should be triggered. + 0 + Multiple Topics Matched + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/data new file mode 100644 index 00000000..754c6920 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.MultipleTopicsMatched/data @@ -0,0 +1,43 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnSelectIntent + id: main + triggerBehavior: Always + actions: + - kind: SetVariable + id: setVariable_M6434i + variable: init:Topic.IntentOptions + value: =System.Recognizer.IntentOptions + + - kind: SetTextVariable + id: setTextVariable_0 + variable: Topic.NoneOfTheseDisplayName + value: None of these + + - kind: EditTable + id: sendMessage_g5Ls09 + changeType: Add + itemsVariable: Topic.IntentOptions + value: "={ DisplayName: Topic.NoneOfTheseDisplayName, TopicId: \"NoTopic\", TriggerId: \"NoTrigger\", Score: 1.0 }" + + - kind: Question + id: question_zf2HhP + interruptionPolicy: + allowInterruption: false + + alwaysPrompt: true + variable: System.Recognizer.SelectedIntent + prompt: "To clarify, did you mean:" + entity: + kind: DynamicClosedListEntity + items: =Topic.IntentOptions + + - kind: ConditionGroup + id: conditionGroup_60PuXb + conditions: + - id: conditionItem_rs7GgM + condition: =System.Recognizer.SelectedIntent.TopicId = "NoTopic" + actions: + - kind: ReplaceDialog + id: YZXRDb + dialog: mpa_FeedbackAgent.topic.Fallback \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/botcomponent.xml new file mode 100644 index 00000000..05b2467c --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This system topic triggers when the copilot encounters an error. When using the test chat pane, the full error description is displayed. + 0 + On Error + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/data new file mode 100644 index 00000000..a5c01c31 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.OnError/data @@ -0,0 +1,44 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnError + id: main + actions: + - kind: SetVariable + id: setVariable_timestamp + variable: init:Topic.CurrentTime + value: =Text(Now(), DateTimeFormat.UTC) + + - kind: ConditionGroup + id: condition_1 + conditions: + - id: bL4wmY + condition: =System.Conversation.InTestMode = true + actions: + - kind: SendActivity + id: sendMessage_XJBYMo + activity: |- + Error Message: {System.Error.Message} + Error Code: {System.Error.Code} + Conversation Id: {System.Conversation.Id} + Time (UTC): {Topic.CurrentTime} + + elseActions: + - kind: SendActivity + id: sendMessage_dZ0gaF + activity: + text: + - |- + An error has occurred. + Error code: {System.Error.Code} + Conversation Id: {System.Conversation.Id} + Time (UTC): {Topic.CurrentTime}. + speak: + - An error has occurred, please try again. + + - kind: LogCustomTelemetryEvent + id: 9KwEAn + eventName: OnErrorLog + properties: "={ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}" + + - kind: CancelAllDialogs + id: NW7NyY \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/botcomponent.xml new file mode 100644 index 00000000..96f6aff4 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/botcomponent.xml @@ -0,0 +1,10 @@ + + 9 + 0 + Order pizza + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/data new file mode 100644 index 00000000..185a733f --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Orderpizza/data @@ -0,0 +1,49 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: + triggerQueries: + - order pizza + - I want to order a pizza + - pizza delivery + - can I get a pizza? + - place a pizza order + - get me a pizza + - pizza menu + - how to order pizza? + - I'd like to order some pizza + + actions: + - kind: Question + id: Question_g4LC9g + variable: Topic.PizzaType + prompt: What type of pizza would you like to order? + entity: + kind: EmbeddedEntity + definition: + kind: ClosedListEntity + optionSetName: PizzaTypeOptions + items: + - id: margherita + displayName: Margherita + + - id: pepperoni + displayName: Pepperoni + + - id: veggie + displayName: Veggie + + - id: bbq_chicken + displayName: BBQ Chicken + + - kind: Question + id: Question_fwaJ2x + variable: Topic.PizzaQuantity + prompt: How many pizzas would you like to order? + entity: NumberPrebuiltEntity + + - kind: SendActivity + id: SendActivity_hVNhnx + activity: You have ordered {Topic.PizzaQuantity} {Topic.PizzaType} pizza(s). Thank you for your order! \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/botcomponent.xml new file mode 100644 index 00000000..3dbbb227 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/botcomponent.xml @@ -0,0 +1,10 @@ + + 9 + 0 + Reset Conversation + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/data new file mode 100644 index 00000000..452405bf --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ResetConversation/data @@ -0,0 +1,16 @@ +kind: AdaptiveDialog +startBehavior: UseLatestPublishedContentAndCancelOtherTopics +beginDialog: + kind: OnSystemRedirect + id: main + actions: + - kind: SendActivity + id: sendMessage_OPsT1O + activity: What can I help you with? + + - kind: ClearAllVariables + id: clearAllVariables_73bTFR + variables: ConversationScopedVariables + + - kind: CancelAllDialogs + id: cancelAllDialogs_12Gt21 \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/botcomponent.xml new file mode 100644 index 00000000..0ace89c3 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This system topic triggers when the copilot needs to sign in the user or require the user to sign in + 0 + Sign in + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/data new file mode 100644 index 00000000..7fead1c9 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.Signin/data @@ -0,0 +1,19 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnSignIn + id: main + actions: + - kind: ConditionGroup + id: conditionGroup_ypjGKL + conditions: + - id: conditionItem_7XYIIR + condition: =System.SignInReason = SignInReason.SignInRequired + actions: + - kind: SendActivity + id: sendMessage_1jHUNO + activity: Hello! To be able to help you, I'll need you to sign in. + + - kind: OAuthInput + id: gOjhZA + title: Login + text: To continue, please login \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/botcomponent.xml new file mode 100644 index 00000000..7fc2714a --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/botcomponent.xml @@ -0,0 +1,10 @@ + + 9 + 0 + Start Over + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/data new file mode 100644 index 00000000..24077ba1 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.StartOver/data @@ -0,0 +1,35 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: Start Over + includeInOnSelectIntent: false + triggerQueries: + - let's begin again + - start over + - start again + - restart + + actions: + - kind: Question + id: question_zguoVV + alwaysPrompt: false + variable: init:Topic.Confirm + prompt: Are you sure you want to restart the conversation? + entity: BooleanPrebuiltEntity + + - kind: ConditionGroup + id: conditionGroup_lvx2zV + conditions: + - id: conditionItem_sVQtHa + condition: =Topic.Confirm = true + actions: + - kind: BeginDialog + id: 0YKYsy + dialog: mpa_FeedbackAgent.topic.ResetConversation + + elseActions: + - kind: SendActivity + id: sendMessage_lk2CyQ + activity: Ok. Let's carry on. \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/botcomponent.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/botcomponent.xml new file mode 100644 index 00000000..1aba21c0 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/botcomponent.xml @@ -0,0 +1,11 @@ + + 9 + This topic triggers when the user says thank you. + 0 + Thank you + + mpa_FeedbackAgent + + 0 + 1 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/data b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/data new file mode 100644 index 00000000..2363ef95 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/botcomponents/mpa_FeedbackAgent.topic.ThankYou/data @@ -0,0 +1,17 @@ +kind: AdaptiveDialog +beginDialog: + kind: OnRecognizedIntent + id: main + intent: + displayName: Thank you + includeInOnSelectIntent: false + triggerQueries: + - thanks + - thank you + - thanks so much + - ty + + actions: + - kind: SendActivity + id: sendMessage_9iz6v7 + activity: You're welcome. \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/bot.xml b/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/bot.xml new file mode 100644 index 00000000..b60d194b --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/bot.xml @@ -0,0 +1,11 @@ + + 2 + 1 + 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 + 0 + 1033 + Feedback Demo Agent + 0 + + 4 + \ No newline at end of file diff --git a/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/configuration.json b/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/configuration.json new file mode 100644 index 00000000..6845bbd0 --- /dev/null +++ b/authoring/solutions/adaptive-card-refresh/sourcecode/bots/mpa_FeedbackAgent/configuration.json @@ -0,0 +1 @@ +{"categories":[],"channels":[{"id":null,"channelId":"msteams","channelSpecifier":null,"displayName":null}],"settings":{"GenerativeActionsEnabled":true},"publishOnCreate":false,"publishOnImport":true,"isLightweightBot":false,"$kind":"BotConfiguration","aISettings":{"$kind":"AISettings","useModelKnowledge":false,"isFileAnalysisEnabled":true,"isSemanticSearchEnabled":false},"recognizer":{"$kind":"GenerativeAIRecognizer"}} \ No newline at end of file