Prev Next

Cloud / Google Cloud Dialogflow ES (Essentials) Interview questions

Last updated

1. What is Dialogflow ES? 2. What is an agent in Dialogflow ES? 3. What is an intent in Dialogflow ES? 4. What are training phrases in Dialogflow ES? 5. What are entities in Dialogflow ES? 6. What are the types of entities in Dialogflow ES? 7. What is a context in Dialogflow ES? 8. What is the purpose of fulfillment in Dialogflow ES? 9. What is the Default Fallback Intent? 10. What is the Default Welcome Intent? 11. What are parameters in Dialogflow ES intents? 12. What are follow-up intents in Dialogflow ES? 13. What is the difference between Dialogflow ES Trial and Essentials editions? 14. What is an event in Dialogflow ES? 15. What are the response types in Dialogflow ES? 16. What are the integrations supported by Dialogflow ES? 17. How do you create a Dialogflow ES agent? 18. What is the purpose of the Dialogflow ES inline editor? 19. What is a session in Dialogflow ES? 20. What are knowledge connectors in Dialogflow ES? 21. How do you export, import and restore a Dialogflow ES agent? 22. What are regexp entities in Dialogflow ES? 23. How does Dialogflow ES match a user query to an intent? 24. What is the ML classification threshold in Dialogflow ES? 25. What is the difference between hybrid and ML-only match modes in Dialogflow ES? 26. How do input and output contexts work together in Dialogflow ES? 27. What is the default context lifespan, and how do you change it? 28. How does slot filling work in Dialogflow ES? 29. How does a Dialogflow ES webhook receive and return data? 30. What happens when a Dialogflow ES webhook call fails or times out? 31. How do you call the Dialogflow ES detectIntent API? 32. What is the difference between Dialogflow ES and Dialogflow CX? 33. When would you choose Dialogflow CX over Dialogflow ES? 34. How do session entities work in Dialogflow ES? 35. How do you pass custom data to and from a Dialogflow ES webhook? 36. Why do similar training phrases cause intent conflicts in Dialogflow ES? 37. How do intent priorities work in Dialogflow ES? 38. How do versions and environments work in Dialogflow ES? 39. How do you secure a Dialogflow ES webhook? 40. How do you troubleshoot an intent that is not matching in Dialogflow ES? 41. How do you troubleshoot Dialogflow ES webhook issues? 42. How can you reduce Dialogflow ES webhook latency? 43. How do you build a multilingual agent in Dialogflow ES? 44. How does Dialogflow ES handle voice input? 45. How do you handle Dialogflow ES quota limits? 46. How do synonyms, automated expansion and fuzzy matching affect entity matching? 47. Why use custom contexts instead of follow-up intents in Dialogflow ES? 48. How do you test and validate a Dialogflow ES agent before release? 49. How do you reset or delete a context from a Dialogflow ES webhook? 50. How do you enable sentiment analysis in Dialogflow ES?

1. What is Dialogflow ES?

Dialogflow ES (Essentials) is Google Cloud's natural language understanding (NLU) service for building text and voice chatbots. It takes a user utterance, maps it to an intent, pulls out parameters, and returns a response, either a static reply or one built by your own webhook.

ES is the original, intent-based edition. Conversation state is tracked with contexts rather than a visual flow. Dialogflow CX is the newer flow-and-page edition aimed at larger, more complex agents.

Typical uses are customer-support bots, voice IVR front ends, FAQ assistants and smart-device commands. You can reach an agent through the console, the REST/gRPC API, client libraries or ready-made integrations such as Slack and Telephony.

Take quiz
How does a Dialogflow ES agent decide how to respond to a user message?
It runs the message through a page-by-page state machine
It matches the message to an intent and returns that intent's response
It always forwards the message to a webhook first
It looks the message up in a fixed keyword table only
Which edition is the flow-and-page based one?
Dialogflow ES Trial
Dialogflow ES Essentials
Dialogflow Messenger
Dialogflow CX

2. What is an agent in Dialogflow ES?

An agent is the top-level container for one conversational application. It holds your intents, entities, contexts, fulfillment settings, ML settings and integrations, and it is the thing you call through the API.

Each agent lives inside a Google Cloud project, has a default language, and can be exported as a ZIP file. One project can hold only one ES agent, so teams that need several bots usually use several projects.

Think of it as a compiled NLU module: you describe intents and examples, Dialogflow trains a model, and the agent answers queries against that model.

Take quiz
How many Dialogflow ES agents can one Google Cloud project hold?
One per language
As many as you have intents
One
Up to ten
Which of these is NOT stored inside an agent?
The end user's browser cookies
Intents and training phrases
Entity types
Fulfillment webhook settings

3. What is an intent in Dialogflow ES?

An intent represents one thing the user wants, for example book a table or check order status. Dialogflow matches each incoming query to the best-fitting intent and then runs whatever that intent defines.

An intent is made up of these parts:

  • Training phrases - example utterances for the ML model
  • Action and parameters - values extracted from the query
  • Contexts - input and output contexts for multi-turn state
  • Events - non-text triggers
  • Responses and fulfillment - static replies or a webhook call

The matched intent's name, parameters and confidence come back in the queryResult of the detect-intent response.

Take quiz
Which part of an intent gives the ML model examples of what users say?
Output contexts
Response variations
The action name
Training phrases
Where does Dialogflow report which intent was matched?
In the agent's ZIP export
In queryResult of the detect-intent response
In the webhook URL
In the session ID

4. What are training phrases in Dialogflow ES?

