A developer is designing the data contract between a code app and a Copilot Studio agent that the app calls through ExecuteCopilotAsyncV2. Which description matches what the app sends and what it receives?
Select an answer to reveal the explanation.
Short Explanation
Think of the agent as a pen pal: you send a letter, it writes back. The letter is a message string, and you can tuck JSON inside it if the agent expects structure. What you get back is text responses plus a conversation ID, not database rows.
Full Explanation
ExecuteCopilotAsyncV2 is a conversation-style exchange. The request carries the message, which is the prompt or data for the agent and can be a JSON string for structured input, the agent name of the published agent, and a placeholder notification URL that the synchronous call requires but does not use. The response contains an array of response strings, the last response, a conversation ID for tracking and a completed flag. When an agent returns structured content, it arrives as a string that the app parses with JSON.parse. The app does not send a Dataverse query to the agent; data access is the agent's own concern through its tools and knowledge, and the app receives text rather than typed table rows. Topic IDs and slot values are internal Copilot Studio constructs; the connector does not expose a contract for setting them directly. The connector call is a request and response through the generated service, not a token stream over a WebSocket, and the app does not hand-carry the user's token. Exam caveat: response property casing can vary, so robust code checks for alternatives such as conversationId and ConversationId. Operational check: send a JSON-formatted test message, confirm completed is true, and parse the first response string.