如何处理Amazon Alexa中的域外言语

时间:2018-11-19 20:19:01

标签: alexa alexa-skills-kit alexa-skill alexa-slot

我在技巧上有不同的意图,我使用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 个答案:

答案 0 :(得分:1)

无论用户输入的内容为何,Alexa始终尝试映射到最接近的意图。您不会无意中得到IntentRequest。因此,如果您有五个意图,Alexa将尝试将所有用户的话语与这五个技能意图之一进行匹配。

Alexa触发尚未处理的意图时,其他部分将执行。在您的示例代码中,SessionEndedRequest可能会进入您的else部分。但是,如果您尝试处理域外话语,则必须使用AMAZON.Fallback意向并在后端处理它。

AMAZON.FallbackIntent

如果您想处理域外请求,胡言乱语或意想不到的话语,或者当用户说出的内容与您的技术意图不符时,则必须使用预定义的AMAZON.FallbackIntent。此意图使用基于您的交互模型生成的域外模型,并为与您的任何技能意图都不匹配的用户话语提供后备。

有关AMAZON.FallbackIntent here

的更多信息