Connected Vehicle Skills for Alexa

You can create Alexa automotive skills for connected vehicles by using the Alexa.Automotive and smart home interfaces. By using your connected vehicle skill, users can ask any Alexa device or the Alexa app to turn the engine on or off, lock or unlock the doors, and set the temperature in different zones, while they're outside their vehicle. For example, on a cold morning, a user can ask Alexa to turn on their car and start defrosting the windshield while they're still getting ready to leave for work. For additional automotive skill types, see Automotive Skills for Alexa.

Connected vehicle skill utterances

When you use the Alexa.Automotive and smart home interfaces, the voice interaction model is already built for you. The following examples show some user utterances for connected vehicle skills.

Alexa, lock my car.
Alexa, unlock my car.
Alexa, turn on my truck.
Alexa, start my car with PIN 1234.
Alexa, is my car running?
Alexa, switch on the rear defroster in my truck.
Alexa, set the heat to low in my car.

Who can create connected vehicle skills for Alexa

You can create a connected vehicle skill if you are a developer for a cloud-connected vehicle original equipment manufacturer (connected vehicle OEM). Work with Amazon’s Business Development team to enable voice experiences for your customers. Currently, independent developers can’t create connected vehicle skills, either for their own private use or for general public use.

Prerequisites

Before you can create a connected car skill, you must meet the following prerequisites:

  • You must have an Amazon developer account to access the Alexa developer console.
  • To write your skill code as an AWS Lambda function, you must have an AWS account to access the AWS management console.
  • You must understand JSON and one of the supported languages for AWS Lambda: Node.js, Java, Python, C#, or Go.
  • Your system must have OAuth 2.0 enabled and support the authorization-code grant flow type. For details, see Account Linking Concepts for Alexa Skills.
  • You must have a connected vehicle such as a car with a cloud API and a TCU unit to control it.
  • An Alexa-enabled device, such as an Amazon Echo or the Alexa app.

Interfaces for connected vehicle skills

You can use the following interfaces in your connected vehicle skills.

Interface Description
Automotive.VehicleData Implement the Alexa.Automotive.VehicleData interface to identify the make, model, year, and other information about a connected vehicle.
AuthorizationController Implement the Alexa.AuthorizationController interface to request credentials from a user before you handle a directive, such as to start a car or to unlock a car door.
PowerController Implement the PowerController interface so that users can turn the vehicle on and off. You can also use the PowerController for lights and other components of the vehicle.
LockController Implement the LockController interface so the user can lock and unlock the vehicle doors.
ToggleController Implement one or more instances of ToggleController so the user can control components of the vehicle that can be set to on or off, such as the hazard lights, or the defroster. ToggleController doesn't support semantics for automotive skills.
RangeController Implement one or more instances of RangeController so the user can control components of the vehicle that take a range of values, such as the speed of the windshield wipers, or the speed of the air conditioning fan. RangeController doesn't support semantics for automotive skills.
ModeController Implement one or more instances of ModeController so the user can select pre-defined or user-saved settings. ModeController doesn't support semantics for automotive skills.
EndpointHealth Report the connectivity status of the vehicle to Alexa.
Alexa The base interface for all Alexa skills.

Steps to create a connected vehicle skill

The steps to create a connected vehicle skill are the same as in Steps to Build a Smart Home Skill, except for the following tasks:

  • Choose Connected Vehicle for the voice-interaction model instead of Smart Home.
  • Prominently surface safety guidelines to users during the account linking flow. To meet this requirement, you can add the following warning to the account linking page with an optional link to more safety information: "Warning: This skill allows you to use voice to trigger certain functions in the vehicle, like remote vehicle start and climate control. For more information, click here."

Discovery for connected vehicle skills

You describe endpoints that support Alexa.Automotive.VehicleData using the standard discovery mechanism described in Alexa.Discovery.

Use VEHICLE for the display category for the main vehicle endpoint. For the full list of display categories, see display categories.

Discover response example

