Ative a sua aplicação e ferramentas personalizadas no Microsoft 365 Copilot

[Este tópico é documentação de pré-lançamento e está sujeito a alterações.]

O Power Apps no Microsoft 365 Copilot permite aos utilizadores interagir diretamente com a sua aplicação orientada a modelos a partir do Copilot. Quando um utilizador fala com o agente, pode mostrar os dados da sua aplicação como uma interface interativa, uma grelha para navegação de registos ou um formulário para visualizar, editar ou criá-los, tudo isto sem sair da experiência Copilot. Além disso, pode adicionar ferramentas MCP personalizadas e uma interface interativa ao agente declarativo da aplicação. Esta funcionalidade é alcançada através de aplicações MCP , que são uma extensão do MCP que permite aos servidores MCP fornecer interfaces de utilizador interativas aos hosts. A funcionalidade funciona gerando um servidor MCP e um agente declarativo a partir da tua aplicação.

Importante

  • Esta é uma funcionalidade de pré-visualização.
  • As funcionalidades de pré-visualização não se destinam a uso em produção e poderão ter funcionalidades restritas. Esses recursos estão disponíveis antes de um lançamento oficial para que os clientes possam obter acesso antecipado e fornecer feedback.

Pré-requisitos

  • Uma aplicação orientada a modelos. Atualmente, esta funcionalidade está disponível apenas com aplicações orientadas a modelos.
  • Licença Microsoft 365 Copilot. É necessário tanto para o criador que implementa o agente como para os utilizadores finais que interagem com ele.
  • Permissão para carregar aplicações personalizadas no Microsoft Teams. O administrador do Microsoft 365 pode precisar de ativar isto. Verifica as definições de administrador do Teams se a opção de upload não estiver visível.

Configurar Power Apps no Copilot

  1. Vai ao Power Apps, seleciona o ambiente que queres e depois abre a aplicação orientada ao modelo desejada.

  2. Seleciona o ícone App MCP na barra de navegação da esquerda e depois seleciona Configurar MCP. Esta ação configura o servidor MCP para a aplicação, que fornece ferramentas MCP para conversas no Copilot. Este é um passo único e pode demorar alguns segundos a completar.

    Configurar a aplicação MCP para aplicação orientada a modelos

  3. Guarde e Publique a aplicação.

  4. Selecione Download pacote de aplicação para descarregar o agente declarativo gerado pelo MCP da sua aplicação. Este pacote contém a definição do agente, ferramentas integradas para registo e dados, bem como a configuração necessária para implementar a experiência da sua aplicação no Microsoft 365 Copilot.

    Botão Transferir pacote de aplicações do estruturador de aplicações condicionadas por modelos

  5. Carregue o ficheiro comprimido que tem um nome semelhante a declarative-agent-app name.zip para Agentes do Microsoft Teams ou do Microsoft 365:

Agora pode colocar questões sobre as tabelas na aplicação através deste agente declarativo. As ferramentas integradas podem mostrar uma grelha interativa para as consultas ao conjunto de dados.

Exemplo de visualização de voos retornados pelo agente declarativo

Adicionalmente, formulários inteligentes podem ser usados para criar, visualizar e editar registos dentro do contexto do Microsoft 365 Copilot.

Exemplo de criar um novo registo a partir de email através de um agente declarativo

Note

Pode personalizar o agente declarativo incluído no pacote da aplicação a seu critério. Para reduzir a possibilidade de comportamentos inesperados ao usar agentes de IA, tenha cautela ao personalizar o código declarativo do agente. Mais informações: Agentes Declarativos para Microsoft 365 Copilot.

Criar ferramentas personalizadas

Para além das ferramentas integradas disponíveis no agente declarativo da aplicação, a sua funcionalidade pode ser alargada incorporando ferramentas e widgets personalizados. Um designer baseado em criador de prompts pode ser usado para integrar ferramentas MCP personalizadas e componentes interativos de interface no agente declarativo da aplicação. Por exemplo, na aplicação Zava Airlines, pode ser adicionada uma ferramenta personalizada para mostrar o mapa de voo juntamente com a linha temporal do voo como um mapa de Gantt numa vista lado a lado.