Training phrases are example sentences a user might say to trigger an intent. Dialogflow uses them to train its ML model, so it can match phrasings you never wrote down, not just exact copies.

Good phrases vary wording, length and word order. Google suggests supplying at least 10-20 for each intent, and more when the intent has several parameters. Words that belong to an entity are annotated, so tomorrow in book a table for tomorrow is tagged with @sys.date and becomes a parameter.

Dialogflow retrains automatically when you save an intent, so no manual training step is needed in the console.

Take quiz
About how many training phrases does Google suggest at minimum per intent?
10 to 20
1 to 2
Exactly 3
More than 500
What does annotating a word in a training phrase do?
Makes it case sensitive
Blocks it from being matched
Links it to an entity so it becomes a parameter
Turns it into a context

5. What are entities in Dialogflow ES?

Entities describe the kind of data you want to pull out of an utterance, such as a city, a date or a product size. An entity type is the category (for example @size), and each entity entry is one value inside it.

When a training phrase contains an annotated entity, the value found at runtime is stored in an intent parameter. Your webhook or response can then use it with $parameter syntax.

Dialogflow already ships system entities like @sys.date and @sys.number, and you create developer entities for domain data such as plans or branches.

Take quiz
In the entity type @size, what is 'large'?
An intent
An entity entry
A context
A fulfillment
How do you refer to an extracted parameter named city in a text response?
#city
@@city
%city%
$city

6. What are the types of entities in Dialogflow ES?

Dialogflow ES has three kinds of entity types: system, developer and session.

Type Defined by Scope Example
System Google All agents @sys.date, @sys.email
Developer You, in console or API Whole agent @plan with Basic, Pro
Session You, via API at runtime One session only A user's saved addresses

Developer entities come in three forms: map (reference value plus synonyms), list (values with no reference value) and composite. A regexp entity is also available for pattern-based values like order IDs.

Take quiz
Which entity type exists only for the length of one session?
System entity
Developer entity
Session entity
Composite entity
Who defines the @sys.date entity?
Google
The agent developer
The end user
The webhook

7. What is a context in Dialogflow ES?

A context is a named piece of conversation state that Dialogflow attaches to a session. It lets the agent remember what was just discussed, so short replies like yes or the second one are understood.

Intents use contexts two ways. An input context limits an intent so it can only match while that context is active. An output context is activated when the intent matches, and it can carry parameter values forward.

Every context has a lifespan, counted in requests and in time, after which it expires. Names are lowercase, and full names follow projects/<id>/agent/sessions/<session>/contexts/<name>.

Take quiz
What does an input context do for an intent?
Sends the intent to the webhook
Deletes earlier training phrases
Switches the agent language
Restricts matching to when the context is active
What controls how long a context stays active?
Its entity type
Its lifespan
Its intent priority
Its response variation

8. What is the purpose of fulfillment in Dialogflow ES?

Fulfillment lets your agent do real work instead of returning only canned text. When an intent has webhook calls enabled, Dialogflow sends the matched intent and parameters to your service and uses the response it gets back.

Typical jobs are looking up an order, writing a booking to a database, calling a payment API or building a response that depends on the user's data.

There are two ways to host the logic: your own HTTPS webhook, or the console's inline editor, which deploys a Node.js Cloud Function for you. Enable fulfillment per intent with the Enable webhook call for this intent switch.

Take quiz
When does Dialogflow call your fulfillment webhook?
When the matched intent has webhook calls enabled
On every character the user types
Only at agent creation
Only when a context expires
Which console switch makes an intent call fulfillment?
Enable fuzzy matching
Set input context
Enable webhook call for this intent
Mark parameter as list

9. What is the Default Fallback Intent?

The Default Fallback Intent is the catch-all that fires when no other intent matches the user's input above the classification threshold. It is created automatically with every new agent and uses the built-in FALLBACK event.

Its responses are usually phrases like Sorry, I didn't get that. You should rewrite them to guide the user, for example by listing what the bot can do, and you can add several variations so replies do not feel repetitive.

Reviewing the fallback hits in the Training and History views is a quick way to find missing intents or missing training phrases.

Take quiz
When does the Default Fallback Intent trigger?
Whenever a webhook is enabled
When no intent matches above the threshold
When the user says hello
When an entity is annotated
Why review fallback hits regularly?
They reduce billing
They increase the context lifespan
They create session entities
They reveal missing intents or training phrases

10. What is the Default Welcome Intent?

The Default Welcome Intent greets the user at the start of a conversation. It includes greeting training phrases such as hi and hello and is tied to the WELCOME event.

Many integrations send the WELCOME event automatically when a chat opens, so the bot can speak first without waiting for text. Use the intent to introduce the bot and suggest next steps, ideally with quick replies.

Edit the default replies to match your brand, since they are generic by design.

Take quiz
Which event is linked to the Default Welcome Intent?
FALLBACK
START_SESSION
WELCOME
GREETING_DONE
What is a sensible use of the welcome response?
Introduce the bot and suggest what it can do
Clear all contexts
Delete the session entities
Reload the agent ZIP

11. What are parameters in Dialogflow ES intents?

Parameters are the named values Dialogflow extracts from a user query. Each one has a name, an entity type, a value, and optionally a default value, a prompt list and an is list flag.

If a user says Book a table for 4 tomorrow, the intent could return number = 4 and date = 2026-10-30. You can reuse them in responses with $name, read them from a context with #context.name, or read them in your webhook from queryResult.parameters.

Marking a parameter required turns on slot filling, so Dialogflow keeps asking until it has a value.

