Prompts de confirmação para plug-ins de MCP e API para o Microsoft 365 Copilot

Importante

Plugins só são suportados como ações em agentes declarativos. Eles não estão habilitados no Microsoft 365 Copilot.

Na primeira vez que o Microsoft 365 Copilot usa um MCP (Protocolo de Contexto de Modelo) ou um plug-in de API, ele notifica o usuário e solicita que ele permita ou cancele a operação. Se o usuário permitir que o Copilot se conecte ao plug-in, todas as operações futuras que recuperam dados (operações HTTP GET) não exigirão nenhuma confirmação. Outras operações HTTP solicitam o usuário, mostrando os dados a serem enviados e dando ao usuário a opção de permitir ou recusar.

Caixa de diálogo de confirmação do Copilot para se conectar a um plug-in pela primeira vez

Os desenvolvedores de plug-ins podem alterar esse comportamento para operações individuais em seu servidor MCP ou API. Os desenvolvedores também podem personalizar o texto que o Copilot exibe para o usuário como parte do prompt de confirmação.

Substituindo o comportamento do prompt

Os desenvolvedores podem controlar se o Microsoft 365 Copilot solicita ao usuário a confirmação (após o prompt inicial pela primeira vez) de uma ferramenta específica definindo a readOnlyHint propriedade como true para a ferramenta na resposta do tools/list servidor MCP. Para obter mais informações, consulte a referência do esquema MCP.

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_weather",
        "title": "Weather Information Provider",
        "description": "Get current weather information for a location",
        "annotations": {
          "readOnlyHint": true,
        },
        "inputSchema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "City name or zip code"
            }
          },
          "required": ["location"]
        }
      }
    ]
  }
}

Personalizando o texto de confirmação

Os desenvolvedores podem especificar o texto de confirmação definindo a body propriedade no objeto Confirmation no objeto Function capabilities da função no manifesto do plug-in. O valor de body deve ser indicativo do que a função faz. Se essa propriedade não estiver presente no manifesto, a description propriedade no objeto Function será usada.

{
  "name": "GetBudgets",
  "description": "Returns details including name and available funds of budgets, optionally filtered by budget name",
  "capabilities": {
    "confirmation": {
      "type": "AdaptiveCard",
      "title": "Search budgets",
      "body": "Do you want to allow searching for budgets?"
    }
  }
}

Localizando o texto de confirmação

Você pode configurar cadeias de caracteres localizáveis para serem usadas como prompts de confirmação. As etapas a seguir descrevem o processo.

Etapa 1: usar chaves de localização no manifesto do plug-in

No manifesto do plug-in (por exemplo, plugin.json), substitua as cadeias de caracteres literais por chaves de localização usando o formato:

    {
      "schema_version": "v2.3",
      "name_for_human": "[[plugin_name]]",
      "description_for_human": "[[plugin_description]]"
    }

Essas chaves (por exemplo, plugin_name e plugin_description) devem corresponder às entradas no arquivo de localização e estar em conformidade com o regex ^[a-zA-Z_][a-zA-Z0-9_]*.

Etapa 2: criar arquivos de localização

Crie seus arquivos de localização no formato JSON e inclua uma localizationKeys propriedade que mapeie cada chave para sua cadeia de caracteres traduzida, conforme mostrado no exemplo a seguir.

    {
  "localizationKeys": {
    "plugin_name": "Weather Assistant",
    "plugin_description": "Provides weather updates and forecasts."
      }
    }

Você pode criar vários arquivos de localização para diferentes idiomas (por exemplo, en.json, fr.json, de.json) e referenciá-los na configuração do plug-in.

Etapa 3: adicionar localizationInfo ao manifesto do aplicativo

Inclua uma seção localizationInfo no manifesto do aplicativo que faça referência aos arquivos de localização. Por exemplo,

    "localizationInfo": {
      "defaultLanguageTag": "en",
      "defaultLanguageFile": "en.json",
      "additionalLanguages": [
        {
          "languageTag": "fr",
          "file": "fr.json"
        }
      ]
    }

Plug-ins do Microsoft 365 Copilot