feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,504 @@
|
|||
# Adaptive Cards for Rich Copilot Responses
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**Status:** GA
|
||||
**Category:** Copilot Extensibility & Integration
|
||||
|
||||
---
|
||||
|
||||
## Introduksjon
|
||||
|
||||
Adaptive Cards er platform-agnostiske UI-komponenter uttrykt i JSON som lar utviklere skape rike, interaktive brukeropplevelser i Microsoft Copilot-økosystemet. De fungerer som citations og innholdsvisninger i Copilot-svar, og transformeres automatisk til native UI-elementer som tilpasser seg vertsapplikasjonens design og kontekst.
|
||||
|
||||
**Sentral verdi:**
|
||||
- **Platform-agnostisk:** Én JSON-definisjon fungerer på tvers av Teams, Word, PowerPoint, Web, mobil
|
||||
- **Native rendering:** Adapteres automatisk til dark mode, viewport size, plattformspesifikk styling
|
||||
- **Declarative interactivity:** Input-felter og actions defineres i JSON, ikke custom code
|
||||
- **Template language:** Separate data fra presentasjon med `${}`-syntax
|
||||
|
||||
**Bruksområder i Copilot-økosystemet:**
|
||||
- **M365 Copilot:** Citation cards i API plugin responses (kun via declarative agents)
|
||||
- **Copilot Studio:** Interactive cards med input fields, submit buttons, form validation
|
||||
- **Teams-integrasjoner:** Message extensions, dialogs, proactive notifications
|
||||
- **Power Automate:** Async proactive cards til brukere via Teams
|
||||
|
||||
**Viktig begrensning (Verified):** I M365 Copilot er API plugins *kun* støttet som actions innenfor declarative agents. De er ikke tilgjengelig direkte i M365 Copilot.
|
||||
|
||||
---
|
||||
|
||||
## Kjernekomponenter
|
||||
|
||||
### Schema og versjonering
|
||||
|
||||
| Schema-versjon | Support status | Begrensninger |
|
||||
|----------------|----------------|---------------|
|
||||
| **1.5** | GA, anbefalt for Teams/Omnichannel | Ikke `Action.Execute` i Teams |
|
||||
| **1.6** | GA for Web Chat / Copilot Studio test | Web Chat støtter ikke `Action.Execute` |
|
||||
| **1.3-1.4** | Legacy, men støttet | Mangler nyere features (labels, validation) |
|
||||
|
||||
**Verified:** Copilot Studio renderer kun 1.6-cards i test chat, ikke på canvas. Teams og Dynamics 365 live chat widget er begrenset til 1.5.
|
||||
|
||||
**JSON-struktur:**
|
||||
```json
|
||||
{
|
||||
"type": "AdaptiveCard",
|
||||
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
|
||||
"version": "1.5",
|
||||
"body": [ /* Card elements */ ],
|
||||
"actions": [ /* Action buttons */ ]
|
||||
}
|
||||
```
|
||||
|
||||
### Core elements (alle versjoner)
|
||||
|
||||
| Element | Formål | Når bruke |
|
||||
|---------|--------|-----------|
|
||||
| `Container` | Grouping og styling av child elements | Logisk organisering, background colors |
|
||||
| `ColumnSet` / `Column` | Multi-kolonne layout | Side-by-side content (men unngå på mobile!) |
|
||||
| `TextBlock` | Formatert tekst (heading, paragraph) | Alle tekstvisninger |
|
||||
| `FactSet` / `Fact` | Title/value-par i tabellformat | Strukturert data (budsjett, transaksjoner) |
|
||||
| `Image` | Inline bilder | Logo, avatar, illustrasjoner |
|
||||
|
||||
### Input elements (interactive cards)
|
||||
|
||||
| Input type | Bruksområde | Validering |
|
||||
|------------|-------------|-----------|
|
||||
| `Input.Text` | Fritekst, med regex-validering | `isRequired`, `regex`, `errorMessage` |
|
||||
| `Input.Number` | Numeriske verdier | Min/max bounds |
|
||||
| `Input.Date` / `Input.Time` | Dato/tid-velgere | Native platform pickers |
|
||||
| `Input.ChoiceSet` | Single/multi-select dropdowns | `choices` array, `style: "filtered"` for søk |
|
||||
| `Input.Toggle` | Boolean switch | Ja/Nei, On/Off |
|
||||
|
||||
**Ny i 1.3+:** `label`-property (anbefalt over `placeholder`), `isRequired`, `errorMessage` for inline validation.
|
||||
|
||||
### Actions
|
||||
|
||||
| Action type | Oppførsel | Bruksområde |
|
||||
|-------------|-----------|-------------|
|
||||
| `Action.Submit` | Send input data til backend | Form submission i Copilot Studio |
|
||||
| `Action.OpenUrl` | Åpne URL i browser | "Read more", "View in app" |
|
||||
| `Action.Execute` (1.5+) | Invoke backend + update card | Inline editing i M365 Copilot (preview) |
|
||||
| `Action.ShowCard` | Vis child card inline | Multi-step wizards |
|
||||
|
||||
**Viktig (Verified):** Ved `Action.OpenUrl` må domenet være i `validDomains` i app manifest, ellers viser Teams "URL may lead to untrusted content".
|
||||
|
||||
---
|
||||
|
||||
## Arkitekturmønstre
|
||||
|
||||
### Mønster 1: Static templates (API plugins)
|
||||
|
||||
**Når bruke:**
|
||||
- API returnerer alltid samme object type
|
||||
- Card layout sjelden endres
|
||||
- Enklest å vedlikeholde
|
||||
|
||||
**Definisjon i plugin manifest:**
|
||||
```json
|
||||
{
|
||||
"functions": [{
|
||||
"name": "GetBudgets",
|
||||
"capabilities": {
|
||||
"response_semantics": {
|
||||
"data_path": "$",
|
||||
"properties": {
|
||||
"title": "$.name",
|
||||
"subtitle": "$.availableFunds"
|
||||
},
|
||||
"static_template": {
|
||||
"type": "AdaptiveCard",
|
||||
"version": "1.5",
|
||||
"body": [{
|
||||
"type": "Container",
|
||||
"$data": "${$root}",
|
||||
"items": [
|
||||
{
|
||||
"type": "TextBlock",
|
||||
"text": "Name: ${if(name, name, 'N/A')}",
|
||||
"wrap": true
|
||||
},
|
||||
{
|
||||
"type": "TextBlock",
|
||||
"text": "Available funds: ${if(availableFunds, formatNumber(availableFunds, 2), 'N/A')}",
|
||||
"wrap": true
|
||||
}
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
**Template language-funksjoner:**
|
||||
- `${propertyName}` – Data binding
|
||||
- `${if(condition, trueValue, falseValue)}` – Conditional rendering
|
||||
- `${formatNumber(value, decimals)}` – Number formatting
|
||||
- `${$root}` – Escape til root scope
|
||||
|
||||
### Mønster 2: Dynamic templates (API plugins)
|
||||
|
||||
**Når bruke:**
|
||||
- API returnerer flere object types (f.eks. debit/credit transactions)
|
||||
- Different layouts per type
|
||||
- Template selection via JSONPath
|
||||
|
||||
**Plugin manifest:**
|
||||
```json
|
||||
{
|
||||
"name": "GetTransactions",
|
||||
"capabilities": {
|
||||
"response_semantics": {
|
||||
"data_path": "$.transactions",
|
||||
"properties": {
|
||||
"template_selector": "$.displayTemplate"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**API response:**
|
||||
```json
|
||||
{
|
||||
"transactions": [
|
||||
{
|
||||
"amount": -2000,
|
||||
"budgetName": "Lobby renovation",
|
||||
"displayTemplate": "$.templates.debit"
|
||||
},
|
||||
{
|
||||
"amount": 5000,
|
||||
"budgetName": "Lobby renovation",
|
||||
"displayTemplate": "$.templates.credit"
|
||||
}
|
||||
],
|
||||
"templates": {
|
||||
"debit": { /* AdaptiveCard JSON */ },
|
||||
"credit": { /* AdaptiveCard JSON */ }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Verified:** `template_selector` bruker JSONPath (`$.displayTemplate`) som peker til template-objektet i samme response.
|
||||
|
||||
### Mønster 3: Hybrid (static + dynamic)
|
||||
|
||||
Static template fungerer som fallback hvis `template_selector` ikke finnes eller ikke matcher.
|
||||
|
||||
### Mønster 4: Power Fx dynamic cards (Copilot Studio)
|
||||
|
||||
**Når bruke:**
|
||||
- Copilot Studio agents som trenger runtime-variabler
|
||||
- Dynamisk innhold fra topic/agent context
|
||||
|
||||
**Advarsel (Verified):** Når du switcher fra JSON til Power Fx i Copilot Studio, kan du *ikke* tilbake til JSON. Lagre original JSON som kommentar!
|
||||
|
||||
**Eksempel Power Fx:**
|
||||
```power
|
||||
{
|
||||
type: "AdaptiveCard",
|
||||
version: "1.5",
|
||||
body: [
|
||||
{
|
||||
type: "TextBlock",
|
||||
text: Topic.Title, // Variable reference
|
||||
weight: "Bolder"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Mønster 5: Inline editing med Action.Execute (preview)
|
||||
|
||||
**Status:** Preview i M365 Copilot declarative agents
|
||||
**Krever:** Schema 1.5+
|
||||
|
||||
**Use case:** Brukeren kan editere card-data via modal dialog uten å forlate Copilot-grensesnittet.
|
||||
|
||||
**JSON:**
|
||||
```json
|
||||
{
|
||||
"type": "Action.Execute",
|
||||
"title": "Edit",
|
||||
"verb": "editItem",
|
||||
"data": { "itemId": "123" }
|
||||
}
|
||||
```
|
||||
|
||||
Backend mottar POST med verb + data, returnerer oppdatert card.
|
||||
|
||||
---
|
||||
|
||||
## Beslutningsveiledning
|
||||
|
||||
### Når bruke Adaptive Cards i Copilot
|
||||
|
||||
| Scenario | Bruk Adaptive Card? | Alternativ |
|
||||
|----------|---------------------|------------|
|
||||
| M365 Copilot API plugin citation | ✅ Ja (eneste måte) | N/A |
|
||||
| Copilot Studio form input | ✅ Ja (interactive card node) | Question node (enklere, men mindre fleksibel) |
|
||||
| Copilot Studio read-only visning | ⚠️ Nei, bruk Message node med card | Adaptive Card node krever submit button |
|
||||
| Power Automate proactive Teams-melding | ✅ Ja | Plain text (mindre engaging) |
|
||||
| Teams message extension | ✅ Ja | Hero card (mindre fleksibel) |
|
||||
|
||||
### Responsive design-prinsipper (Verified)
|
||||
|
||||
**Problem:** Adaptive Cards må fungere på desktop, web, mobile, Word, PowerPoint med varierende viewport widths.
|
||||
|
||||
**Best practices (fra M365 Copilot docs):**
|
||||
|
||||
| Prinsipp | Do | Don't |
|
||||
|----------|-----|-------|
|
||||
| Layout | Single-column layout | Multi-column (bryter på mobile) |
|
||||
| Text + image | Separate rows | Same row (unntatt små ikoner/avatars) |
|
||||
| Width | Auto-resize via viewport | Fixed width |
|
||||
| Testing | Test i Teams, Word, PowerPoint, både expanded/collapsed | Bare test i én surface |
|
||||
|
||||
**Praktisk:** Unngå `ColumnSet` hvis mulig. Bruk `Container` med vertikal stacking.
|
||||
|
||||
### Validation-strategi
|
||||
|
||||
| Scenario | Teknikk | Eksempel |
|
||||
|----------|---------|----------|
|
||||
| Required fields | `isRequired: true` + `errorMessage` | `"errorMessage": "Please enter your name"` |
|
||||
| Format validation | `regex` property på Input.Text | `"regex": "^[A-Z][a-z]+, [A-Z][a-z]+$"` |
|
||||
| Conditional submit | `conditionallyEnabled: true` (1.5+) | Submit button disabled until required fields filled |
|
||||
| Retry logic | Copilot Studio `How many reprompts` | Default: 2 retries |
|
||||
|
||||
### Submit button anti-pattern (Copilot Studio)
|
||||
|
||||
**Problem (Verified):** Adaptive Cards tillater multiple submits. Ved consecutive cards kan bruker submitte på feil card.
|
||||
|
||||
**Løsning:**
|
||||
1. **Unique IDs:** Hver submit action må ha unik `id`
|
||||
2. **Unique data payloads:** Include identifiers i submit data
|
||||
3. **Event handling logic:** Valider hvilket card som submittet
|
||||
4. **Logging:** Debug sequence av submissions
|
||||
|
||||
---
|
||||
|
||||
## Integrasjon med Microsoft-stakken
|
||||
|
||||
### M365 Copilot + API plugins
|
||||
|
||||
| Komponent | Rolle |
|
||||
|-----------|-------|
|
||||
| **Declarative agent** | Container for API plugin |
|
||||
| **API plugin manifest** | Definerer `response_semantics` + templates |
|
||||
| **Backend API** | Returnerer JSON data (+ optional dynamic templates) |
|
||||
| **Adaptive Card** | Renderes som citation i Copilot response |
|
||||
|
||||
**Flow:**
|
||||
1. Bruker spør Copilot
|
||||
2. Copilot invokerer API plugin function
|
||||
3. API returnerer JSON data
|
||||
4. M365 Copilot matcher data mot template (static/dynamic)
|
||||
5. Adaptive Card renderes som citation med "Read more" action
|
||||
|
||||
**Begrensning:** API plugins er *kun* tilgjengelig i declarative agents, ikke standalone i M365 Copilot.
|
||||
|
||||
### Copilot Studio
|
||||
|
||||
| Node type | Interactive? | Use case |
|
||||
|-----------|--------------|----------|
|
||||
| **Adaptive Card** node | ✅ Ja (requires submit button) | Form input, multi-field data collection |
|
||||
| **Message** node + card | ❌ Nei (display only) | Read-only information |
|
||||
| **Question** node + card | ❌ Nei (display only) | Information med enkel Yes/No follow-up |
|
||||
|
||||
**Built-in designer:** Copilot Studio inkluderer drag-and-drop card designer. Alternativt: JSON payload editor eller Power Fx formula mode.
|
||||
|
||||
**Output variables:** Automatisk generert fra input IDs. Kan manuelt redigeres via "Edit Schema".
|
||||
|
||||
**Retry handling:**
|
||||
- User sender text istedenfor submit → invalid response → retry (default: 2x)
|
||||
- `Allow switching to another topic`: Default ON – tillater interruptions
|
||||
|
||||
### Power Automate proactive messaging
|
||||
|
||||
**Use case:** Send Adaptive Card til Teams-bruker fra inactive conversation (f.eks. approval request, notification).
|
||||
|
||||
**Action:** `Post adaptive card and wait for a response`
|
||||
|
||||
**Config:**
|
||||
- Post as: `Microsoft Copilot Studio (Preview)`
|
||||
- Post in: `Chat with bot`
|
||||
- Recipient: User email/ID
|
||||
- Bot: Copilot Studio agent
|
||||
|
||||
**Response handling:** `submitActionId` fra dynamic content = user's choice (title of Action.Submit).
|
||||
|
||||
**Template limitation (Verified):** Power Automate støtter ikke Adaptive Cards templating feature.
|
||||
|
||||
### Teams
|
||||
|
||||
**Schema support:** 1.5 (ikke `Action.Execute`)
|
||||
|
||||
**Host config:** Teams definerer colors, spacing, font sizes via HostConfig. Cards adapterer automatisk.
|
||||
|
||||
**validDomains:** Obligatorisk for `Action.OpenUrl` – liste domener i app manifest.
|
||||
|
||||
---
|
||||
|
||||
## Offentlig sektor (Norge)
|
||||
|
||||
### Compliance-betraktninger
|
||||
|
||||
| Krav | Adaptive Card-implikasjon |
|
||||
|------|---------------------------|
|
||||
| **Personvern (GDPR)** | Ikke inkluder PII i card-payloads som logges. Bruk IDs, ikke navn/fødselsnummer. |
|
||||
| **Universell utforming (WCAG 2.1 AA)** | Bruk `label` property (ikke `placeholder`), test med screen readers. |
|
||||
| **Språk** | Norsk UI-tekst i cards. Bruk template language for oversettelse hvis nødvendig. |
|
||||
| **Sikkerhet** | Valider all input server-side. `regex` i card er UX, ikke security. |
|
||||
|
||||
### Tilgjengelighet (Verified)
|
||||
|
||||
**`label` vs `placeholder` (1.3+):**
|
||||
- **Do:** Bruk `label` property – renderes som persistent label med required indicator (`*`)
|
||||
- **Don't:** Bruk `placeholder` – dårlig color contrast, ikke lest av screen readers, forsvinner ved input
|
||||
|
||||
**Proximity:** `label` property sikrer at label og input er visuelt koblet (viktig for screen magnifiers).
|
||||
|
||||
**Required indicator:** Defineres i HostConfig (default: asterisk). Automatisk vist ved `isRequired: true`.
|
||||
|
||||
### Norsk UX-praksis
|
||||
|
||||
**Dato-format:** `Input.Date` renderer native picker (automatisk DD.MM.YYYY i norsk locale).
|
||||
|
||||
**Valuta:** Bruk `formatNumber()` med 2 desimaler. Prefikser med "NOK" eller "kr" i TextBlock.
|
||||
|
||||
**Tone:** Norsk forvaltningstekst skal være klar, kortfattet, ikke-teknisk. Unngå "Submit", bruk "Send inn", "Bekreft".
|
||||
|
||||
---
|
||||
|
||||
## Kostnad og lisensiering
|
||||
|
||||
### Lisensavhengighet per Copilot-platform
|
||||
|
||||
| Platform | Lisenskrav | Notes |
|
||||
|----------|------------|-------|
|
||||
| **M365 Copilot** | M365 Copilot license | Adaptive Cards i API plugins inkludert |
|
||||
| **Copilot Studio** | Copilot Studio capacity (per conversation) | Cards teller som én interaction |
|
||||
| **Teams** | M365 E3/E5 eller Teams Essentials | Native Teams apps, ingen Copilot license |
|
||||
| **Power Automate** | Power Automate per-user/per-flow license | Proactive cards via Teams connector |
|
||||
|
||||
**Kostnadsoptimalisering:**
|
||||
- Adaptive Cards i seg selv har ingen ekstra kostnad – de er del av host platform pricing
|
||||
- Copilot Studio: Minimize retries (default 2x kan 3x conversation cost ved feil)
|
||||
- M365 Copilot: API plugin calls teller mot Copilot usage, ikke ekstra for card rendering
|
||||
|
||||
### Utvikling og vedlikehold
|
||||
|
||||
| Aktivitet | Kostnadsdrivere |
|
||||
|-----------|-----------------|
|
||||
| **Initial design** | Designer-tid (bruk Adaptive Card Designer for rask prototyping) |
|
||||
| **Backend integration** | API-utvikling for data + template selection logic |
|
||||
| **Testing** | Cross-platform testing (Teams, Word, PowerPoint, mobile) |
|
||||
| **Versjonering** | Schema upgrades (1.5 → 1.6) kan kreve retesting |
|
||||
|
||||
**Baseline:** Adaptive Cards er gratis open-source schema. Kostnad = host platform + utviklingstid.
|
||||
|
||||
---
|
||||
|
||||
## For arkitekten (Cosmo)
|
||||
|
||||
### Anbefalinger ved arkitektursamtaler
|
||||
|
||||
**Når kunden sier:** "Vi trenger rike svar fra Copilot"
|
||||
**Spør:**
|
||||
- Hvilken Copilot? (M365, Studio, Teams)
|
||||
- Interactive (input) eller read-only?
|
||||
- Hvilke devices/surfaces? (mobile-first → single-column)
|
||||
|
||||
**Når kunden sier:** "API plugin returnerer kompleks data"
|
||||
**Foreslå:**
|
||||
- Static template hvis data-struktur er konsistent
|
||||
- Dynamic templates hvis multiple object types
|
||||
- FactSet for strukturert data (bedre enn mange TextBlocks)
|
||||
|
||||
**Når kunden sier:** "Brukerne skal kunne editere Copilot-svar"
|
||||
**Sjekk:**
|
||||
- Er dette M365 Copilot? → Action.Execute (preview)
|
||||
- Er dette Copilot Studio? → Bruk Adaptive Card node med Input fields
|
||||
- Vurder UX: inline edit vs new topic/dialog
|
||||
|
||||
### Arkitektur-patterns
|
||||
|
||||
| Pattern | Når anbefale |
|
||||
|---------|--------------|
|
||||
| **Citation cards (M365)** | Kunde har enterprise data i backend APIs som Copilot skal vise |
|
||||
| **Approval workflows (Studio + PA)** | Async approvals via Teams proactive cards |
|
||||
| **Multi-step forms (Studio)** | Complex data collection (bruk Action.ShowCard for wizards) |
|
||||
| **Dashboard snippets (Teams)** | Regular status updates via bot-initiated cards |
|
||||
|
||||
### Fallgruver å unngå
|
||||
|
||||
| Fallgruve | Impact | Løsning |
|
||||
|-----------|--------|---------|
|
||||
| Multi-column layout uten mobile testing | Brukere på mobil ser broken layout | Always single-column, eller test rigorously |
|
||||
| Hardkodet PII i templates | GDPR-brudd | Bruk IDs, fetch sensitive data on-demand |
|
||||
| Action.OpenUrl uten validDomains | "Untrusted content" warning i Teams | Add domains til app manifest |
|
||||
| Power Fx uten JSON backup | Kan ikke revertere design | Save JSON as comment før switch |
|
||||
| For mange Input fields | User fatigue, høy abandon rate | Split i multiple cards (Action.ShowCard) |
|
||||
|
||||
### Design-prinsipper (KTG-tilpasset)
|
||||
|
||||
**Offentlig sektor Norge:**
|
||||
- Norsk språk i alle UI-elementer
|
||||
- Tydelig required-indikatorer (`isRequired: true`)
|
||||
- Error messages på norsk (`"errorMessage": "Vennligst fyll ut feltet"`)
|
||||
- Test med Jaws/NVDA screen readers
|
||||
|
||||
**Vibe-coding-vennlig:**
|
||||
- Bruk Adaptive Card Designer for rapid prototyping
|
||||
- Export JSON, paste i plugin manifest
|
||||
- Test i Copilot Studio test chat før production
|
||||
- Iterer basert på bruker-feedback (cards er lett å endre)
|
||||
|
||||
### Verifikasjon og testing
|
||||
|
||||
**Pre-deployment checklist:**
|
||||
- [ ] Schema version matcher host (Teams = 1.5, Studio = 1.6 for test)
|
||||
- [ ] Testet i alle target surfaces (Teams desktop, web, mobile)
|
||||
- [ ] validDomains inkluderer alle Action.OpenUrl targets
|
||||
- [ ] Ingen PII i card payloads (kun i backend API)
|
||||
- [ ] Labels, ikke placeholders
|
||||
- [ ] Error messages på norsk
|
||||
- [ ] Single-column layout (eller testet multi-column på mobile)
|
||||
|
||||
**Runtime monitoring:**
|
||||
- Copilot Studio: Analytics → se abandonment rate på Adaptive Card nodes
|
||||
- M365 Copilot: Usage analytics → track citation engagement
|
||||
- Power Automate: Flow run history → se submit responses
|
||||
|
||||
---
|
||||
|
||||
## Kilder og verifisering
|
||||
|
||||
**Verified (MCP microsoft-learn):**
|
||||
- API plugins kun støttet i declarative agents (ikke standalone M365 Copilot): [Adaptive Card response templates for API plugins](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/api-plugin-adaptive-cards)
|
||||
- Copilot Studio schema support (1.6 test, 1.5 Teams/Omnichannel): [Ask with Adaptive Cards](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-ask-with-adaptive-card)
|
||||
- validDomains requirement for Action.OpenUrl: [API plugin adaptive cards](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/api-plugin-adaptive-cards#using-static-and-dynamic-templates-together)
|
||||
- Responsive design best practices: [Ensure responsive Adaptive Cards across Microsoft 365 Copilot hubs](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/api-plugin-adaptive-cards#ensure-responsive-adaptive-cards-across-microsoft-365-copilot-hubs)
|
||||
- Power Fx warning (no revert to JSON): [Use Power Fx to make your card dynamic](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-ask-with-adaptive-card#use-power-fx-to-make-your-card-dynamic)
|
||||
- Submit button anti-pattern: [Submit button behavior for agents with consecutive cards](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-ask-with-adaptive-card#submit-button-behavior-for-agents-with-consecutive-cards)
|
||||
- Label vs placeholder accessibility: [Input Validation - Labels](https://learn.microsoft.com/en-us/adaptive-cards/authoring-cards/input-validation#labels)
|
||||
- Action.Execute preview: [Allow inline editing of Adaptive Card responses](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/adaptive-card-edits)
|
||||
- Power Automate proactive cards: [Send proactive Microsoft Teams messages](https://learn.microsoft.com/en-us/microsoft-copilot-studio/advanced-proactive-message#send-a-proactive-adaptive-card)
|
||||
- Validation guidelines for agents: [Validation guidelines for agents - Adaptive Card response](https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/deploy-and-publish/appsource/prepare/review-copilot-validation-guidelines#adaptive-card-response)
|
||||
|
||||
**Verified (MCP code samples):**
|
||||
- Static template JSON structure: [Build API plugins TypeSpec](https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/build-api-plugins-typespec#add-an-adaptive-card-to-a-get-operation)
|
||||
- Interactive actions card: [WhatsApp agents](https://learn.microsoft.com/en-us/microsoft-copilot-studio/publication-add-bot-to-whatsapp#use-supported-adaptive-cards-in-your-agents-topics)
|
||||
- Template language basics: [Adaptive Cards templating](https://learn.microsoft.com/en-us/adaptive-cards/templating/#template-language)
|
||||
|
||||
**Baseline (Model knowledge, Jan 2025):**
|
||||
- Adaptive Cards general schema: https://adaptivecards.io/
|
||||
- Adaptive Card Designer: https://adaptivecards.io/designer/
|
||||
- JSONPath syntax for template_selector
|
||||
- Cross-platform rendering principles
|
||||
|
||||
**MCP calls:** 3 docs_search, 2 docs_fetch, 1 code_sample_search
|
||||
**Unique URLs:** 12 Microsoft Learn documentation pages
|
||||
**Confidence:** Verified (all core claims backed by MCP sources)
|
||||
Loading…
Add table
Add a link
Reference in a new issue