Alexa对话框模型步骤和dialogState永远不会处于COMPLETED状态

时间:2018-11-06 16:28:52

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

我正在用PHP端点实现Alexa对话框模型。 我使用了Alexa doc(https://developer.amazon.com/fr/docs/custom-skills/dialog-interface-reference.html

这是我的例子: 我的技能:

  

RequestIntent

     

话语:在卧室里添加一个{obj}

     

插槽:{obj} /插槽填充

短语:

  

我:Alexa,在卧室添加一个对象

     

Alexa:您要在卧室中添加什么对象?

     

我:我想在卧室里增加一辆车

     

Alexa:您想在卧室里增加一辆车吗?

     

我:是

STEP1:

  

DialogState已启动

     

我使用ElicitSlot设置{obj}插槽

STEP2:

  

dialogState为IN_PROGRESS。

     

我使用ConfirmIntent要求用户确认

STEP3:

  
    

用户说是/不是

  
     

ConfirmIntent现在设置为CONFIRMED / DENIED

     

但仍处于IN_PROGRESS

dialogState应该为COMPLETED,因为我将所有slot和intent值都设置正确了吗?那么,为什么不应该在这里工作呢?

多谢

3 个答案:

答案 0 :(得分:3)

您的dialogState不是COMPLETE的原因是因为您正在使用Dialog.ElicitSlot指令。仅当您使用 COMPLETED指令时,Dialog.Delegate状态才可能。

有关通过Dialog.Delegate指令here控制对话框的更多信息

答案 1 :(得分:1)

DialogState仅具有以下状态: “ STARTED”,“ IN_PROGRESS”,“已完成”。

之所以未完成,可能是因为并非所有步骤都已完成,或者IntentRequest并没有所有必需的插槽值。

答案 2 :(得分:0)

对于我来说,我必须在Alexa开发人员控制台的界面中启用自动委派选项。

  

让Alexa根据您的对话框模型自动确定并完成对话框的每个步骤。对话框完成后,您的技能将获得一个IntentRequest。您可以在意图级别覆盖此设置。 Learn More关于自动委派。

所有步骤完成后,技能会收到最终的IntentRequest,且dialogState设置为COMPLETED