Work IQ A2A-Schnellstart

Voraussetzungen

Registrieren der Anwendung in Microsoft Entra

Registrieren Sie eine Anwendung mit Berechtigungen für den Zugriff auf Work IQ. Wenn Sie die App registrieren, erhalten Sie zwei Werte: APP_ID und TENANT_ID. Verwenden Sie diese Werte mit dem A2A-Beispiel, um Ihre Mandantenkonfiguration zu testen.

Tipp

Wird ein serverseitiger Agent (Web-App) erstellt? In dieser Schnellstartanleitung wird eine Registrierung öffentlicher Clients (mobil/Desktop) als einfachster Pfad zu einem funktionierenden Beispiel verwendet. Wenn es sich bei Ihrer Anwendung um einen serverseitigen Dienst handelt, der Work IQ im Namen eines Endbenutzers aufruft (z. B. ein Web-Agent, der den Benutzer anmeldet und dann seine Identität an Work IQ weiterleitet), verwenden Sie eine vertrauliche Clientregistrierung mit einem geheimen Clientschlüssel oder einem Zertifikat. Tauschen Sie das Token des Benutzers mithilfe des OBO-Flusses (On-Behalf-Of) aus. Die Work IQ-API-Oberfläche und die delegierte Berechtigung WorkIQAgent.Ask sind in beiden Flows identisch.

  1. Wechseln Sie zum Microsoft Entra Admin Center. Wählen Sie im linken Navigationsbereich "Entra-ID" und dann "App-Registrierungen" aus.
  2. Wählen Sie Neue Registrierung aus.
  3. Fügen Sie einen beschreibenden Namen hinzu, legen Sie "Unterstützte Kontotypen " auf "Nur Konten in diesem Organisationsverzeichnis" fest, und wählen Sie "Registrieren" aus.
  4. Kopieren Sie die Anwendungs-ID (Client-ID). Dieser Wert ist Ihr APP_ID.
  5. Wählen Sie Authentifizierung aus. Wählen Sie Plattform hinzufügen (oder Umleitungs-URI hinzufügen). Wählen Sie im Dialogfeld "Mobil- und Desktopanwendungen" aus.
    • Wählen Sie den vorgeschlagenen URI aus: https://login.microsoftonline.com/common/oauth2/nativeclient.
    • Fügen Sie unter Benutzerdefinierte Umleitungs-URIs die folgenden beiden URIs nacheinander hinzu (jeweils in einer eigenen Zeile):
      • http://localhost
      • ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> (where <APP_ID> is your APP_ID)
    • Legen Sie unter "Erweiterte Einstellungen" die Option Öffentliche Clientflows zulassen auf Ja fest.
    • Klicken Sie auf Speichern.
  6. Wählen Sie API-Berechtigungen, Berechtigung hinzufügen und dann APIs aus, die meine organization verwendet. Suchen Sie nach Work IQund wählen Sie dann Delegierte Berechtigungen aus. Wählen Sie WorkIQAgent.Ask und dann Berechtigungen hinzufügen aus.
  7. Wählen Sie Administratoreinwilligung für [Ihren Mandanten] erteilen aus. Überprüfen Sie das Bestätigungsdialogfeld, und wählen Sie Ja aus.
  8. Kopieren Sie Ihre Directory (Mandanten)-ID von der Übersichtsseite der Microsoft Entra ID.

Die Berechtigung WorkIQAgent.Ask ermöglicht es der App, im Namen des angemeldeten Benutzers dessen Microsoft 365 Work Intelligence (E-Mail, Dateien, Besprechungen, Chats) über Work IQ abzufragen.

Schnellstart: A2A-Protokoll

Das Agent-zu-Agent-Protokoll (A2A-Protokoll) ist ein offener Standard für die Agent-Kommunikation. Work IQ unterstützt sowohl A2A v1.0 (diese Schnellstart) als auch v0.3. Der Anforderungsheader steuert den A2A-Version Versionsversand.

  • A2A-Version: 1.0 - v1.0 Drahtformat (dieser Schnellstart)
  • A2A-Version: 0.3 (oder Header weggelassen) – v0.3-Drahtformat (beibehalten als Standard ohne Header für die Abwärtskompatibilität mit vorhandenen v0.3-Clients)

Beispielcode abrufen

Klonen Sie das Beispielrepository mit dem folgenden Befehl.

git clone https://github.com/microsoft/work-iq-samples.git
cd work-iq-samples

Ausführen des Beispiels (mit dem A2A SDK)

Im dotnet/a2a Beispiel wird das A2A .NET SDK verwendet.

cd dotnet/a2a
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>

Ausführen des Beispiels (unformatiertes HTTP, kein SDK)

Das dotnet/a2a-raw Beispiel zeigt das Drahtprotokoll ohne SDK-Abstraktion. Die Verwendung dieses Beispiels ist nützlich für die Portierung in non-.NET Sprachen.