Take quiz
How does a webhook read parameter values?
From the agent ZIP
From the context lifespan
From the intent priority
From queryResult.parameters
What happens when a parameter is marked required?
The intent is disabled
Dialogflow prompts the user until it gets a value
The webhook is skipped forever
The parameter becomes a context

12. What are follow-up intents in Dialogflow ES?

A follow-up intent is a child intent that only matches right after its parent. Dialogflow wires them together automatically: the parent gets an output context named like parentname-followup, and the child gets the same name as an input context.

Predefined follow-ups cover common short answers, including yes, no, later, cancel, more, next, previous, repeat and select.number, plus a custom type you define yourself.

They are quick for simple confirmations. For longer, branching conversations, manually managed contexts give more control.

Take quiz
Which context name does Dialogflow add to a parent for its follow-up intents?
parentname-followup
followup-parent-random
parentname-end
global-session
Which is a predefined follow-up type?
maybe-later-3
greet
yes
payload

13. What is the difference between Dialogflow ES Trial and Essentials editions?

Both editions run the same ES agent. The difference is billing, quotas and support.

Aspect Trial Essentials
Cost Free Pay-as-you-go per request
Quotas Low, intended for evaluation Higher, and increases can be requested
Intended use Learning and prototypes Production agents
Support Limited Google Cloud support plans apply

To raise quotas on an ES agent you must first upgrade it to Essentials, as Google's quota documentation states. Agents are upgraded in the agent settings, and billing must be enabled on the project.

Take quiz
What must you do before requesting a quota increase on an ES agent?
Delete all fallback intents
Upgrade the agent to the Essentials edition
Move it to CX automatically
Disable contexts
Which edition is meant for production traffic?
Trial
Neither, both are test only
Only the CX edition
Essentials

14. What is an event in Dialogflow ES?

An event is a non-text trigger that can match an intent. Instead of a user phrase, you pass an event name (and optional parameters) in the detect-intent request or from a webhook, and Dialogflow runs the intent that lists that event.

Built-in examples are WELCOME and FALLBACK. Custom events let you start a conversation from outside, such as a button click, or have a webhook jump to another intent through followupEventInput.

An intent can list both training phrases and events, so it can be reached either way.

Take quiz
How can a webhook move the conversation to another intent by event?
By editing the agent ZIP
By changing the session ID
By returning followupEventInput
By deleting the context
Which input replaces text when triggering an intent by event?
An event name with optional parameters
An audio config only
A system entity
A regexp

15. What are the response types in Dialogflow ES?

Intents can return plain text and richer message types. The common ones are:

  • Text response - one or more variations, one chosen at random
  • Image
  • Card - title, subtitle, image and buttons
  • Quick replies - tappable suggestion chips
  • Custom payload - free-form JSON your client or integration interprets

Responses can be set for a specific platform, such as Slack or Dialogflow Messenger, with a Default tab for everything else. If no platform-specific message exists, Dialogflow falls back to the default one.

Rich message support differs by integration, so always test on the real channel.

Take quiz
What is a custom payload used for?
Training the ML model
Defining a system entity
Setting the context lifespan
Sending free-form JSON to the client or integration
What happens when a platform tab has no message for the active integration?
The conversation ends
The Default tab response is used
A fallback intent is forced
The webhook is disabled

16. What are the integrations supported by Dialogflow ES?

Dialogflow ES offers built-in connectors so you do not write channel code yourself. Common ones include:

  • Dialogflow Messenger - an embeddable web chat widget
  • Telephony - phone gateway for voice calls
  • Slack, Telegram, Twilio, Facebook Messenger and other messaging platforms
  • Web demo - a quick shareable test page

Anything not covered can use the detect-intent API directly from your own backend or app. Note that conversational Actions for Google Assistant were discontinued in 2023, so new designs should not depend on them.

Rich responses differ per integration, which is why platform-specific message tabs exist.

Take quiz
Which option embeds a ready-made chat widget on a website?
Dialogflow Messenger
Telephony gateway
Session entities
Composite entities
What can you use for a channel with no built-in integration?
The Default Fallback Intent
A system entity
The detect-intent API from your own backend
An output context

17. How do you create a Dialogflow ES agent?

Open the Dialogflow ES console, choose or create a Google Cloud project, and create the agent. Then build it up in this order:

  1. Pick a name, default language and time zone, then click Create.
  2. Add intents with at least 10-20 training phrases each.
  3. Annotate entities and mark required parameters if you need slot filling.
  4. Add responses, or enable fulfillment for dynamic ones.
  5. Test in Try it now, then connect an integration or call the API.

Keep in mind that the default language cannot be casually changed later, so choose it before adding content. A new agent already contains the Default Welcome and Default Fallback intents.

Take quiz
Which two intents exist in every new agent?
Default Cancel and Default Retry
Default Welcome and Default Fallback
Default Payment and Default Login
Default Context and Default Entity
What should you add first after creating the agent?
Session entities
Version snapshots
Quota increases
Intents with training phrases

18. What is the purpose of the Dialogflow ES inline editor?

The inline editor lets you write fulfillment code directly in the console, with no separate server. When you click Deploy, Dialogflow publishes it as a Cloud Function and wires the webhook URL for you.

It has an index.js using Node.js and a package.json for dependencies. Handlers are mapped to intent names, which is convenient for prototypes and small bots.

const intentMap = new Map();
intentMap.set('Order Status', orderStatusHandler);
agent.handleRequest(intentMap);

For production you will often outgrow it, since you cannot easily use CI/CD, tests or other runtimes. In that case host your own webhook.

