通过 webhook 发送 FulfillmentMessage 和 FollowupEventInput
Send FulfillmentMessage and FollowupEventInput through webhook
在我的第一个 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();
}
预期结果为:
bot: 这是我要发送的文字
bot: 这是来自下一个意图的文本
我得到的结果:
bot: 这是来自下一个意图的文本
在那之后,我研究了问题所在并发现了 stackoverlow 问题,其中提出了基本相同的问题(但在 Python 中)。
这个问题没有合适的答案。
所以我决定再问一遍。
我该如何解决这个问题?
我不能简单地将文本从一个意图添加到另一个意图,因为有多个意图必须指向第二个意图。
这是预期的行为,因为当您设置后续事件时,它基本上会告诉 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();
}
预期结果为:
bot: 这是我要发送的文字
bot: 这是来自下一个意图的文本
我得到的结果:
bot: 这是来自下一个意图的文本
在那之后,我研究了问题所在并发现了
我该如何解决这个问题?
我不能简单地将文本从一个意图添加到另一个意图,因为有多个意图必须指向第二个意图。
这是预期的行为,因为当您设置后续事件时,它基本上会告诉 dialogflow 触发另一个工作流。但要解决此问题,您需要做的是在设置后续事件时,还为要用第二句话说的第一句话设置上下文。然后在实现您的后续意图时,检查该上下文是否已设置并具有任何值,如果有则也说明。