cd dotnet/a2a-raw
dotnet run -- --token WAM --appid <APP_ID> --tenant <TENANT_ID>

Folge

Wenn Sie das Beispiel ausführen, erscheint eine Anmeldeaufforderung (WAM-Dialogfeld unter Windows, Systembrowser unter macOS/Linux). Geben Sie nach der Anmeldung eine Nachricht an der You > Eingabeaufforderung ein, und drücken Sie die EINGABETASTE. Die Antwort des Agenten wird unten angezeigt. Type quit to exit.

── READY — Work IQ Gateway — Sync — https://workiq.svc.cloud.microsoft/a2a/ ──
Type a message. 'quit' to exit.

You > Summarize my recent emails from Alice.
Agent > You've exchanged 8 emails with Alice this week. Key threads:
  - ...
  (2145 ms)

You > quit

So funktioniert es

Work IQ akzeptiert A2A v1.0 über JSON-RPC unter https://workiq.svc.cloud.microsoft/a2a/. (A2A v1.0 definiert auch eine REST-Bindung bei /v1/message:send; Work IQ wird diese REST-Bindung möglicherweise in einem zukünftigen Update verfügbar machen.)

Work IQ Gateway

  • Endpunkt: https://workiq.svc.cloud.microsoft/a2a/
  • Tokenzielgruppe: api://workiq.svc.cloud.microsoft
  • Bereich: WorkIQAgent.Ask

Synchron SendMessage

POST https://workiq.svc.cloud.microsoft/a2a/
Authorization: Bearer <token>
Content-Type: application/json
A2A-Version: 1.0

{
  "jsonrpc": "2.0",
  "id": "<request-guid>",
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "messageId": "<message-guid>",
      "parts": [
        {
          "text": "What meetings do I have today?"
        }
      ],
      "metadata": {
        "Location": {
          "timeZoneOffset": -480,
          "timeZone": "America/Los_Angeles"
        }
      }
    }
  }
}

Der A2A-Version: 1.0 Anforderungsheader aktiviert v1.0-Methodennamen (SendMessage) auf dem Gateway. Ohne diesen Wert ist der Server standardmäßig auf v0.3 festgelegt und gibt einen JSON-RPC -32601 "Method not found" für v1.0-Methodennamen zurück.

Die Antwort ist ein JSON-RPC-Umschlag mit result.task der Aufgabe des Agenten und einem contextId für mehrere Runden:

{
  "jsonrpc": "2.0",
  "id": "<request-guid>",
  "result": {
    "task": {
      "id": "<task-id>",
      "contextId": "ctx-1",
      "status": {
        "state": "TASK_STATE_COMPLETED"
      },
      "artifacts": [
        {
          "artifactId": "<artifact-id>",
          "name": "Answer",
          "parts": [
            {
              "text": "Today you have: 9 AM standup, 11 AM review with Dana, 2 PM customer call."
            }
          ]
        }
      ]
    }
  }
}

Work IQ benötigt die Location Metadaten, um zeitkritische Abfragen ("heute" oder "diese Woche") in der Ortszeit des Benutzers zu verankern.

Konversationen mit Mehrfachdurchläufen

Um den Konversationsstatus beizubehalten, übergeben Sie den contextId aus der vorherigen Antwort in der nächsten Nachricht.

{
  "jsonrpc": "2.0",
  "id": "<request-guid-2>",
  "method": "SendMessage",
  "params": {
    "message": {
      "role": "ROLE_USER",
      "messageId": "<message-guid-2>",
      "contextId": "ctx-1",
      "parts": [
        {
          "text": "Tell me more about the 2 PM customer call."
        }
      ]
    }
  }
}

Wichtige Protokolldetails (A2A v1.0)

  • JSON-RPC-Umschlag erforderlich: Jede Anforderung muss enthalten jsonrpc, id, method, params.
  • POST an Basis-URL: Die Methode (SendMessage) befindet sich im JSON-RPC-Text, nicht im URL-Pfad.
  • Feldpräsenzteile: Teile sind flache Objekte mit einem von text, url, rawoder data Menge; kein kind Diskriminator.
  • SCREAMING_SNAKE_CASE Enumerationen: Rollen verwendenROLE_USER / ROLE_AGENT; Zustände verwenden TASK_STATE_WORKING / / TASK_STATE_COMPLETEDTASK_STATE_FAILED / usw.
  • Ergebnis-Wrapper: Aufgabenantworten werden unter result.taskangezeigt.
  • Version Versand:A2A-Version: 1.0 wählt v1.0; Wenn Sie die Kopfzeile weglassen (oder A2A-Version: 0.3senden), wird v0.3 ausgewählt, die Standardeinstellung ohne Kopfzeile.

Agent-Ermittlung

