Włącz swoją aplikację i narzędzia niestandardowe w rozwiązaniu Microsoft 365 Copilot

[Ten temat pochodzi ze wstępnej wersji dokumentacji i może ulec zmianie.]

Usługa Power Apps na platformie Microsoft 365 Copilot umożliwia użytkownikom interakcję z aplikacją opartą na modelu bezpośrednio z aplikacji Copilot. Gdy użytkownik rozmawia z agentem, może zaprezentować dane aplikacji jako interaktywny interfejs użytkownika, siatkę do przeglądania rekordów i formularz do wyświetlania, edytowania lub tworzenia, wszystko bez opuszczania środowiska Copilot. Ponadto możesz dodać niestandardowe narzędzia MCP i interakcyjny interfejs użytkownika do agenta deklaratywnego aplikacji. Ta funkcja jest osiągana za pośrednictwem aplikacji MCP , które jest rozszerzeniem MCP, które umożliwia serwerom MCP dostarczanie interaktywnych interfejsów użytkownika do hostów. Funkcja działa przez wygenerowanie serwera MCP i agenta deklaratywnego z aplikacji.

Ważna

  • Jest to funkcja w wersji zapoznawczej.
  • Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.

Wymagania wstępne

  • Aplikacja oparta na modelu. Obecnie ta funkcja jest dostępna tylko w przypadku aplikacji opartych na modelu.
  • Licencja platformy Microsoft 365 Copilot. Wymagane zarówno dla twórcy wdrażającego agenta, jak i użytkowników końcowych korzystających z niego.
  • Uprawnienie do przesyłania aplikacji niestandardowych w usłudze Microsoft Teams. Może być konieczne włączenie tego ustawienia przez administratora platformy Microsoft 365. Sprawdź ustawienia administratora usługi Teams, jeśli opcja przekazywania nie jest widoczna.

Konfigurowanie usługi Power Apps w aplikacji Copilot

  1. Przejdź do usługi Power Apps, wybierz odpowiednie środowisko, a następnie otwórz żądaną aplikację opartą na modelu.

  2. Wybierz ikonę MCP aplikacji na lewym pasku nawigacyjnym, a następnie wybierz pozycję Skonfiguruj mcp. Ta akcja powoduje skonfigurowanie serwera MCP dla aplikacji, który udostępnia narzędzia MCP do konwersacji Copilot. Jest to jednorazowy krok i może potrwać kilka sekund.

    Konfigurowanie aplikacji MCP dla aplikacji opartej na modelu

  3. Zapisz i opublikuj aplikację.

  4. Wybierz Pobierz pakiet aplikacji, aby pobrać agenta deklaratywnego wygenerowanego przez MCP aplikacji. Ten pakiet zawiera definicję agenta, wbudowane narzędzia do zarządzania rekordami i danymi oraz konfigurację wymaganą do wdrożenia doświadczenia aplikacji w Microsoft 365 Copilot.

    Przycisk Pobierz pakiet aplikacji z projektanta aplikacji opartej na modelu

  5. Przekaż skompresowany plik o nazwie podobnej do declarative-agent-app name.zip do usługi Microsoft Teams lub agentów platformy Microsoft 365:

Teraz możesz zadawać pytania dotyczące tabel w aplikacji przez tego agenta deklaratywnego. Wbudowane narzędzia mogą wyświetlać interaktywną siatkę zapytań dotyczących zestawów danych.

Przykład wyświetlania lotów zwróconych z agenta deklaratywnego agenta

Ponadto inteligentne formularze mogą służyć do tworzenia, wyświetlania i edytowania rekordów w kontekście platformy Microsoft 365 Copilot.

Przykład tworzenia nowego rekordu z poczty e-mail za pośrednictwem agenta deklaratywnego

Note

Możesz dostosować agenta deklaratywnego zawartego w pakiecie aplikacji według własnego uznania. Aby zmniejszyć możliwość nieoczekiwanego zachowania podczas korzystania z agentów sztucznej inteligencji, należy zachować ostrożność podczas dostosowywania kodu agenta deklaratywnego. Więcej informacji: Deklaratywni agenci platformy Microsoft 365 Copilot.

Tworzenie narzędzi niestandardowych

