in src/RequestProcessor.cs [517:549]
private static void BindOutputFromResult(InvocationResponse response, AzFunctionInfo functionInfo, IDictionary results)
{
if (functionInfo.DurableFunctionInfo.Type != DurableFunctionType.OrchestrationFunction)
{
// Set out binding data and return response to be sent back to host
foreach (var (bindingName, bindingInfo) in functionInfo.OutputBindings)
{
var outValue = results[bindingName];
var transformedValue = Utils.TransformOutBindingValueAsNeeded(bindingName, bindingInfo, outValue);
var dataToUse = transformedValue.ToTypedData();
// if one of the bindings is '$return' we need to set the ReturnValue
if (string.Equals(bindingName, AzFunctionInfo.DollarReturn, StringComparison.OrdinalIgnoreCase))
{
response.ReturnValue = dataToUse;
continue;
}
var paramBinding = new ParameterBinding()
{
Name = bindingName,
Data = dataToUse
};
response.OutputData.Add(paramBinding);
}
}
if (functionInfo.DurableFunctionInfo.ProvidesForcedDollarReturnValue || FunctionInfoUtilities.hasAssistantSkillTrigger(functionInfo))
{
response.ReturnValue = results[AzFunctionInfo.DollarReturn].ToTypedData(isDurableData: true);
}
}