如何在Rivr VoiceXML中为不同的Dialog使用一个DialogueFactory

时间:2015-09-23 15:07:35

标签: voicexml rivr

我正在使用VoiceXmlDialogueFactory创建一些Dialogue。我想知道如何检查哪个是在Dialog中配置的类名(在web.xml中),所以我不必为每个Dialog创建一个DialogueFactory类,我可以在/或在create方法中。我检查了那个方法:

public VoiceXmlDialogue create(DialogueInitializationInfo<VoiceXmlInputTurn, VoiceXmlOutputTurn, VoiceXmlDialogueContext> initializationInfo) throws DialogueFactoryException {

但是没有找到com.nuecho.rivr.voicexml.dialogue.class参数的位置。我可以通过其他方式阅读的特定参数也可以起到作用。

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要一个DialogueFactory类,它可以根据某些外部数据创建不同的对话(不同的VoiceXmlDialogue类)。这就是DialogueFactory的目的,真的。

最直接的方法是在初始HTTP请求中使用某些内容(如参数或路径)来确定要构建的对话框。您可以通过将initializationInfo的{​​{1}}参数转换为DialgueFactory.create()来获取HttpServletRequest。在此对象中,您将找到可用于执行所需逻辑的其他属性。您甚至可以访问servlet上下文。

因此,使用查询参数,您可以创建正确的对话框。 http://server.exemple.com/application/dialogue?type=abc

WebDialogueInitializationInfo

您还可以使用路径信息: http://server.exemple.com/application/dialogue/abc

有关类似内容,请参阅this cookbook entry