Take quiz
What does the inline editor deploy your code as?
A GKE cluster
A BigQuery routine
A Cloud Function
A Pub/Sub topic
Which runtime does the inline editor use?
Node.js
Go only
COBOL
Swift only

19. What is a session in Dialogflow ES?

A session is one conversation between an end user and your agent. You identify it with a session ID that your client generates and sends with every detect-intent request. It can be up to 36 bytes long.

Contexts, session entities and parameters belong to a session. Reusing the same ID continues the conversation, while a new ID begins a fresh one with no memory.

Use a unique ID per user conversation, and avoid using personal data such as an email address as the ID.

Take quiz
What does reusing the same session ID do?
Resets the agent
Switches the language
Disables fulfillment
Continues the same conversation state
Who generates the session ID?
Google's NLU model only
The client application
The Default Welcome Intent
The entity type

20. What are knowledge connectors in Dialogflow ES?

Knowledge connectors let an agent answer from documents instead of hand-built intents. You attach a knowledge base of FAQ pairs or articles, from sources like CSV, HTML or URLs, and Dialogflow finds the best passage for a query.

They are useful for large FAQ content that would take hundreds of intents to model. Enable them under the intent or default fallback area and set a confidence threshold so weak matches are ignored.

Answers from a knowledge base are generally less controlled than intent responses, so keep high-value flows such as payments as normal intents.

Take quiz
What is a knowledge connector best suited to?
Answering from large FAQ or article content
Replacing every intent in a transactional bot
Managing webhook auth
Defining regexp entities
What would you tune to ignore weak knowledge answers?
The session ID length
The event name
The confidence threshold
The follow-up context

21. How do you export, import and restore a Dialogflow ES agent?

All three live under Settings > Export and Import, and each handles the agent as a ZIP file.

Action What it does Effect on existing data
Export as ZIP Downloads the full agent as JSON files None
Restore from ZIP Replaces the agent with the ZIP content Overwrites everything
Import from ZIP Adds intents and entities from the ZIP Same-named items are replaced, others kept

Use export for backups and for promoting changes between projects, for example from a dev project to a prod project. The ZIP is also easy to keep in Git for review.

Take quiz
Which action overwrites the whole agent with the ZIP contents?
Export as ZIP
Restore from ZIP
Import from ZIP
Reset test session
Which is a good use of export?
Increasing quotas
Defining fallback phrases
Changing the context lifespan
Backups and promoting changes to another project

22. What are regexp entities in Dialogflow ES?

A regexp entity matches values by a regular expression rather than a list of words. It suits formats such as order IDs, ticket numbers or postal codes, where listing every value is impractical.

For example, an @order_id entity could use ORD-[0-9]{6}. Any text in the query matching that pattern is extracted as the entity value. Because an entity defines only the pattern, it does not understand context, so add training phrases that show how the value appears in a sentence.

Use anchors and tight patterns, because loose expressions match unintended text.

Take quiz
When is a regexp entity a better fit than a list entity?
For three fixed sizes
For yes and no replies
For pattern-based values such as order IDs
For session ID storage
Which pattern fits ORD- followed by six digits?
ORD-[0-9]{6}
ORD-*
[a-z]{6}
ORD+digits

23. How does Dialogflow ES match a user query to an intent?

Dialogflow first narrows the candidates, then scores them. Intents whose input contexts are not active are filtered out. The remaining intents are scored against the query using the ML model and, in hybrid mode, rule-based matching on training phrases.

The best-scoring intent wins only if its confidence reaches the agent's classification threshold. Otherwise the Default Fallback Intent is used. Event inputs skip this scoring and go straight to the intent that lists the event.

flowchart TD
  A["User query and session"] --> B["Filter intents by active input contexts"]
  B --> C["Score with ML and rule-based matching"]
  C --> D{Confidence above threshold?}
  D -- Yes --> E["Matched intent and parameters"]
  D -- No --> F["Default Fallback Intent"]
  E --> G{Webhook enabled?}
  G -- Yes --> H["Call webhook"]
  G -- No --> I["Static response"]

Once an intent matches, parameters are extracted from the annotated entities and the response, or webhook, is run.

Take quiz
What is the first thing that removes an intent from consideration for a query?
Having more than 10 training phrases
Having a static response
Using a system entity
Its input context is not active
What runs if the best confidence is below the threshold?
The Default Welcome Intent
The Default Fallback Intent
The previous intent again
The webhook with an empty request

24. What is the ML classification threshold in Dialogflow ES?

The ML classification threshold is the minimum confidence score, between 0 and 1, an intent must reach to count as a match. The default is 0.3, and you change it in Settings > ML Settings.

Raising it makes the agent stricter: fewer wrong matches, but more fallbacks on valid phrasing. Lowering it makes the agent more forgiving but increases the risk of the bot answering the wrong intent.

The score of the matched intent is returned as intentDetectionConfidence, so you can log it and tune the threshold using real traffic instead of guessing.

Take quiz
What is the default ML classification threshold?
0.3
0.9
0.0
1.0
What is a side effect of raising the threshold a lot?
More contexts are created
Webhook calls get faster
More valid queries land on the fallback intent
Entities stop working

25. What is the difference between hybrid and ML-only match modes in Dialogflow ES?

Hybrid mode combines rule-based grammar matching with the ML model. If a query closely matches a training phrase, the rule-based path can match it even when the ML score is low. It works well for new or small agents with few examples.

ML Only relies entirely on the ML model, which generalizes better across phrasings once an agent has many training phrases and intents.

