我在技巧上有不同的意图,我使用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
,但没有执行。
答案 0 :(得分:1)
无论用户输入的内容为何,Alexa始终尝试映射到最接近的意图。您不会无意中得到IntentRequest
。因此,如果您有五个意图,Alexa将尝试将所有用户的话语与这五个技能意图之一进行匹配。
Alexa触发尚未处理的意图时,其他部分将执行。在您的示例代码中,SessionEndedRequest
可能会进入您的else部分。但是,如果您尝试处理域外话语,则必须使用AMAZON.Fallback
意向并在后端处理它。
如果您想处理域外请求,胡言乱语或意想不到的话语,或者当用户说出的内容与您的技术意图不符时,则必须使用预定义的AMAZON.FallbackIntent
。此意图使用基于您的交互模型生成的域外模型,并为与您的任何技能意图都不匹配的用户话语提供后备。
有关AMAZON.FallbackIntent
here