Alexa for Apps Skill Manifest Reference
To enable Alexa for Apps in your skill, you must make changes to your skill manifest. The following example and reference describe how to add an appLink
object to your skill manifest and declare support for the APP_LINKS_V2
interface. For the full skill manifest format, see Skill Manifest Schema.
Skill connection request skill manifest example
The following example shows a skill manifest for a skill connection request.
{
"manifest": {
"apis": {
"custom": {
"endpoint": {
"uri": "arn:aws:lambda:us-east-1:040623927470:function:cityGuideSkillLambda"
},
"interfaces": [
{
"type":"APP_LINKS_V2"
}
],
================== ALEXA FOR APPS ADDITIONS START ==================
"appLink": {
"linkedApplications": [
{
"friendlyName":{
"default":"CityGuide",
"localizedNames": [
{
"locale":"de-DE",
"name":"Stadtführer"
}
]
},
"catalogInfo": {
"type": "IOS_APP_STORE",
"identifier": "id123456789"
},
"customSchemes": [
"cityguide://",
"ctgd://"
],
"domains": [
"cityguide.com",
"ctgd.com"
]
},
{
"friendlyName":{
"default":"CityGuide",
"localizedNames": [
{
"locale":"de-DE",
"name":"Stadtführer"
}
]
},
"catalogInfo": {
"type": "GOOGLE_PLAY_STORE",
"identifier": "com.cityguide.app"
},
"customSchemes": [
"cityguide://",
"ctgd://"
],
"domains": [
"cityguide.com",
"ctgd.com"
],
"androidCustomIntents": [
{
"component": "com.someapp.SomeActivity",
"action": "com.someapp.SOME_ACTION"
}
]
}
],
"linkedWebDomains": [
"grubbhouse.com",
"amazon.com",
"yahoo.com"
],
"linkedCommonSchemes": {
"IOS_APP_STORE": [
"MAPS",
"TEL"
],
"GOOGLE_PLAY_STORE": [
"MAPS",
"TEL"
]
},
"linkedAndroidCommonIntents": [
{
"intentName": "SHOW_IN_MAP",
"catalogType": "GOOGLE_PLAY_STORE"
}
]
}
================== ALEXA FOR APPS ADDITIONS END ==================
}
}
},
"permissions": [
{
"name": "alexa::devices:app:push_notifications"
}
]
}
alexa::devices:app:push_notifications
in the permissions
array so that you can send push notifications in the non-mobile flow.App link skill manifest reference
appLink object
The appLink
object contains an object for each app your skill links to. If you have iOS and Android versions of your app, these versions count as separate apps.
If your deep link request includes a URI, prefix, or package name, it must match a corresponding item in the domains
or customSchemes
field in your skill manifest. Otherwise, the deep link request fails as unauthorized.
Field | Description | Type | Required |
---|---|---|---|
linkedApplications |
A list of associated apps. | Array of objects | At least one of linkedApplications , linkedWebDomains , or linkedCommonSchemes must be declared. |
linkedWebDomains |
A list of website domains or subdomains that your skill wants to launch in a browser. Only use this field when there's no associated app; it's not a universal link. | String array | At least one of linkedApplications , linkedWebDomains , or linkedCommonSchemes must be declared. |
linkedCommonSchemes |
Common schemes that your skill can launch in the iOS App Store or Google Play Store. | Object | At least one of linkedApplications , linkedWebDomains , or linkedCommonSchemes must be declared. |
linkedCommonSchemes.IOS_APP_STORE |
List of common schemes that your skill can launch in the iOS App Store. Valid schemes are MAPS and TEL . |
Array of enum | No |
linkedCommonSchemes.GOOGLE_PLAY_STORE |
List of common schemes that your skill can launch in the Google Play Store. Valid schemes are MAPS and TEL . |
Array of enum | No |
linkedAndroidCommonIntents |
A list of Android common intents that your skill can launch. | Array of objects | No |
linkedAndroidCommonIntents.intentName |
The name of the Android common intent. One of: SHOW_IN_MAP , ADD_CALENDAR_EVENT , PLAY_MEDIA , START_PHONE_CALL , OPEN_SETTINGS . This value specifies the format of the Android intent. For example, SHOW_IN_MAP requires "action" to be "android.intent.action.VIEW" and "data" to be "geo:" in the Android intent. |
Enum | No |
linkedAndroidCommonIntents.catalogType |
The catalog type for the linked intent. Currently the only possible value is GOOGLE_PLAY_STORE . |
Enum | No |
linkedApplications object
Field | Description | Type | Required |
---|---|---|---|
friendlyName |
Names for the app according to locale | Object | Yes |
catalogInfo |
Information Alexa for Apps needs to link to your app in the iOS App Store or Google Play Store | Object | Yes |
customSchemes |
A comma-separated list of custom schemes used to validate custom scheme links. At runtime, Alexa for Apps validates the custom scheme within the deep link by using a regular expression built with this value. Required for custom scheme link requests. | String array | No |
domains |
A list of domains used to validate universal links. At runtime, Alexa for Apps validates the domain within the deep link by using a regular expression built with this value. Required for universal links and website deep links. | String array | No |
androidCustomIntents |
A list of custom Android intents. | Array of objects | Yes |
friendlyName object
The friendlyName
object indicates how you want your app name to appear in any voice responses that Alexa provides automatically when deep linking.
For example, in a fallback scenario when the user hasn't installed your app, you might have Alexa take the user to the iOS App Store or the Google Play Store instead. In those cases, Alexa says something like, "To enable this experience you'll need to install the app. Here's <App Name> in the App Store."
Field | Description | Type | Required |
---|---|---|---|
default |
Friendly name for your app in its home locale. If you don't specify localizedNames , Alexa for Apps uses this value for all locales. |
String | Yes |
localizedNames |
Contains an array of friendly names for your app when the user's device locale isn't the home locale. This array is required only if your app has different friendly names across different locales. You can only specify localizedNames values for the locales that you included in the manifest.publishingInformation.locales section of your skill manifest. |
Object array | No |
localizedNames[].locale |
Locale, for example, de-DE . |
String | Yes |
localizedNames[].names |
Name for your app in that locale. | String | Yes |
catalogInfo object
The catalogInfo
object contains the information that Alexa for Apps needs to link to your app in the iOS App Store or Google Play Store.
Alexa for Apps uses the identifier
field to validate deep link requests. For example, an Android intent deep link request must be for an intent whose root package name is in the catalogInfo
object. Otherwise, the request fails as unauthorized.
Field | Description | Type | Required |
---|---|---|---|
type |
IOS_APP_STORE or GOOGLE_PLAY_STORE |
String enumeration value | Yes |
identifier |
The identifier for your app in the iOS App Store or Google Play Store. For iOS apps, it's a numeric identifier, for example, id123456789. For Android intents, it's typically the package name, for example, com.cityguide.app . |
String | Yes |
androidCustomIntents object
Use androidCustomIntents
object to declare an Android custom intent. If your skill sends an Android custom intent, you must declare the custom intent in your skill manifest.
Field | Description | Type | Required |
---|---|---|---|
component |
The component for the Android custom intent. Required if action isn't specified. |
String | No |
action |
The action for the Android custom intent. Required if component isn't specified. |
String | No |
Related topics
Last updated: May 03, 2024