Um einen bestimmten Agent aufzurufen, übergeben Sie seine Agent-ID durch --agent-id. Sie können die ID eines Agenten auf zwei Arten finden.

Die WorkIQ-CLI enthält einen experimentellen list-agents Befehl, der die für den angemeldeten Benutzer verfügbaren Agents auflistet.

workiq config set experimental=true
workiq list-agents

Jede Zeile zeigt den Anzeigenamen, den Anbieter und die Agent-ID des Agenten (die zweite Zeile jedes Eintrags). Verwenden Sie diese ID --agent-id beim Ausführen des Beispiels.

Alternative: Kopieren aus der Microsoft 365 Copilot-URL

  1. Wechseln Sie zur Website Microsoft 365 Copilot Chat.
  2. Wählen Sie in der linken Navigationsleiste Ihren Agent aus.
  3. Die Agent-ID wird in der Adressleiste des Browsers nach /chat/agent/:
https://m365.cloud.microsoft/chat/agent/P_c0fd1ab0-cbf3-7eb9-1a7d-2d823549ef31.8ad61c39-5b6e-447c-b26a-a64eee436502
                                       └──────────────────────────── agent ID ─────────────────────────────────────┘

Das Format ist <LETTER>_<opaqueValue1>.<opaqueValue2>.

Übergeben der Agent-ID an das Beispiel

Wichtig

Die gesamte Agent-ID als undurchsichtige Zeichenfolge behandeln. Dekonstruieren oder analysieren Sie seine Komponenten nicht. Übergeben Sie ihn unverändert an die API.

Übergeben der Agent-ID als Argument an das Beispiel

dotnet run -- --token WAM --agent-id <AGENT_ID> --appid <APP_ID> --tenant <TENANT_ID>

▶ Öffnen Sie in der interaktiven Demo eine agentspezifische Bestandseingabeaufforderung.

Hinweis

Einige Microsoft 365-Agents (insbesondere die Word-, Excel- und PowerPoint-Agents in der Copilot Chat-Benutzeroberfläche) sind so konzipiert, dass sie im Kontext dieser Office-Produkte ausgeführt werden, und erzeugen keine nützlichen Antworten, wenn sie kopflos über A2A aufgerufen werden.

A2A-Funktionen

Funktion Status
SendMessage (sync) ✅ Verfügbar
Mehrfachumdrehung (contextId) ✅ Verfügbar
Textteile ✅ Verfügbar
Zitate ✅ Verfügbar (Auslieferungsshape wird modernisiert; siehe Anmerkungen zu dieser Version)

Authentifizierung

Methode Plattform Verwendung
WAM (Windows-Konto-Manager) Windows --token WAM --appid <APP_ID> --tenant <TENANT_ID>
Interaktiver Browser macOS, Linux Gleicher Befehl – Microsoft Identity Client greift auf eine Systembrowser-Anmeldung zurück.
Vorab erhaltenes JWT Any --token <JWT>(Das Token muss für Ihre registrierte App ausgestellt werden, nicht für einen beliebigen Client wie die Azure-Befehlszeilenschnittstelle.)

Problembehandlung

Problembeschreibung Behebung
401 Unauthorized Token aud stimmt nicht überein api://workiq.svc.cloud.microsoft. Überprüfen Sie den Zielgruppenanspruch.
403 Forbidden (kein Bereichsfehler) Der Benutzer ist nicht Mitglied eines nutzungsbasierten Abrechnungsplans. Zuweisen und 15–30 Minuten warten.
403 Forbidden mit Required scopes = [...] Die Zustimmung des Admins für WorkIQAgent.Ask wurde nicht erteilt. Führen Sie die Administratoreinwilligung erneut aus (Administratoreinrichtung, Schritt 6 / Azure CLI Schritt 3).
WAM IncorrectConfiguration (3399614466) Bei der App-Registrierung fehlt der Brokerumleitungs-URI. Fügen Sie es erneut hinzu ms-appx-web://microsoft.aad.brokerplugin/<APP_ID> und versuchen Sie es erneut.
WAM schlägt nach dem Festlegen des Umleitungs-URI weiterhin fehl Einzelmandanten-App + /common Autoritätskonflikt. So wird übergeben --tenant <TENANT_ID> , dass Microsoft Identity Client die mandantenspezifische Autorität verwendet.
AADSTS65001: consent required Die Zustimmung des Admins wurde nicht erteilt. Ausführen az ad app permission admin-consent --id <APP_ID>.
Leere 200 / kein Agenttext Wenn die Copilot-Lizenz des Benutzers kürzlich zugewiesen wurde, kann die Erstellung des Index 15 bis 30 Minuten dauern. Wenn Sie einen Word/Excel/PowerPoint-Agent aufgerufen haben, werden diese Agents im Office-Produkt ausgeführt und erzeugen keine Headless-A2A-Antworten.