Importante

  1. Selecione Criar ferramenta personalizada na secção Ferramentas do separador App MCP .

  2. Forneça um nome claro e uma descrição descritiva para a ferramenta, pois o Microsoft 365 Copilot utiliza estas informações para determinar quando a invocar.

  3. Adicione as instruções para a saída de dados da ferramenta, cujo formato por defeito é JSON. Pode alterá-lo para texto se a ferramenta não tiver uma experiência de utilizador associada. As instruções podem incluir consultas a registos específicos da tabela na aplicação ou podem ser um parâmetro de entrada da ferramenta a ser utilizado no encadeamento de ferramentas. Assegure-se de que experimenta e escolhe o modelo de IA de pedidos adequado.

    Criar uma ferramenta personalizada para visualizar dados de voo

  4. Selecione Testar para verificar e validar a saída da ferramenta e depois selecione Próximo. Agora pode criar e colar HTML personalizado opcional específico para esta ferramenta. Este HTML pode ser criado usando a /generate-mcp-apps-ui skill ou a sua própria ferramenta de desenvolvimento. Selecione Guardar.

    Exemplo de saída de ferramenta personalizada em JSON

  5. Descarregue o pacote da aplicação atualizado em zip e carregue a versão mais recente para o Microsoft Teams ou para os agentes do Microsoft 365.

  6. Invoca a ferramenta emitindo a consulta relevante no agente da aplicação para veres a interface personalizada em ação.

    Interface personalizada criada que representa os tempos de voo

Note

Pode emitir o comando '-developer on' para o Microsoft 365 Copilot para ver a informação de depuração dos agentes e as ferramentas invocadas. Para resolver problemas comuns, consulte Resolução de problemas das aplicações MCP no Microsoft 365 Copilot

Encadeamento dinâmico de ferramentas

O encadeamento de ferramentas nos agentes declarativos Power Apps utiliza o orquestrador Microsoft 365 Copilot para ponderar a intenção do utilizador e invocar dinamicamente múltiplas ações (ferramentas) alimentadas por MCP em sequência para completar uma tarefa. O orquestrador seleciona, parametriza e executa a combinação certa de ações da aplicação MCP com base no contexto e nas descrições de funções, permitindo fluxos de trabalho de ponta a ponta entre Power Apps e sistemas empresariais. Aqui está como criar uma ferramenta com entrada parametrizada.

  1. Selecione Criar ferramenta personalizada na secção Ferramentas do separador App MCP .

  2. Forneça um nome claro e uma descrição descritiva para a ferramenta, pois o Microsoft 365 Copilot utiliza estas informações para determinar quando a invocar.

  3. Neste exemplo, usamos um visualizador de diagramas de Sankey. Primeiro, defina o esquema de entrada JSON necessário para gerar um diagrama de Sankey. De seguida, cria um prompt para a ferramenta visualizadora de gráficos de Sankey. A ferramenta expõe um parâmetro de entrada chamado SankeyDiagramVisualizationInputData. Este parâmetro é interpretado pela ferramenta e transformado na estrutura JSON esperada pelo visualizador. Escolha um nome claro e descritivo do parâmetro de entrada para que o LLM possa identificar e invocar corretamente a ferramenta.

    Ferramenta personalizada com encadeamento de ferramentas

  4. Agora pode criar e colar HTML personalizado específico para esta ferramenta. Este HTML pode ser criado usando a /generate-mcp-apps-ui skill ou a sua própria ferramenta de desenvolvimento. Selecione Guardar.

  5. Descarregue o pacote de aplicação atualizado em zip e carregue a versão mais recente para o Microsoft Teams ou Microsoft 365 Agents.

  6. O Copilot pode agora usar consultas em linguagem natural para obter os dados e passá-los para a ferramenta para visualização. Por exemplo, pode usar uma consulta complexa para obter dinamicamente entradas dos dados da tabela 'issues' e visualizá-las usando a ferramenta Sankey Chart Visualizer.

    Visualizador de gráficos Sankey a mostrar os dados da tabela de problemas.

  7. Pode refinar ainda mais o gráfico de Sankey continuando a conversa.

    Visualizador de gráfico Sankey que mostra informação adicional da conversa.

Exemplo em ecrã completo

Neste exemplo, um botão expandir é renderizado apenas se o host suportar o modo de ecrã completo.

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;
}

A mesma proteção aplica-se a qualquer capacidade do hospedeiro. Verifique getHostContext() antes de usar:

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 */ }

Reagir às alterações de capacidades em tempo de execução através de onhostcontextchanged — o contexto do host pode ser atualizado após connect():

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

Uso do modo de ecrã completo com resultados de ferramentas

Um padrão comum é mudar automaticamente para ecrã completo quando o widget recebe dados, dando ao conteúdo mais espaço para renderizar.

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);
};

Também pode deixar o utilizador decidir — renderizar primeiro para o modo atual e depois oferecer o botão expandir:

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
};

Gerar widgets de aplicação MCP com ferramentas de geração de código por IA

FAQ sobre Power Apps para agentes