Aspect Hybrid ML Only
Matching Rules plus ML ML model only
Best for Small agents, few examples Larger agents with many examples
Behaviour Close textual matches are favoured Semantic similarity decides

You switch modes in Settings > ML Settings. Retest your key utterances after switching.

Take quiz
Which mode suits a small agent with few training phrases?
ML Only
Hybrid
Neither, both need 1000 phrases
Event-only
Where do you change the match mode?
Integrations > Slack
Entities tab
Fulfillment inline editor
Settings > ML Settings

26. How do input and output contexts work together in Dialogflow ES?

An intent's output context switches on a context after the intent matches. Another intent's input context requires that context to be active before it can match. Chained together they build a multi-turn conversation.

Example flow: order.pizza sets the output context awaiting-size. Only the intent order.pizza.size, which lists awaiting-size as input, can match the next reply of large. Without that guard, a bare large would hit the fallback.

If an intent lists several input contexts, all of them must be active. Parameters from an output context can be read later with #awaiting-size.pizza.

Take quiz
If an intent lists two input contexts, when can it match?
When either context is active
Only when none is active
Only when both contexts are active
Always, contexts are advisory
How do you read a parameter stored in the awaiting-size context?
#awaiting-size.parameterName
$awaiting-size@parameterName
@awaiting-size/parameterName
context(awaiting-size).parameterName only in code

27. What is the default context lifespan, and how do you change it?

A new output context in the console starts with a lifespan of 5 requests. It expires after 5 further queries, and it also expires after 20 minutes without a matching query, whichever comes first.

Change it in the intent's output context by editing the number next to the context name. A lifespan of 0 removes the context straight away. From a webhook, set lifespanCount on the context in the response.

"outputContexts": [{
  "name": "projects/p1/agent/sessions/s1/contexts/awaiting-size",
  "lifespanCount": 2,
  "parameters": {"pizza": "margherita"}
}]

Keep lifespans short. Long-lived contexts can leave the user stuck in a branch after they change topic.

Take quiz
What value for lifespanCount removes a context immediately?
1
5
20
0
Why avoid very long context lifespans?
They raise the billing tier
Users can stay trapped in an old branch after changing topic
They disable the fallback
They delete training phrases

28. How does slot filling work in Dialogflow ES?

Slot filling is how an intent collects every value it needs before responding. Mark a parameter as Required, add one or more prompts, and Dialogflow keeps asking until the slot has a value.

  1. The user says Book a table, and the intent matches.
  2. A required date is missing, so Dialogflow replies with the prompt What day?
  3. The user answers tomorrow, and the entity fills the slot.
  4. Once all required slots are filled, the response or webhook runs.

If the user supplies several values in one sentence, those slots are filled together. In the webhook request, allRequiredParamsPresent tells you whether collection is finished. You can also enable webhook call for slot filling to validate values on every turn.

Take quiz
Which webhook field tells you all required slots are filled?
allRequiredParamsPresent
slotsComplete
fillStatus
requiredDone
What does Dialogflow do when a required parameter is missing?
Ends the session
Calls the fallback intent at once
Replies with a prompt and waits for the value
Fills it with zero

29. How does a Dialogflow ES webhook receive and return data?

Dialogflow sends an HTTPS POST with a JSON WebhookRequest. The useful parts are queryResult.queryText, queryResult.intent.displayName, queryResult.parameters and the outputContexts. Your service replies with a WebhookResponse such as fulfillmentText, fulfillmentMessages, outputContexts, payload or followupEventInput.

sequenceDiagram
  participant U as User
  participant D as Dialogflow
  participant W as Webhook
  U->>D: Utterance
  D->>D: Match intent and extract parameters
  D->>W: POST WebhookRequest
  W-->>D: WebhookResponse JSON
  D-->>U: Reply
app.post('/webhook', (req, res) => {
  const qr = req.body.queryResult;
  const city = qr.parameters['geo-city'];
  res.json({ fulfillmentText: `Weather lookup for ${city}` });
});

The endpoint must be HTTPS and respond within about 5 seconds.

Take quiz
Which HTTP method does Dialogflow use to call your webhook?
GET
POST
PUT with a file upload
DELETE
Which response field can send the conversation to another intent by event?
fulfillmentText
source
intentList
followupEventInput

30. What happens when a Dialogflow ES webhook call fails or times out?

If the webhook times out, returns a non-success HTTP status, or sends invalid JSON, Dialogflow does not crash the conversation. It uses the static response defined on the intent when there is one. If none exists, the user gets no useful reply.

The error details appear in the webhookStatus field of the detect-intent response and in Diagnostic info in the console. The deadline is about 5 seconds, so slow lookups are the most common cause.

So always give every webhook-enabled intent a friendly static fallback such as I'm having trouble checking that right now. It acts as a safety net during outages.

Take quiz
Which response does Dialogflow use when the webhook fails?
The Default Welcome response
A random entity value
The intent's static response, if defined
It retries forever
Where can you see the webhook error details?
webhookStatus in the response
The entity list
The ZIP export
The intent priority

31. How do you call the Dialogflow ES detectIntent API?

Create a SessionsClient, build a session path from your project ID and a session ID, wrap the text and language in a QueryInput, and call detect_intent. The caller needs a service account with the Dialogflow API Client role.

from google.cloud import dialogflow

client = dialogflow.SessionsClient()
session = client.session_path(project_id, session_id)
text = dialogflow.TextInput(text="Where is my order?", language_code="en-US")
query = dialogflow.QueryInput(text=text)
resp = client.detect_intent(request={"session": session, "query_input": query})
print(resp.query_result.fulfillment_text)