The following example shows a Discover.Response message for a vehicle that supports the VehicleData, AuthorizationController, and PowerController interfaces for the main vehicle endpoint.

The example also includes ToggleControllers for the front and rear defrosters. The front and rear defrosters include the Alexa.Automotive.IsPartOf relationship to attach themselves to the vehicle endpoint.

Copied to clipboard.

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<message id>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<unique ID of the vehicle endpoint, for this example vehicle-001>",
          "additionalAttributes":  {
            "serialNumber": "<the serial number of the vehicle>"
          },
          "endpointResources": {
            "manufacturerName": {
              "@type": "text",
              "value": {
                "text": "<the manufacturer name of the vehicle>",
                "locale": "en-US"
              }
            },
            "description": {
              "@type": "text",
                "value": {
                  "text": "<a description that appears in the Alexa app>",
                  "locale": "en-US"
                }
            },
            "friendlyNames": [
              {
                "@type": "text",
                "value": {
                  "text": "<device name that appears in the Alexa app, such as car>",
                  "locale": "en-US"
                }
              },
              {
                "@type": "text",
                "value": {
                  "text": "<additional device name, such as smart car>",
                  "locale": "en-US"
                }
              }
            ]
          },
          "displayCategories": ["VEHICLE"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.Automotive.VehicleData",
              "version": "1.0",
              "configuration": {
                "year": 2020,
                "resources": {
                  "make": {
                    "@type": "text",
                    "value": {
                      "text": "Chevrolet",
                      "locale": "en-US"
                    }
                  },
                  "model": {
                    "@type": "text",
                    "value": {
                      "text": "Silverado",
                      "locale": "en-US"
                    }
                  },
                  "trim": {
                    "@type": "text",
                    "value": {
                      "text": "LTZ",
                      "locale": "en-US"
                    }
                  }
                }
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.AuthorizationController",
              "version": "1.0",
              "properties": {
                "supported": [],
                "proactivelyReported": false,
                "retrievable": false
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        },
        {
          "endpointId": "<unique ID of the endpoint, for this example front-defrost>",
          "endpointResources": {
            "manufacturerName": {
              "@type": "text",
              "value": {
                "text": "<the manufacturer name of the vehicle or component>",
                "locale": "en-US"
              }
            },
            "description": {
              "@type": "text",
                "value": {
                  "text": "front windshield defroster",
                  "locale": "en-US"
                }
            },
            "friendlyNames": [
              {
                "@type": "text",
                "value": {
                  "text": "front defroster",
                  "locale": "en-US"
                }
              }
            ]
          },
          "displayCategories": ["OTHER"],
          "cookie": {},
          "relationships": {
            "Alexa.Automotive.IsPartOf": {
              "endpointId": "<the ID of the main vehicle endpoint, for this example vehicle-001>"
            }
          },
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ToggleController",
              "instance": "Front.Defroster",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "toggleState"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": false,
                "nonControllable": false
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Front defroster",
                      "locale": "en-US"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        },
        {
          "endpointId": "<unique ID of the endpoint, for this example rear-defrost>",
          "endpointResources": {
            "manufacturerName": {
              "@type": "text",
              "value": {
                "text": "<the manufacturer name of the vehicle or component>",
                "locale": "en-US"
              }
            },
            "description": {
              "@type": "text",
                "value": {
                  "text": "rear windshield defroster",
                  "locale": "en-US"
                }
            },
            "friendlyNames": [
              {
                "@type": "text",
                "value": {
                  "text": "rear defroster",
                  "locale": "en-US"
                }
              }
            ]
          },
          "displayCategories": ["OTHER"],
          "cookie": {},
          "relationships": {
            "Alexa.Automotive.IsPartOf": {
              "endpointId": "<the ID of the main vehicle endpoint, for this example vehicle-001>"
            }
          },
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ToggleController",
              "instance": "Rear.Defroster",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "toggleState"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": false,
                "nonControllable": false
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "Rear defroster",
                      "locale": "en-US"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}