Oprócz wbudowanych narzędzi dostępnych w agencie deklaratywnym aplikacji jego funkcjonalność można rozszerzyć, włączając niestandardowe narzędzia i widżety. Projektant oparty na konstruktorze poleceń może służyć do integrowania niestandardowych narzędzi MCP i interakcyjnych składników interfejsu użytkownika z agentem deklaratywnym aplikacji. Na przykład w aplikacji Zava Airlines można dodać niestandardowe narzędzie, aby wyświetlić mapę lotu wraz z harmonogramem lotu jako wykres Gantta w widoku obok siebie.

Ważna

  1. Wybierz pozycję Utwórz narzędzie niestandardowe w sekcji Narzędzia na karcie App MCP.

  2. Podaj wyraźną, opisową nazwę i opis narzędzia, ponieważ rozwiązanie Microsoft 365 Copilot używa tych informacji do określenia, kiedy go wywołać.

  3. Dodaj instrukcje do danych wyjściowych narzędzia, które domyślnie ma format JSON. Możesz zmienić to na tekst, jeśli narzędzie nie ma związanego z nim środowiska użytkownika. Instrukcje mogą zawierać zapytania dotyczące określonych rekordów tabeli w aplikacji lub może być parametrem wejściowym narzędzia do użycia w łańcuchu narzędzi. Pamiętaj, aby poeksperymentować i wybrać odpowiedni model sztucznej inteligencji typu "prompt".

    Tworzenie niestandardowego narzędzia do wyświetlania danych lotu

  4. Wybierz pozycję Testuj , aby sprawdzić i zweryfikować dane wyjściowe narzędzia, a następnie wybierz pozycję Dalej. Teraz możesz utworzyć i wkleić opcjonalny niestandardowy kod HTML specyficzny dla tego narzędzia. Ten kod HTML można utworzyć przy użyciu /generate-mcp-apps-ui skill lub własnego narzędzia programistycznego. Wybierz Zapisz.

    Przykładowe dane wyjściowe JSON przykładowego narzędzia niestandardowego

  5. Pobierz zaktualizowany plik zip pakietu aplikacji i przekaż najnowszą wersję do agentów usługi Microsoft Teams lub Platformy Microsoft 365.

  6. Wywołaj narzędzie, wydając odpowiednie zapytanie w agencie aplikacji, aby zobaczyć niestandardowy interfejs użytkownika w akcji.

    Utworzony niestandardowy interfejs użytkownika przedstawiający czasy lotu

Note

Możesz wydać polecenie "-developer on" do platformy Microsoft 365 Copilot, aby wyświetlić informacje o debugowaniu agenta i wywoływane narzędzia. Aby rozwiązać typowe problemy, zobacz artykuł Rozwiązywanie problemów z aplikacjami MCP w Microsoft 365 Copilot

Dynamiczne łączenie narzędzi