Reuse the same session ID for each turn of one conversation. To target a specific environment, include it in the session path.

Take quiz
Which object holds the user text and language code for detect_intent?
WebhookRequest
SessionEntityType
OutputContext
QueryInput with TextInput
Which role does the calling service account need?
Storage Object Viewer
Dialogflow API Client
Billing Account Creator
Compute Admin

32. What is the difference between Dialogflow ES and Dialogflow CX?

ES models a bot as a set of intents linked by contexts. CX models it as a visual state machine of flows and pages. Both understand natural language, but CX scales better when conversations get complicated.

Aspect Dialogflow ES Dialogflow CX
Conversation model Intents plus contexts Flows, pages and routes
Builder Form-based console Visual graph builder
Multi-turn control Context names you manage Page state handled for you
Best for Simple to medium bots Large, multi-team agents
Versioning Agent versions and environments Flow-level versions and environments

They are separate products with separate APIs, and an ES agent is not upgraded in place to CX.

Take quiz
How does Dialogflow CX model conversation?
As flows and pages in a state machine
As a flat intent list only
As a single regexp
As a CSV of answers
Can an ES agent be upgraded in place to CX with one click?
Yes, always
Only in the Trial edition
No, they are separate products
Only with a webhook

33. When would you choose Dialogflow CX over Dialogflow ES?

Choose CX when the conversation is long, branches a lot, or is built by several people. Those are the situations where ES agents turn into a tangle of contexts and follow-up intents.

  • Many pages of data collection, like claims or onboarding
  • Multiple teams editing different flows
  • A need to visualize and review the conversation path
  • Large agents with many intents

Choose ES for a straightforward FAQ or a handful of transactional intents, where a form-based console is quick and enough. ES is also the practical choice when an existing agent works and the team has no reason to rebuild it.

Moving later takes planning, so decide early based on expected complexity.

Take quiz
Which situation favours CX?
A five-intent FAQ bot
A long, branching process built by several teams
A single greeting bot
A bot with no webhook
Why can large ES agents become hard to manage?
They cannot use entities
They cannot be exported
They lose the fallback intent
State is tracked through many context names and follow-ups

34. How do session entities work in Dialogflow ES?

Session entities are entity types created through the API for one session only. They let you customize entity values per user at runtime, such as a user's contacts, saved addresses or playlists.

You create one with the same name as an existing developer entity and choose an entityOverrideMode. OVERRIDE replaces the developer entries for that session, and SUPPLEMENT adds to them.

POST .../sessions/SESSION_ID/entityTypes
{
  "name": ".../entityTypes/contact",
  "entityOverrideMode": "ENTITY_OVERRIDE_MODE_SUPPLEMENT",
  "entities": [{"value": "Priya", "synonyms": ["Priya", "my sister"]}]
}

They disappear when the session ends, so nothing leaks to other users.

Take quiz
What does ENTITY_OVERRIDE_MODE_SUPPLEMENT do?
Deletes the developer entity
Locks the session
Adds the session entries to the developer entity
Ends all contexts
Why are session entities good for per-user data like contacts?
They exist only for that session
They are shared across all users
They need no API call
They replace intents

35. How do you pass custom data to and from a Dialogflow ES webhook?

There are three directions to remember.

  • Client to webhook: set queryParams.payload in the detect-intent request. It arrives in the webhook at originalDetectIntentRequest.payload.
  • Integration to webhook: channels such as Slack put their own user and channel details in the same originalDetectIntentRequest field.
  • Webhook to client: return a payload object, or a custom payload message, which your app reads from the response.

Use this for values such as a user ID, app version or auth token that should not be spoken by the user. Do not place secrets in a place that is logged without masking.

Contexts are the right tool when the data must persist across turns, because payload applies only to a single request.

Take quiz
Where does queryParams.payload appear in the webhook request?
queryResult.intent.name
outputContexts[0].name
responseId
originalDetectIntentRequest.payload
Which mechanism keeps data across several turns instead of one request?
Payload
Contexts
followupEventInput
The source field

36. Why do similar training phrases cause intent conflicts in Dialogflow ES?

When two intents contain near-identical phrases, the ML model cannot separate them. Queries then flip between the two intents or land on the wrong one with a low confidence score.

This usually happens with short generic phrases such as cancel or help placed in several intents, or with an intent that was split too finely.

  1. Open the Validation tab to see which phrases overlap.
  2. Remove or reword the duplicates so each intent has distinct examples.
  3. Merge intents that differ only by a value and use an entity parameter instead.
  4. Use input contexts so only one of the similar intents is eligible at a time.

After a fix, retest with the actual phrases that failed.

Take quiz
Which console area helps you find overlapping training phrases?
Validation
Integrations
Versions
Small Talk
What is a better design for two intents that differ only by a value?
Two intents with identical phrases
Two agents
One intent with an entity parameter
Two webhooks

37. How do intent priorities work in Dialogflow ES?

Each intent has a priority level shown by a colored dot: Highest, High, Normal (default), Low and Ignore. When several intents could match, Dialogflow can prefer the higher-priority one.

The Ignore level removes the intent from matching entirely. It is handy for retiring an intent without deleting it.

Treat priority as a tie-breaker. Using it to hide poor training data tends to cause new problems elsewhere, so fix the phrases or contexts first. Typical good uses are making a short high-value intent like cancel order win over a broader one, or lowering a very general intent.

Take quiz
Which priority level excludes an intent from matching?
Highest
Ignore
Normal
Low
What is the best way to view priority?
A replacement for contexts
A billing control
A language setting
A tie-breaker, not a fix for bad training data

