我正在使用lex构建器中提供的聊天界面。 当我输入问题时,我会得到与第一个示例类似的格式。 Lex没有对我说话。
{
"dialogState": "ElicitSlot",
"intentName": "OrderFlowers",
"message": "What type of flowers would you like to order?",
"messageFormat": "PlainText",
"responseCard": null,
"sessionAttributes": {},
"slotToElicit": "FlowerType",
"slots": {
"FlowerType": null,
"PickupDate": null,
"PickupTime": null
}
}
但是,当我说一个问题时,lex会用声音回应。 响应示例如下:
slot-to-elicit: FlowerType
dialog-state: ElicitSlot
input-transcript: i would like to order some flowers
session-attributes: {}
slots: {
"PickupTime": null,
"FlowerType": null,
"PickupDate": null
}
在第二个示例中,考虑到未指定messageFormat,lex如何知道对客户端说出响应? 两种回复均来自lex chatbot构建器中的详细面板。
答案 0 :(得分:0)
我自己运行了一些测试之后,看来Lex Test Bot已设置为检测传入的消息类型并更改响应以传递匹配的响应消息类型。
请注意,有关来自音频输入的响应的详细面板信息仅隐藏了完整的响应细节,而没有这些细节。
实际上,显示的音频输入响应详细信息甚至没有采用正确的Lex Response格式。
slot-to-elicit ----should be----> slotToElicit
input-transcript ----should be----> inputTranscript
session-attributes ----should be----> sessionAttributes
这足以证明我的结论,即Lex Test Bot旨在更改Lex Response格式,以便仅在收到音频输入时才将消息作为音频输出发送。
直接回答您的问题:
Lex如何知道如何说出回应?
不是Lex,而是测试机器人。并检测输入类型。
但是没有指定'messageFormat'吗?
我可以确认 是在Lex Response中指定的,并已交付给Lex Test Bot。因此,测试机器人必须以自己的方式处理Lex响应。
后续问题:如果响应相同,那么为什么响应详细信息面板不同?
想象一下,如果它显示出收到的真实响应或测试机器人的改动,那么这两种方法都会误导开发人员。因此,对于音频输出消息,它会在“响应详细信息”面板中显示其自己的详细信息形式。