Entity registration for conversational language understanding integration

This article discusses adding conversational language understanding (CLU) entities to Copilot Studio agents. The entities are composed of the following Boolean, string, and number data types. For more information, see Data types. In most cases, you can use prebuilt entities for your projects. If you would like to use CLU entity types with custom JSON resolutions, the following schema examples are provided as a reference.

To set up your environment for mapping CLU entities to Copilot Studio agents, see Get started with conversational language understanding integration.

The following data types are available for mapping CLU entities:

  • BooleanDatatype: Choice.Boolean
  • StringDatatype: Geography.Location, Regex , List, General.Event, General.Organization, Phone Number, IpAddress, Person.Name, Phone Number, URL
  • NumberDatatype: Number

Note

Composite entities (entities with multiple components) map to StringDatatype.

Schema table

You can use sample JSON code to register entities for agents you create. Entities resolve to complex data types. You can manually map CLU entities to Copilot Studio data types by copying and pasting the following JSON code blocks for the relevant entity.

Age

{
    "unit": "Year",
    "value": 10
}

Currency

{
    "unit": "Egyptian pound",
    "ISO4217": "EGP",
    "value": 30
}

Temperature

{
    "unit": "Fahrenheit",
    "value": 88
}

Ordinal

{
    "offset": "3",
    "relativeTo": "Start",
    "value": "3"
}

Dimensions

{
    "unit": "KilometersPerHour",
    "value": 24
}

CLU dateTime entity types

DateTime is a special entity type that changes the returned resolution based on the types of user input that are received.

The following examples demonstrate how to configure entities for different types of date and time utterances. You can create your own mappings, based on these examples, depending on the type of result you expect your agent users to provide.

Date

Example input: Jan 1st, 1995

{
    "dateTimeSubKind": "Date",
    "timex": "1995-01-01",
    "value": "1995-01-01"
}

DateTime (year)

Example input: I'll be back on April 12th

{
    "dateTimeSubKind": "Date",
    "timex": "XXXX-04-12",
    "value": "2022-04-12"
}

DatetimeRange (duration)

Example input: I'm out between 3 and 12 of Sept.

{
    "resolutionKind": "TemporalSpan",
    "timex": "(XXXX-09-03,XXXX-09-12,P9D)",
    "duration": "P9D",
    "begin": "2022-09-03",
    "end": "2022-09-12"
}

DatetimeRange (set)

Example input: Every Tuesday

{ 
    "resolutionKind": "DateTime",
    "dateTimeSubKind": "Set",
    "timex": "XXXX-WXX-2",
    "value": "not resolved"
}

Datetime (since)

Example input: I've been out since August

{
    "resolutionKind": "TemporalSpan",
    "timex": "XXXX-08",
    "begin": "2022-08-01",
    "modifier": "Since"
}

Time

Example input: It's half past seven o'clock

{
    "resolutionKind": "DateTime",
    "dateTimeSubKind": "Time",
    "timex": "T07:30",
    "value": "07:30:00"
}