Automotive Skill

The Automotive Skill is in preview and demonstrates the first capabilities to help enable Automotive scenarios. The skill focuses on Vehicle Settings, specifically Climate Control, Safety and Basic audio controls. Media, Tuner and Phone capabilities are expected in a future release.

Vehicle Control is a complicated domain, whilst there are only a limited set of car controls for climate control there are a myriad of ways that a human can describe a given setting. For example, I’m feeling chilly , My feet are cold and It’s cold here in the back all relate to a decrease in temperature but to different parts of the car and perhaps even different fan settings.

The Skill leverages a set of LUIS models to help understand the intent and entities but then leverages capabilities from our Maluuba team to match potential settings and actions to the available settings to then suggest a course of action.

Unlike the Productivity and PoI skills that are integrated into existing services, the automotive skill will require integration with the telematics solution in use by a given OEM so will require customization to reflect actual car features for a given OEM along with integration.

To enable testing and simulation any action identified is surfaced to the calling application as an event, this can easily be seen within the Bot Framework Emulator and will be wired up into the Web Test harness available as part of the Virtual Assistant solution.

Supported scenarios

At this time, changes to vehicle settings are supported through the VEHICLE_SETTINGS_CHANGE and VEHICLE_SETTINGS_DECLARATIVE intents. The former enables questions such as “change the temperature to 21 degrees” whereas the latter intent enables scenarios such as “I’m feeling cold” which require additional processing steps.

The following vehicle setting areas are supported at this time, example utterances are provided for guidance. In cases where the utterance results in multiple potential settings or a value isn’t provided then the skill will prompt for disambiguation. Confirmation will be sought from the user if a setting is configured to require confirmation, important for sensitive settings such as safety.

Climate Control

  • Set temperature to 21 degrees
  • Defog my windshield
  • Put the air on my feet
  • Turn off the ac
  • I’m feeling cold
  • It’s feeling cold in the back
  • The passenger is freezing
  • Change climate control

Safety

  • Turn lane assist off
  • Enable lane change alert
  • Set park assist to alert

Audio

  • Adjust the equalizer
  • Increase the bass
  • Increase the volume

Vehicle settings can be selected through explicit entry of the vehicle setting name, numeric or ordinal (first one, last one).

An example transcript file demonstrating the Skill in action can be found here, you can use the Bot Framework Emulator to open transcripts.

 Automotive Skill Transcript Example

Language Understanding

LUIS models for the Skill are provided in .lu file format as part of the Skill. These are currently available in English with other languages to follow.

The following Top Level intents are available with the main settings LUIS model

  • VEHICLE_SETTINGS_CHANGE
  • VEHICLE_SETTINGS_DECLARATIVE

In addition there are two supporting LUIS models settings_name and settings_value, these are used for disambiguation scenarios to clarify setting names and values where the initial utterance doesn’t provide clear information.

Configuration

Customizing vehicle settings

Available vehicle settings are defined in a supporting metadata file which you can find in this location: automotiveskill/Dialogs/VehicleSettings/Resources/available_settings.yaml.

To add an new setting along with appropriate setting values it’s easily expressed in YAML. The example below shows a new Volume control setting with the ability to Set, Increase, Decrease and Mute the volume.

canonicalName: Volume
values:
  - canonicalName: Set
    requiresAmount: true
  - canonicalName: Decrease
    changesSignOfAmount: true
  - canonicalName: Increase
    antonym: Decrease
  - canonicalName: Mute
allowsAmount: true
amounts:
  - unit: ''

For key settings you may wish to prompt for confirmation, safety settings for example. This can be specified through a requiresConfirmation property as shown below.

canonicalName: Lane Change Alert
values:
  - canonicalName: Off
    requiresConfirmation: true
  - canonicalName: On

Deployment

Learn how to provision your Azure resources in the Create a Skill tutorial.

Events

The Automotive Skill surfaces setting changes for testing purposes through an event returned to the client. This enables easy testing and simulation, all events are prefixed with AutomotiveSkill.. The below event is generated as a response to I'm feeling cold

{
  "name": "AutomotiveSkill.Temperature",
  "type": "event",
  "value": [
    {
      "Key": "valueingform",
      "Value": "Increasing"
    },
    {
      "Key": "settingname",
      "Value": "Temperature"
    }
  ]
}