38. How do versions and environments work in Dialogflow ES?

The draft agent is what you edit. Publishing takes a snapshot of it, called a version, that never changes. An environment points to a version, so you can run a stable one while continuing to edit the draft.

Item Purpose
Draft Working copy you edit and test in the console
Version Immutable snapshot created when you publish
Environment Named deployment (for example dev, staging, prod) mapped to a version

Each environment can have its own fulfillment and integration settings. Clients target one by including it in the session path, such as projects/p/agent/environments/prod/sessions/s. Roll back by pointing the environment to an older version.

Take quiz
What does publishing create?
A new Google Cloud project
A new language
An immutable version
A new intent
How do you roll back a production environment?
Point it to an earlier version
Delete the draft
Reset the session ID
Lower the threshold

39. How do you secure a Dialogflow ES webhook?

Start with the basics: the webhook must be served over HTTPS, and it should reject any request that cannot prove it came from your agent.

  • Add basic auth or custom headers in Fulfillment settings, and check them on every request.
  • For Cloud Functions or Cloud Run services that require authentication, grant the Dialogflow service agent permission to invoke them.
  • Validate and sanitize parameter values before using them in queries.
  • Avoid logging personal data, or mask it first.
  • Give the service account only the roles it needs.

Dialogflow's authentication options change, so confirm the current ones in the Fulfillment documentation before relying on a specific setup.

Take quiz
What must a Dialogflow ES webhook URL use?
FTP
Plain HTTP only
WebSocket only
HTTPS
What should you check on each request in the webhook?
The agent's ZIP size
The configured basic auth or custom header
The context lifespan
The entity override mode

40. How do you troubleshoot an intent that is not matching in Dialogflow ES?

Work from the evidence in the console before changing anything.

  1. Run the phrase in Try it now and open Diagnostic info to see the matched intent and confidence.
  2. Check active contexts. An intent with an input context cannot match unless that context is live.
  3. Compare against the ML threshold. A score just under it means more or better training phrases are needed.
  4. Open Validation to find overlapping phrases in other intents.
  5. Confirm the language and match mode, and that training has finished.
  6. Check History and Training for similar real queries.

Fix one cause at a time and retest the same phrase so you know which change helped.

Take quiz
What blocks an intent that has an input context from matching?
That context not being active
Having a webhook
Having a card response
Using @sys.number
Where can you view the confidence for a test query?
Entities tab
Export settings
Diagnostic info in Try it now
Environment list

41. How do you troubleshoot Dialogflow ES webhook issues?

First check Diagnostic info. It shows the request Dialogflow sent, the response it got, and any webhookStatus error.

  • Timeout: the service took longer than about 5 seconds.
  • Auth or HTTPS error: bad certificate, wrong credentials or blocked URL.
  • Bad response: invalid JSON, wrong field names or a non-200 status.
  • Logic bug: wrong handler for the intent name.

Enable Log interactions to Google Cloud in settings and read the Cloud Logging entries for both Dialogflow and your function. To debug locally, copy the request JSON from Diagnostic info and replay it with curl, or expose a local server through a tunnel for live testing.

Take quiz
Which field in the response shows webhook errors?
entityStatus
webhookStatus
contextState
mlScore
What is a good way to reproduce a webhook bug locally?
Reimport the agent ZIP
Lower the lifespan to 0
Switch to ML Only
Replay the request JSON from Diagnostic info with curl

42. How can you reduce Dialogflow ES webhook latency?

The webhook sits in the middle of every reply, so every slow call is heard by the user. The main levers are:

  • Keep a minimum number of instances warm in Cloud Functions or Cloud Run to avoid cold starts.
  • Host the service in the same region as the agent.
  • Cache lookups that rarely change.
  • Run independent API calls in parallel instead of in sequence.
  • Enable the webhook only on the intents that need it.
  • Reply quickly and finish slow work asynchronously.

Remember the roughly 5 second deadline. A webhook that regularly takes 3 to 4 seconds will fail under load, so measure the slowest path and not the average.

Take quiz
What does keeping minimum instances warm help avoid?
Context expiry
Entity conflicts
Cold starts
Threshold changes
Which metric matters most for the webhook deadline?
The slowest path, not the average
Number of intents
Size of the agent ZIP
Number of languages

43. How do you build a multilingual agent in Dialogflow ES?

Add each language to the same agent from the Languages tab. Intent names, parameters and contexts are shared, and each language gets its own training phrases, responses and entity synonyms.

In the detect-intent request, send the matching languageCode, for example es or de. Your webhook sees the same intent names and can read queryResult.languageCode if replies must differ by language.

Dialogflow does not translate content for you. Write real examples in every language, because direct translations of English phrases often miss how people actually talk. Check that each language has a response for every intent, or users get blanks.

Take quiz
What is language specific in a multilingual ES agent?
The intent name
The session ID
The project ID
Training phrases, responses and entity synonyms
What must the client send so the right language is used?
A different agent ZIP
A matching languageCode
A new webhook URL
A lifespan of 0

44. How does Dialogflow ES handle voice input?

Dialogflow can take audio directly. In detectIntent you pass input_audio with an InputAudioConfig giving the encoding, sample rate and language. For live conversations, StreamingDetectIntent streams audio and returns interim text as the user speaks.

