通过Webhook发送FulfillmentMessage和FollowupEventInput

时间:2019-10-24 11:45:41

标签: java dialogflow

在我的第一个Dialogflow项目中,在某些方面,我必须发送一些响应,然后直接转到另一个意图(也发送文本)。

我尝试使用Webhook发送该消息并使用以下代码进行FollowupEventInput。

        final SessionName sessionName = SessionName.parse(webhookRequest.getSession());
        final WebhookResponse.Builder builder = WebhookResponse.newBuilder()
                .addFulfillmentMessages(
                        Intent.Message.newBuilder().setText(Intent.Message.Text.newBuilder()
                                .addText("This is the text I want to send.")
                                .build()))
                .addOutputContexts(
                        Context.newBuilder().setName(ContextName.of(sessionName.getProject(), sessionName.getSession(), "Oilchange-haventchecked-followup").toString()
                        ).setLifespanCount(1)
                                .build())
                .setFollowupEventInput(EventInput.newBuilder().setName("StandstillQuestion").setLanguageCode("en"));
        return builder.build();
        }

预期结果将是:

机器人:这是我要发送的文字。

机器人:这是下一个意图的文字

我得到的结果:

机器人:这是下一个意图的文字

此后,我研究了问题所在,并提出了this stackoverlow问题,在那里提出了基本相同的问题(但在Python中)。 这个问题没有合适的答案。 所以我决定再问一次。

我该如何解决?

我不能简单地将文本从一个意图添加到另一个意图,因为有多个意图必须直接指向第二个意图。

1 个答案:

答案 0 :(得分:0)

这是预期的行为,因为当您设置跟进事件时,它基本上会告诉dialogflow触发另一个工作流程。但是要解决此问题,您想做的是在设置跟进事件时,还用第一句话和第二句话一起设置上下文。然后,在实现您的跟进意图时,请检查该上下文是否已设置并具有任何值,如果确实如此,则也要这样说。