phoice / phlexa

Build voice applications for Amazon Alexa with phlexa

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Better support for Alexa requests

RalfEggert opened this issue · comments

The requests that are sent by the Alexa Voice Service have been grown a lot in the last months. There is plenty of new stuff sent by the AVS that is not represented in the Phlexa\Request\AlexaRequest class hierarchy. So we need to identify these blocks and add them to the class hierarchy by adding new classes and properties to these new classes.

The first step is to pick all missing information from normal requests.

Launch request

{
	"version": "1.0",
	"session": {
		"new": true,
		"sessionId": "amzn1.echo-api.session.sessionId",
		"application": {
			"applicationId": "amzn1.ask.skill.applicationId"
		},
		"user": {
			"userId": "amzn1.ask.account.userId"
		}
	},
	"context": {
		"Display": {},
		"System": {
			"application": {
				"applicationId": "amzn1.ask.skill.applicationId"
			},
			"user": {
				"userId": "amzn1.ask.account.userId"
			},
			"device": {
				"deviceId": "amzn1.ask.device.deviceId",
				"supportedInterfaces": {
					"Display": {
						"templateVersion": "1.0",
						"markupVersion": "1.0"
					},
					"Alexa.Presentation.APL": {
						"runtime": {
							"maxVersion": "1.1"
						}
					}
				}
			},
			"apiEndpoint": "https://api.eu.amazonalexa.com",
			"apiAccessToken": "apiAccessToken"
		},
		"Viewport": {
			"experiences": [
				{
					"arcMinuteWidth": 246,
					"arcMinuteHeight": 144,
					"canRotate": false,
					"canResize": false
				}
			],
			"shape": "RECTANGLE",
			"pixelWidth": 1024,
			"pixelHeight": 600,
			"dpi": 160,
			"currentPixelWidth": 1024,
			"currentPixelHeight": 600,
			"touch": [
				"SINGLE"
			],
			"video": {
				"codecs": [
					"H_264_42",
					"H_264_41"
				]
			}
		},
		"Viewports": [
			{
				"type": "APL",
				"id": "main",
				"shape": "RECTANGLE",
				"dpi": 160,
				"presentationType": "STANDARD",
				"canRotate": false,
				"configuration": {
					"current": {
						"video": {
							"codecs": [
								"H_264_42",
								"H_264_41"
							]
						},
						"size": {
							"type": "DISCRETE",
							"pixelWidth": 1024,
							"pixelHeight": 600
						}
					}
				}
			}
		]
	},
	"request": {
		"type": "LaunchRequest",
		"requestId": "amzn1.echo-api.request.requestId",
		"timestamp": "2019-10-26T17:43:17Z",
		"locale": "de-DE",
		"shouldLinkResultBeReturned": false
	}
}

Intent Request

{
	"version": "1.0",
	"session": {
		"new": false,
		"sessionId": "amzn1.echo-api.session.sessionId",
		"application": {
			"applicationId": "amzn1.ask.skill.applicationId"
		},
		"attributes": {
			"names": [
				"Ralf",
				"Horst"
			],
			"count": 2
		},
		"user": {
			"userId": "amzn1.ask.account.userId"
		}
	},
	"context": {
		"Display": {},
		"Alexa.Presentation.APL": {
			"token": "handle-known",
			"version": "APL_WEB_RENDERER_GANDALF",
			"componentsVisibleOnScreen": [
				{
					"uid": ":1024",
					"position": "1024x600+0+0:0",
					"type": "mixed",
					"tags": {
						"viewport": {}
					},
					"entities": []
				}
			]
		},
		"System": {
			"application": {
				"applicationId": "amzn1.ask.skill.applicationId"
			},
			"user": {
				"userId": "amzn1.ask.account.userId"
			},
			"device": {
				"deviceId": "amzn1.ask.device.deviceId",
				"supportedInterfaces": {
					"Display": {
						"templateVersion": "1.0",
						"markupVersion": "1.0"
					},
					"Alexa.Presentation.APL": {
						"runtime": {
							"maxVersion": "1.1"
						}
					}
				}
			},
			"apiEndpoint": "https://api.eu.amazonalexa.com",
			"apiAccessToken": "apiAccessToken"
		},
		"Viewport": {
			"experiences": [
				{
					"arcMinuteWidth": 246,
					"arcMinuteHeight": 144,
					"canRotate": false,
					"canResize": false
				}
			],
			"shape": "RECTANGLE",
			"pixelWidth": 1024,
			"pixelHeight": 600,
			"dpi": 160,
			"currentPixelWidth": 1024,
			"currentPixelHeight": 600,
			"touch": [
				"SINGLE"
			],
			"video": {
				"codecs": [
					"H_264_42",
					"H_264_41"
				]
			}
		},
		"Viewports": [
			{
				"type": "APL",
				"id": "main",
				"shape": "RECTANGLE",
				"dpi": 160,
				"presentationType": "STANDARD",
				"canRotate": false,
				"configuration": {
					"current": {
						"video": {
							"codecs": [
								"H_264_42",
								"H_264_41"
							]
						},
						"size": {
							"type": "DISCRETE",
							"pixelWidth": 1024,
							"pixelHeight": 600
						}
					}
				}
			}
		]
	},
	"request": {
		"type": "IntentRequest",
		"requestId": "amzn1.echo-api.request.requestId",
		"timestamp": "2019-10-26T17:49:26Z",
		"locale": "de-DE",
		"intent": {
			"name": "GreetIntent",
			"confirmationStatus": "NONE",
			"slots": {
				"first_name": {
					"name": "first_name",
					"value": "horst",
					"resolutions": {
						"resolutionsPerAuthority": [
							{
								"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.authority.AMAZON.DE_FIRST_NAME",
								"status": {
									"code": "ER_SUCCESS_MATCH"
								},
								"values": [
									{
										"value": {
											"name": "Horst",
											"id": "d8716f14eb40a0764407ff1ca2eea315"
										}
									}
								]
							}
						]
					},
					"confirmationStatus": "NONE",
					"source": "USER"
				}
			}
		}
	}
}