A developer has built a 'Get Product Price' topic that accepts a product ID as input, looks up the price in Dataverse, and needs to return the price to the calling topic. How are topic input and output variables configured in Copilot Studio?
Select an answer to reveal the explanation.
Short Explanation
You mark the called topic's variables as inputs or outputs, then map them in the redirect node. It works like function parameters and return values. You don't need global variables or Dataverse handoffs here.
Full Explanation
Copilot Studio supports explicit input and output variable passing between topics through variable configuration in the topic designer.
The configuration that marks variables as 'Receive values from calling topics' for inputs and 'Return values to calling topics' for outputs, then maps values in the calling topic's redirect node, is correct. In the called topic, the product identifier variable is marked as an input and the price variable is marked as an output. In the calling topic's redirect node, an input mapping connects the caller's product identifier variable to the called topic's product identifier input, and an output mapping connects the returned price to a variable in the calling topic. This is the supported mechanism for topic parameter passing.
The approach that requires input variables to be global variables set by the calling topic before redirecting, with output variables written to another global variable, is not the correct configuration. Global variables can be used in Copilot Studio, but they are not required for topic input and output passing, and relying on them for this pattern creates shared state that is harder to reason about, harder to test, and less explicit than the supported receive/return variable configuration.
The claim that Copilot Studio does not support direct variable passing between topics and requires storing intermediate data in Dataverse is incorrect. Copilot Studio supports variable passing between topics through the input/output mechanism described above. Using Dataverse as an intermediary for a runtime parameter exchange is unnecessarily complex.
The approach that uses Power Fx formulas in the calling topic to read variables from the called topic's scope after the redirect completes is incorrect. Topics in Copilot Studio do not have cross-scope variable access via Power Fx. Variable scopes are strictly enforced: topic variables are local to their topic, and explicit input/output declarations are required for sharing values across topics.