Dialogflow transcribes the audio and then matches the transcript like any other query. To make recognition better for your domain, use speech adaptation (phrase hints, or the agent's automatic adaptation from training phrases).

For spoken replies, add an OutputAudioConfig so the answer comes back as synthesized audio. The Telephony integration wraps all of this for phone calls.

Take quiz
Which API call streams audio in real time?
StreamingDetectIntent
ExportAgent
CreateEntityType
ListEnvironments
What improves recognition of domain-specific words?
Higher context lifespan
More environments
Speech adaptation
ML Only mode

45. How do you handle Dialogflow ES quota limits?

Quotas depend on the edition and on the request type. Text, audio and other session calls such as getting or setting contexts are counted separately. Check current values on the Dialogflow Quotas page in the Cloud console.

  1. Upgrade the agent to the Essentials edition, which is required before you can request an increase.
  2. Request more quota for the right metric if you expect real traffic.
  3. Spread load across several projects where it makes sense.
  4. Retry 429 RESOURCE_EXHAUSTED errors with exponential backoff.
  5. Cut unnecessary calls, for example by not calling detectIntent for every keystroke.

Load-test before a launch, because quota increases are not instant.

Take quiz
What must you do before requesting an ES quota increase?
Delete the fallback intent
Upgrade to Essentials edition
Enable ML Only
Add a language
How should a client react to a 429 RESOURCE_EXHAUSTED error?
Retry in a tight loop
Delete the session
Ignore it permanently
Retry with exponential backoff

46. How do synonyms, automated expansion and fuzzy matching affect entity matching?

These are three separate options on a developer entity type and each solves a different problem.

Option What it does Example
Synonyms Several phrases map to one reference value NYC, big apple map to New York
Automated expansion Recognizes values not in the list when context suggests they fit Detects a new pizza topping nobody listed
Fuzzy matching Tolerates typos and slight variations margarita accepted for margherita

Turn on Define synonyms for map entities. Use automated expansion for open-ended categories but not for strict ones like plan codes, where an unknown value must be rejected. Fuzzy matching helps with typed chat but can match too loosely for short values.

Take quiz
Which option lets one reference value cover several phrases?
Fuzzy matching
Session override
Synonyms
Event triggers
Why avoid automated expansion for strict plan codes?
Unknown values might be accepted instead of rejected
It deletes the entity
It blocks webhooks
It changes the language

47. Why use custom contexts instead of follow-up intents in Dialogflow ES?

Follow-up intents are a shortcut: they are bound to one parent and sit in a fixed tree. Custom contexts give you control over that structure.

  • One child intent can be reached from several parents, by listing the same input context.
  • You decide the lifespan of each step.
  • Parameters can be carried forward through the context.
  • Users can wander off-topic and come back, since state is not tied to a single branch.

Follow-up intents are still fine for a simple yes/no confirmation after one question. As flows grow, the number of auto-generated child intents becomes hard to maintain, and custom contexts keep the agent smaller.

Take quiz
What can a custom context do that a follow-up intent cannot easily do?
Create a webhook
Delete training phrases
Change the project ID
Let one child intent be reached from several parents
When is a follow-up intent still reasonable?
A 20-step claims flow
A simple yes or no after one question
A multi-team agent
A multilingual billing system

48. How do you test and validate a Dialogflow ES agent before release?

Use several layers of checking together.

  • Validation tab: shows errors and warnings such as overlapping phrases or missing responses.
  • Try it now: manual checks with Diagnostic info for confidence and contexts.
  • Regression script: loop over a list of utterances and expected intents through the detect-intent API, then fail if any result changes.
  • Environment test: run the same suite against staging before promoting the version.
  • Unseen phrasing: test wording that is not in the training set.

Keep the test list in version control and add a case for every bug fixed. Track confidence as well as intent name, because a match that drops close to the threshold is an early warning.

Take quiz
What should a regression script compare?
Expected intent and confidence for each utterance
Only the agent's ZIP size
Only the session ID
Only the language code
Why test phrasing that is not in the training set?
It resets contexts
It raises quota
It shows how well the model generalizes
It creates versions

49. How do you reset or delete a context from a Dialogflow ES webhook?

Return the same context in outputContexts with lifespanCount set to 0. Dialogflow removes it as soon as the response is processed.

{
  "fulfillmentText": "Order cancelled.",
  "outputContexts": [{
    "name": "projects/p1/agent/sessions/s1/contexts/awaiting-size",
    "lifespanCount": 0
  }]
}

From the API you can use the context delete method for one context, or delete all contexts of a session. A client can also send resetContexts: true in queryParams of a detect-intent request to start the turn clean.

Resetting is useful after a flow finishes or is cancelled, so old state does not affect the next conversation.

Take quiz
What lifespanCount removes a context from a webhook response?
-1
0
100
null string
Which queryParams flag clears contexts for a turn?
dropSession
clearIntent
wipeEntities
resetContexts

50. How do you enable sentiment analysis in Dialogflow ES?

Turn it on in the agent settings, or per request with queryParams.sentimentAnalysisRequestConfig.analyzeQueryTextSentiment = true. The response then includes sentimentAnalysisResult.queryTextSentiment.

It has two numbers. Score runs from -1.0 (negative) to +1.0 (positive). Magnitude is zero or higher and shows how strong the emotion is overall, regardless of direction.

A practical use is escalation: if the score stays strongly negative over a couple of turns, hand the chat to a human agent or switch to an apology intent. Do not treat a single score as proof of mood, since short messages are noisy.

Take quiz
What range does the sentiment score cover?
0 to 100
1 to 5
-1.0 to +1.0
0 to 1 only
A good use of a strongly negative sentiment score is to:
Escalate the conversation to a human agent
Delete the session entity
Raise the ML threshold
Add a new language
«
»

Comments & Discussions