Skip to main content
The Entity Node extracts specific data from user utterances to fulfill intents in a dialog task. For every critical data point you need from a user, create a corresponding entity node with a prompt. Example: For the utterance “Book me a flight from LA to NYC on Sunday”, the agent needs to extract source_city (LA), destination_city (NYC), and departure_date (Sunday) — each via a separate entity node. The platform supports ~30 entity types (Address, Airport, Date, Currency, and more), custom regex patterns, and PII masking at the node level.
Chain multiple entity nodes to collect a series of inputs (username, location, amount, due date). Follow them with a Webhook node to process an API request.

Add the Node

  1. Open the dialog task.
  2. Add the Entity node. See Add a Node.
  3. The Entity window opens with Component Properties selected by default.
Multilingual agents: Adding a new entity applies it across all languages (shared flow definition). Language-specific properties — prompts, error messages, synonym lists — require separate values per language.

Configure the Node

Component Properties

Changes here apply across all dialog tasks that use this node.
  1. Enter a Name and Display Name. Entity names can’t include spaces.
  2. Select an Entity Type from the dropdown. See Entity Types.
  3. If the type supports it, enable Multi-item to allow multiple values separated by commas, semicolons, or “and”.
  4. Under User Prompt, enter the prompt shown to the user (for example, Enter the Departure Date).
    • Click Manage for channel-specific prompts. See Prompt Editor.
    • Click Settings > enable Override for this instance to set an instance-specific prompt. Disabling the toggle deletes the override and restores the component-level prompt.
  5. Under Error Prompts, review and modify default error messages.
    • Click Manage to edit. See User Prompts.
    • Enable Override for this instance for instance-specific error messages.
    • Enable Present Prompts in the Order of Retries to reorder error messages using drag handles.
  6. Toggle Rephrase Responses to rewrite agent replies using AI based on conversation context and user emotion. See GenAI Features.
  7. Skips intent detection when the user input contains a valid entity value and the node uses Intent-over-Entity precedence. When enabled, the platform first attempts entity extraction using the configured extractor; if extraction succeeds, intent detection is bypassed, and the dialog continues directly — reducing latency and LLM token usage. Disabled by default.
  8. Under Redaction of PII Data, set how PII entity values appear in prompts and messages at runtime:
    • De-identify PII data — shows the redacted value.
    • Use the original value — shows the actual value (useful for user confirmation).
    These options affect only runtime display. PII data is always redacted in chat history and internal logs, regardless of this setting.
  9. Enable Sensitive Entity to mask, redact, or replace sensitive input at the node level. Disabled by default. When enabled:
    • Check Transient Entity to clear the data on session close. Chat history shows data_purge instead of the value.
    • Click +Add Pattern to add a regex for identifying sensitive data (for example, [a-zA-Z]{3}[-]\d{4}).
    • Select how to display sensitive data to unauthorized users:
      • Redaction — replace with a unique random alphanumeric value.
      • Replacement — replace with a static value you define.
      • Mask with character — mask leading and trailing characters with + or #.
    See Redacting PII Data.
  10. Under Variable Namespaces, associate namespaces to scope this node’s execution. Visible only when Variable Namespace is enabled for the agent. See Managing Namespace.

Instance Properties

Settings here apply only to this dialog task instance — not to other tasks using this node.

User Input

Mandatory-only settings:

User Input Correction (v7.3, String entities only)

Entity Extraction

  • Don’t reuse: Prevents this entity’s input from being reused to extract other entities.
  • Entity Rules: Configure JSON-based validation rules. Click Add Rules and enter JSON. See Entity Rules.

Advanced Controls

User Input Flow

At each entity prompt, the platform processes input as follows:
  1. Valid value → entity populated; dialog continues.
  2. Ambiguous value → platform shows an ambiguity resolution prompt.
  3. Invalid input at the ambiguity prompt:
    • If valid for the entity type → used as-is; dialog continues.
    • If invalid and triggers an intent/FAQ/small talk → handles per Hold & Resume; entity is re-prompted when dialog resumes.
    • If invalid and no intent triggered → entity left blank; dialog continues from transitions.
  4. Retry limit exceeded → triggers Behavior on Exceeding Retries. For child tasks set to End of Dialog, the parent task also terminates.

NLP Properties

  1. Under Suggested Synonyms, enter synonyms for the entity and press Enter after each. See Managing Synonyms.
  2. Under Suggested Patterns, click + Add Pattern to add extraction patterns. See Managing Patterns.
  3. Under Manage Context > Context Output, define context tags set when this entity is populated.
  4. Enable Auto emits the entity values captured to add entity values to the context object automatically. See Context Management.

IVR Properties

Configure input mode, grammar, prompts, and call behavior for IVR channels. See Configure Dialog Node IVR Properties.

Connection Properties