Łańcuch narzędzi w agentach deklaratywnych usługi Power Apps korzysta z orkiestratora Microsoft 365 Copilot do analizowania intencji użytkownika i dynamicznego wywoływania wielu akcji opartych na MCP w celu wykonania zadania. Orkiestrator wybiera, parametryzuje i wykonuje właściwą kombinację akcji aplikacji MCP na podstawie kontekstu i opisów funkcji, umożliwiając kompleksowe przepływy pracy w usługach Power Apps i systemach przedsiębiorstwa. Poniżej przedstawiono sposób tworzenia narzędzia z sparametryzowanymi danymi wejściowymi.

  1. Wybierz pozycję Utwórz narzędzie niestandardowe w sekcji Narzędzia na karcie App MCP.

  2. Podaj wyraźną, opisową nazwę i opis narzędzia, ponieważ rozwiązanie Microsoft 365 Copilot używa tych informacji do określenia, kiedy go wywołać.

  3. W tym przykładzie używamy wizualizatora wykresów Sankey. Najpierw zdefiniuj schemat wejściowy JSON wymagany do wygenerowania wykresu Sankey. Następnie utwórz polecenie dla narzędzia do wizualizacji wykresów Sankey. Narzędzie uwidacznia parametr wejściowy o nazwie SankeyDiagramVisualizationInputData. Ten parametr jest interpretowany przez narzędzie i przekształcany w strukturę JSON oczekiwaną przez wizualizator. Wybierz wyraźną i opisową nazwę parametru wejściowego, aby program LLM mógł poprawnie zidentyfikować i wywołać narzędzie.

    Narzędzie niestandardowe z łańcuchem narzędzi

  4. Teraz możesz utworzyć i wkleić niestandardowy kod HTML specyficzny dla tego narzędzia. Ten kod HTML można utworzyć przy użyciu /generate-mcp-apps-ui skill lub własnego narzędzia programistycznego. Wybierz Zapisz.

  5. Pobierz zaktualizowany plik zip pakietu aplikacji i przekaż najnowszą wersję do usługi Microsoft Teams lub Agentów platformy Microsoft 365.

  6. Copilot może teraz używać zapytań języka naturalnego do pobierania danych i przekazywania ich do narzędzia do wizualizacji. Na przykład można użyć złożonego zapytania, aby dynamicznie pobierać dane wejściowe z danych tabeli "problemy" i wizualizować je przy użyciu narzędzia Sankey Chart Visualizer.

    Wizualizator wykresu Sankey wyświetlający dane tabeli problemów.

  7. Możesz dodatkowo uściślić wykres Sankey, kontynuując konwersację.

    Wizualizator wykresów Sankey wyświetlający dodatkowe informacje z konwersacji.

Przykład przedstawiający pełny ekran

W tym przykładzie przycisk rozwijania jest renderowany tylko wtedy, gdy host obsługuje tryb pełnoekranowy.

function renderExpandButton(app) {
  const ctx = app.getHostContext();

  // Don't render the button if the host doesn't support fullscreen
  if (!ctx?.availableDisplayModes?.includes('fullscreen')) {
    return null;
  }

  const btn = document.createElement('button');
  btn.addEventListener('click', async () => {
    const result = await app.requestDisplayMode({ mode: 'fullscreen' });
    // Always use result.mode — the host may grant a different mode than requested
    console.log('Granted mode:', result.mode);
  });
  return btn;
}

Ta sama ochrona ma zastosowanie do dowolnej możliwości hosta. Sprawdź getHostContext() przed użyciem:

const ctx = app.getHostContext();

// Theme
if (ctx?.theme) applyTheme(ctx.theme);

// Current display mode
if (ctx?.displayMode === 'fullscreen') { /* adjust layout */ }

// Available modes
if (ctx?.availableDisplayModes?.includes('inline')) { /* show collapse option */ }

Reagowanie na zmiany możliwości w czasie wykonywania za pośrednictwem onhostcontextchanged — kontekst hosta może aktualizować się po connect():

app.onhostcontextchanged = (ctx) => {
  if (ctx.theme) applyTheme(ctx.theme);
  if (ctx.displayMode) updateLayout(ctx.displayMode);
};

Korzystanie z trybu pełnoekranowego z wynikami narzędzia

Typowy wzorzec polega na automatycznym przełączeniu się na pełny ekran po odebraniu danych przez widżet, co daje więcej miejsca na renderowanie zawartości.

app.ontoolresult = async (result) => {
  const data = result.structuredContent;
  if (!data) return;

  // Expand to fullscreen when data arrives, if the host supports it
  const ctx = app.getHostContext();
  if (ctx?.availableDisplayModes?.includes('fullscreen') && currentMode !== 'fullscreen') {
    const granted = await app.requestDisplayMode({ mode: 'fullscreen' });
    currentMode = granted.mode;
    document.body.classList.toggle('mode-fullscreen', currentMode === 'fullscreen');
  }

  renderData(data);
};

Pozwól również użytkownikowi zadecydować — najpierw renderuj w aktualnym trybie, a następnie zaproponuj przycisk rozszerz.

app.ontoolresult = (result) => {
  const data = result.structuredContent;
  if (!data) return;

  renderData(data);        // render in whatever mode is active
  updateExpandBtn();       // show the expand button now that there is content
};

Generowanie widżetów aplikacji MCP za pomocą narzędzi do generowania kodu sztucznej inteligencji

Często zadawane pytania dotyczące usługi Power Apps w agentach