Entity registration for conversational language understanding integration

Important

Power Virtual Agents capabilities and features are now part of Microsoft Copilot Studio following significant investments in generative AI and enhanced integrations across Microsoft Copilot.

Some articles and screenshots may refer to Power Virtual Agents while we update documentation and training content.

This article discusses adding conversational language understanding (CLU) entities to Microsoft Copilot Studio bots. 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 Power Virtual Agent Prebuilt Entities for your projects, but should you want 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 Microsoft Copilot Studio bots, see Get started with language understanding.

The following datatypes 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 the StringDataype.

Schema table

Bot creators can use sample JSON code to register entities. Entities resolve to complex data types. You can manually map CLU entities to Microsoft 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 bot 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"
}