Some products and features are in the process of being renamed. Generative playbook and flow features are also being migrated to a single consolidated console. See the details.
A fulfillment can do one or more of the following actions at the same time:
Generate rich message responses.
Set parameter values.
Call the webhook.
Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.
The list of rich message responses to present to the user.
webhook
string
The webhook to call. Format: projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/webhooks/<WebhookID>.
returnPartialResponses
boolean
Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
tag
string
The value of this field will be populated in the WebhookRequestfulfillmentInfo.tag field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if webhook is specified.
Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level.
enableGenerativeFallback
boolean
If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers.
The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against [form parameters][Form.parameters] or [session parameters][SessionInfo.parameters].
The list of messages or conditional cases to activate for this case.
JSON representation
{// Union field cases_or_message can be only one of the following:"message": {object (ResponseMessage)},"additionalCases": {object (ConditionalCases)}// End of list of possible types for union field cases_or_message.}
Fields
Union field cases_or_message. Either a message is returned or additional cases to be evaluated. cases_or_message can be only one of the following:
Required. The generator to call. Format: projects/<ProjectID>/locations/<LocationID>/agents/<AgentID>/generators/<GeneratorID>.
inputParameters
map (key: string, value: string)
Map from [placeholder parameter][Generator.Parameter.id] in the Generator to corresponding session parameters. By default, Dialogflow uses the session parameter with the same name to fill in the generator template. e.g. If there is a placeholder parameter city in the Generator, Dialogflow default to fill in the $city with $session.params.city. However, you may choose to fill $city with $session.params.desination-city. - Map key: [parameter ID][Genrator.Parameter.id] - Map value: session parameter name
An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
outputParameter
string
Required. Output parameter which should contain the generator response.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-27 UTC."],[[["\u003cp\u003eFulfillments in Dialogflow CX can perform multiple actions simultaneously, including generating rich messages, setting parameter values, and calling webhooks.\u003c/p\u003e\n"],["\u003cp\u003eFulfillments can be triggered at various stages within a page or form lifecycle, such as when entering a new page, allowing for dynamic responses and data handling.\u003c/p\u003e\n"],["\u003cp\u003eThe JSON representation defines the structure of a fulfillment, including message responses, webhook calls, parameter settings, conditional cases, and advanced settings.\u003c/p\u003e\n"],["\u003cp\u003eConditional logic within fulfillments allows for complex, cascading if-else conditions, where the first matching condition's messages or actions are executed.\u003c/p\u003e\n"],["\u003cp\u003eFulfillments can use the \u003ccode\u003eenableGenerativeFallback\u003c/code\u003e flag to attempt to use LLMs to provide responses when triggered, but it will fall back to defined messages if the attempt fails, and is useful for no-match event handlers.\u003c/p\u003e\n"]]],[],null,["# Fulfillment\n\n- [JSON representation](#SCHEMA_REPRESENTATION)\n- [SetParameterAction](#SetParameterAction)\n - [JSON representation](#SetParameterAction.SCHEMA_REPRESENTATION)\n- [ConditionalCases](#ConditionalCases)\n - [JSON representation](#ConditionalCases.SCHEMA_REPRESENTATION)\n- [Case](#Case)\n - [JSON representation](#Case.SCHEMA_REPRESENTATION)\n- [CaseContent](#CaseContent)\n - [JSON representation](#CaseContent.SCHEMA_REPRESENTATION)\n- [GeneratorSettings](#GeneratorSettings)\n - [JSON representation](#GeneratorSettings.SCHEMA_REPRESENTATION)\n\nA fulfillment can do one or more of the following actions at the same time:\n\n- Generate rich message responses.\n- Set parameter values.\n- Call the webhook.\n\nFulfillments can be called at various stages in the [Page](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.flows.pages#Page) or [Form](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.flows.pages#Page.Form) lifecycle. For example, when a [DetectIntentRequest](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.conversations#DetectIntentRequest) drives a session to enter a new page, the page's entry fulfillment can add a static response to the [QueryResult](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.conversations#QueryResult) in the returning [DetectIntentResponse](/dialogflow/cx/docs/reference/rest/v3beta1/projects.locations.agents.conversations#DetectIntentResponse), call the webhook (for example, to load user data from a database), or both.\n\nSetParameterAction\n------------------\n\nSetting a parameter value.\n\nConditionalCases\n----------------\n\nA list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.\n\nCase\n----\n\nEach case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.\n\nCaseContent\n-----------\n\nThe list of messages or conditional cases to activate for this case.\n\nGeneratorSettings\n-----------------\n\nGenerator settings used by the LLM to generate a text response."]]