Я развиваю навык Alexa SmartHome. Если устройство больше не доступно, но Alexa хочет запустить его, я отвечаю с ошибкой NO_SUCH_ENDPOINT. Однако в звуковом ответе Alexa говорится, что устройство в данный момент не отвечает, а устройство больше не доступно.
Связь с навыком обычно работает нормально, и существующие устройства могут быть оценены должным образом.
Рассмотрим следующий пример. Alexa отправляет директиву (маркеры области видимости удаляются на этапе предварительной обработки, поэтому здесь они не показаны):
{
"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn",
"payloadVersion": "3",
"messageId": "72fd470b-3cf5-44cc-aeb2-e173a286a8b2",
"correlationToken": "AAAAAAAAAQAaieQVQqSUvTlNNIhWgfO7DAIAAAAAAAAQ2kRZ2tWZo+nCF1MbKxBLEECYxPfytOiyDYkatx+IIPveE0AvXnS2buopCXtXhjQnLd75guvqBpPTlEXptFat5BlG4Ml2CLdShb9QFJpAtEyXF3Cp6RgrKLxHH0AkFKMahGGwt4hE7HhO807Kl+8YCmFE2eF6t5iwQr\/hooRQi64CgKPGMkH1UlIM45v\/yXOGm6pmtyrXHe8nJ2Qxu5LFZjx+q1hfvWDqYkiFio+CD2IEANPHLT2Fh70DirBVcIKrpRQRC2OQqxyZiIPy+Pw5LFbawuGiDX1IqGysB8kVylOs1Fyx\/WDizFYykwBLONk3CWnAlJmxEnuvmiXH46dt5vLc0tse+fORARS0Zf7AHgtI3RoV9LZxoCA7a2xe7VkMQVuEm\/F6n8H\/JScqrWAqUTvRrfBUTCKFBhcvWt+\/Oka4itUUffbqHwu9qQfH\/UJXCO7g1tqSqnkdnJ\/p0s1WCDjdIBlj1LhBszLt2FesQEFeBFrr9SQlunkYYm1r7wUfdtqs\/pgWDFI0nTsf2pLgKYRiumom\/0w4eCO5Fo\/VDMwVGRaXxn5jumS19jW0aKACrDsciq\/OalxHx8eyTtoKGheBBAyucPUwcL4XtBYxd5J5ZHg0XTpZR2huLaRtdmgEvPXWEhzet\/VG4q7fD29iu6I7vBKa1SSX3eaBkPALF+Aze1hmVTH3mo5WBg=="
},
"endpoint": {
"scope": {
"type": "BearerToken"
},
"endpointId": "2",
"cookie": []
},
"payload": []
}
}
Если что-то выходит из строя и запрошенное устройство больше не существует, умение отвечает
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"payloadVersion": "3",
"messageId": "30987551-6385-414d-8227-949cb50ac561",
"correlationToken": "AAAAAAAAAQAaieQVQqSUvTlNNIhWgfO7DAIAAAAAAAAQ2kRZ2tWZo+nCF1MbKxBLEECYxPfytOiyDYkatx+IIPveE0AvXnS2buopCXtXhjQnLd75guvqBpPTlEXptFat5BlG4Ml2CLdShb9QFJpAtEyXF3Cp6RgrKLxHH0AkFKMahGGwt4hE7HhO807Kl+8YCmFE2eF6t5iwQr\/hooRQi64CgKPGMkH1UlIM45v\/yXOGm6pmtyrXHe8nJ2Qxu5LFZjx+q1hfvWDqYkiFio+CD2IEANPHLT2Fh70DirBVcIKrpRQRC2OQqxyZiIPy+Pw5LFbawuGiDX1IqGysB8kVylOs1Fyx\/WDizFYykwBLONk3CWnAlJmxEnuvmiXH46dt5vLc0tse+fORARS0Zf7AHgtI3RoV9LZxoCA7a2xe7VkMQVuEm\/F6n8H\/JScqrWAqUTvRrfBUTCKFBhcvWt+\/Oka4itUUffbqHwu9qQfH\/UJXCO7g1tqSqnkdnJ\/p0s1WCDjdIBlj1LhBszLt2FesQEFeBFrr9SQlunkYYm1r7wUfdtqs\/pgWDFI0nTsf2pLgKYRiumom\/0w4eCO5Fo\/VDMwVGRaXxn5jumS19jW0aKACrDsciq\/OalxHx8eyTtoKGheBBAyucPUwcL4XtBYxd5J5ZHg0XTpZR2huLaRtdmgEvPXWEhzet\/VG4q7fD29iu6I7vBKa1SSX3eaBkPALF+Aze1hmVTH3mo5WBg=="
},
"endpoint": {
"endpointId": "2"
},
"payload": {
"type": "NO_SUCH_ENDPOINT"
}
}
}
Согласно схеме JSON Alexa SmartHome, найденной здесь https://github.com/alexa/alexa-smarthome/blob/master/validation_schemas/alexa_smart_home_message_schema.json, ответ действителен. Я ожидаю, что Алекса заявит что-то вроде «Запрошенная конечная точка не существует». вместо этого «Устройство в настоящее время не отвечает». (Я использую немецкий Alexa, поэтому точное выражение может быть другим)
Понятия не имею, что происходит не так. Алекса обычно реагирует по-разному на NO_SUCH_ENDPOINT, и я делаю что-то не так? Или это предполагаемый ответ по умолчанию от Alexa, и я просто ожидал, что она ошибочно предоставит другой ответ пользователю?