If this node is last in the sequence, only the connection property is visible.
Define which node executes next using conditions based on entity values or context objects. These conditions are instance-specific and don’t affect other dialog tasks. See Adding IF-Else Conditions to Node Connections. To delete a condition, hover over it and click the bin icon. Deleted conditions can’t be restored. Default connection variants: Deflect to Chat (Return to Flow only): Transitions voice interactions to chat. Types: Automation or Agent Transfer.
Deflect to Chat works only with Voice Gateway channels (Phone number or SIP Transfer).

Entity Types

The entity type tells the NLP interpreter what data to expect from user input, improving recognition accuracy.

Address

Captures US and Germany standard address formats. For other countries, captures strings ending with a recognizable city or country name. Format: Street Name, City (required), Country (required), Zip Code

Airport

Captures airport details via city name, airport name, IATA/ICAO code, or US city abbreviations. Data source: opentraveldata.

Attachment

Captures a file, image, or email attachment up to 25 MB.
Supported channels only: Facebook, Twitter, Web/Mobile, Slack.

City

Captures any city with population > 5,000 as a string. Data source: geonames.org.
City disambiguation isn’t performed. Cities are prioritized by population (for example, Portland OR ranks above Portland ME).

Color

Captures color names from utterances. Returns as a string.

Company

Captures company or organization names. Returns as a string.
Recognizes:
  • A large corpus of known global companies, mapping name variants to a canonical name (for example, Amazon, Amazon.com, Amazon Inc → “amazon”).
  • Any capitalized word followed by a legal suffix: Inc, Incorporated, Corp, Corporation, Group, Ltd, Limited, Co, Company, LP, LLP, LLLP, LLC, PLLC.

Composite

Captures multiple entity values in a single entity. Use when a user utterance contains a combination of related data points. Example: “I want to fly first class from LA to NYC tomorrow” — captures flight class, departure city, destination city, and travel date in one composite entity.

Country

Captures country names from utterances. Returns as JSON.
Avoid special characters (&, ()) in inputs. Use commas or “and” to separate list items.

Currency

Captures amount and currency type from utterances. Returns as JSON.
Recognizes: full names (Dollar, Rupees), symbols ($, £), abbreviations (INR, USD), and slang (Buck, Quid, Loonie, Benjamin).
Currency isn’t disambiguated by prior usage. USD may rank above SGD for “dollar” unless the user explicitly says SGD.

Custom

Validates user input against a regex, concept variable, or content/context/environment variable.
The dialog fails if the expression resolves to null. Use the preConditions entity rule to conditionally skip the node instead.
See Regex Expressions.

Date

Captures a date from utterances. Returns ISO8601 format: YYYY-MM-DD.
Recognizes formatted dates, number-only dates, named months, relative dates (today, in 3 days, last Thanksgiving), and weekdays (next Saturday, first Sunday of next month).

Date Period

Captures a start date and end date. Prompts separately for each missing date.
Date Period supports two separate user and error prompt sets: one for From Date and one for To Date.

Date Time

Captures date and time combined. Returns ISO8601 format: YYYY-MM-DDThh:mm:ss.sTZD.

Description

Captures statements or paragraphs of free text. Returns as a string (supports wildcard characters).
Multi-item isn’t available for Description.

Email

Captures email addresses from utterances. Returns as a string.

List of Items (enumerated)

Displays a defined list of values to the user for selection. Click Customise The List Of Items to configure. Auto-Correction: Accepts closest-match inputs based on a configurable character-similarity threshold. Doesn’t apply to dictionary words or alphanumeric inputs. Context object keys (added post-v7.1):
  • ambiguousEntityValues — array of ambiguous matches (title, value, synonym). Reset on re-prompt.
  • synonymsUsed — synonym used to identify the matched item. Reset on re-prompt.
To show the list of values in the prompt, set Display List of Values to the channel-formatted option. Works with Plain Text prompts only — not JavaScript templates.

List of Items (lookup)

Displays a list defined via static configuration or a remote service call. Click Customise The List Of Items to configure.

Static List

Remote List

Use for large datasets or security-restricted lookups via an external service. Step 1 — Define the service call. The platform populates context.inputData before calling the service:
Step 2 — Map the response. Configure how to read the service response: Step 3 — Runtime flow.
  1. Platform populates context.inputData and calls the service.
  2. One value returned → assigned to entity.
  3. Multiple values returned → platform extracts match from the list. No match → user selects from the list.
  4. Ambiguous values → user selects one.
  5. Multi-item entity → all valid values assigned; invalid values discarded.
  6. Empty or malformed response → falls back to User Prompt.
Context keys added post-v7.1: ambiguousEntityValues, synonymsUsed (same as enumerated).

Location

Captures city or state location with address and coordinates. Returns as JSON.

Number

Captures a numeric value from utterances. Recognizes spelled-out numbers and abbreviations (1M). Consecutive number words are combined (“one two three” → 123).
Maximum 18 digits.

Person Name

Captures a person’s full name. Returns as a string. Platform identifies capitalized words as names, taking up to three consecutive capitalized words.

Percentage

