Как обрабатывать высказывания вне домена в Amazon Alexa
У меня были разные намерения в навыке, я использую php в качестве сервиса. Все работает нормально, но если пользователь спрашивает высказывания, которые не настроены ни в одном из намерений, он должен перейти к другой части.
Например, код выглядит следующим образом:
if($EchoReqObj->request->type=="LaunchRequest"){
$text = "Testing launch";
$array = array("version"=>"1.0","response"=>array("outputSpeech"=>array("type"=>"PlainText","text"=>$text),"shouldEndSession"=>false));
echo json_encode($array);
}
else if(getting the intent name){//Do something.}
else{
$text = "In else part";
$array = array("version"=>"1.0","response"=>array("outputSpeech"=>array("type"=>"PlainText","text"=>$text),"shouldEndSession"=>false),"sessionAttributes"=>array("lastSpeech"=>$text));
echo json_encode($array);
}
Это else
Я написал, но это не выполняется.
1 ответ
Alexa всегда пытается сопоставить с ближайшим намерением, независимо от того, что пользовательский ввод. Вы не получите IntentRequest
без намерения. Поэтому, если у вас есть пять намерений, Alexa попытается сопоставить все высказывания пользователя с одним из этих пяти намерений навыка.
Ваша другая часть выполняется, когда Алекса вызывает намерение, которое не было обработано. Из вашего примера код SessionEndedRequest
может перейти в вашу другую часть. Но если вы пытаетесь обрабатывать высказывания вне домена, вы должны использовать AMAZON.Fallback
намерены и справиться с этим в вашем бэкэнде.
AMAZON.FallbackIntent
Если вы хотите обрабатывать запросы вне домена, или бред, или неожиданные высказывания, или когда пользователь говорит что-то, что не соответствует каким-либо намерениям в вашем умении, вы должны использовать предопределенный AMAZON.FallbackIntent
, Это намерение использует модель вне домена, созданную на основе вашей модели взаимодействия, и предоставляет запасной вариант для высказываний пользователей, которые не соответствуют ни одному из намерений вашего навыка.
Еще AMAZON.FallbackIntent
Вот