Captures percentage values. Returns as a float in range 0.0-1.0.
Supports: percent, percentage, %.

Phone Number

Captures 3-12 digit phone numbers. Returns as a string. Handles non-standard formats like (407)-407-4077 and 407.407.4077. Supports Arabic phone numbers spelled out in words.

Quantity

Captures amount, unit, and quantity type from utterances.
Select a Unit Type and Default Unit when configuring the entity.

String

Identical to Description but limited to one sentence. No validation is applied unless the entity is trained. Use as a last resort when no other entity type fits.

Time

Captures time from utterances. Returns ISO8601 format: HH:MM:SS.sZD.
Recognizes: am/pm, spelled-out numbers (Six AM), and context phrases (Six in the evening).

Time Zone

Captures a timezone and converts it to GMT offset.
Recognizes standard timezone names (Eastern Standard Time → -6:00).

URL

Captures web URLs from utterances. Returns as a string.

Zip Code

Captures postal/zip codes. Returns as a string. Handles hyphens, spaces, and leading zeros. Doesn’t extract codes from regex-like patterns (for example, #$A1B2%).

Entity Rules

Entity rules add validation and processing hints beyond basic type restrictions. Apply rules in two ways: Via the UI: Go to Instance Properties > Entity Rules and enter JSON in the editor. Via a Script Node (placed before the entity node in the dialog):
For subentity rules in a composite entity:

Generic Rules

Apply to all entity types. preConditions examples:
Extracts entity only if the isCustomerX context tag is set.
Extracts entity only if the word “buy” appears in the utterance. Utterance buy 10 apples10; utterance search for 10 apples → no extraction.

String and Description Rules

letters examples:
Utterance: Kore.ai is the best platform in artificial intelligence of recent times. Extracted: platform, recent, times

Number Rules

digits does not split spoken number groups. For input "two thousand and twenty three", the rule "digits": 4 won’t match. Use individual spoken digit groups like "twenty twenty three" for a 4-digit match.
Examples:
Utterance: OTP is 009944 → Extracted: "009944" (without rule: 9944)
Utterance: CVV is 034 → Extracted: "034"
Utterance: My credit card number is 4012 8888 8888 1881 → Extracted: "4012 8888 8888 1881" (16 digits, within range)

Currency Rules

Examples:
Utterance: Pay 30 → Extracted: NZD30; utterance Pay USD30 → Extracted: USD30
Utterance: Pay USD3000 → Prompts for value (exceeds 3 digits)
Utterance: Pay AUD30 → Prompts for value (AUD not in list)
Utterance: Pay AUD → Error: amount required

Composite Entity Rules (Model Number)

modelNumber is a voice-compatible alternative to custom regex. Regex requires exact character matching, which breaks on ASR transcription variations (for example, “C” → “sea”, or a pause splitting “23” → “20 3”). Using Number and String entity types with the digits and letters rules handles all these variations. Example: Pattern @AccountNumbers @AccountSuffix where:
  • @AccountNumbers: Number entity with "digits": 8
  • @AccountSuffix: String entity with "letters": 2
A modelNumber composite entity is a voice-compatible replacement for a custom regex entity like \d{8}\-?[a-zA-Z]{2}.

Person Name Rules

Examples:
Utterance: schedule Bob's review at 9 am → Extracted: Bob
Utterance: meeting for Bob Review → Extracted: Bob (without rule: Bob Review)
Utterance: schedule a meeting about Philip with Fred → Extracted: Fred (without rule: Philip)

Company Rules

Example:
Utterance: find ATM → Extracted: nothing (without rule: ATM, recognized as an Italian company)

Date Rules

Examples:
Utterance: show schedule for 2019-02-03 → Prompts for value (out of range) Utterance: show schedule for 2020-02-03 → Extracted: 2020-02-03
Utterance: schedule after two days → Extracted: 2020-07-11
Utterance: 03-04-2021 → Extracted: 04-2021

Date Period Rules


Date Time Rules


Time Rules


City Rules

Example:
Utterance: Send destination to my email → Prompts for entity value (without rule: captures “Send” as a city)

Zip Code Rules

Example:
Utterance: check delivery to PO16 7GZ → Extracted: PO16 7GZ

Location Rules


List of Values (LoV) Rules

Examples:
Input options: “ticket”, “tickets”
  • Input I need a ticket → Extracted: ticket
  • Input I need tickets → Error: not a valid option
Input options: “extra large size t-shirt”, “large size t-shirt”, “medium size t-shirt”
  • Input I need extra large size t-shirt → Extracted: extra large size t-shirt (ignores “size” during matching)

List of Items (enum) Rules

Examples: Items: pen, watch, bottle, book, cap
Utterance: first two are mine → Extracted: ["pen", "watch"]
Utterance: first two are mine → Extracted: ["bottle", "book", "cap"]
Utterance: first two are great → Extracted: ["pen", "watch"]
Utterance: a → Prompts for input (without rule: extracts ["pen"])