重复上一句
Repeat last sentence
我正在使用 actions-on-google 和 Dialogflow 构建一个机器人。
我想知道如何在用户询问时轻松重复最后一句话 ("repeat please")。
一种方法是在 Dialogflow 中重复后续意图,但这相当繁重,因为 :
- 你需要在每个intent后面加一个,我有很多
- 在多用户环境中,您需要跟踪每个用户的最后一句话 ...
有谁知道如何做到这一点?
从广义上讲,最好的方法是利用 Dialogflow Contexts。在发送消息时,您还可以将该消息添加到上下文中(例如,您可以将其命名为 "last_message")。然后,您可以让另一个 Intent 将 "last_message" 上下文作为输入上下文,如果触发,则使用上下文中保存的值重复它。
@SysCoder 有一个 package 可以帮助你为 node.js 做到这一点。
澄清
这假定您通过履行生成响应。在这种情况下,将您发回的消息保存在两个地方而不是一个地方应该相当容易。 voice-repeater or multivocal 之类的库可以为您处理大部分此类事务,但您自己也不难处理。
如果您通过 GUI 的“响应”部分处理所有回复,那么此方法将不起作用。
取一个通用变量并将所有意图的响应保存到其中,并进行意图重复,其响应就是该通用变量。
let prevSpeech = '';
app.intent('Default Welcome Intent', (conv) => {
const speech =`Welcome to My world`;
conv.ask(new SimpleResponse({
speech:speech,
text: `Welcome to my world`,
}));
prevSpeech = speech;
});
app.intent('Repeat', (conv) => {
conv.ask(new SimpleResponse({
speech:prevSpeech,
text: prevSpeech
}));
});
我正在使用 actions-on-google 和 Dialogflow 构建一个机器人。
我想知道如何在用户询问时轻松重复最后一句话 ("repeat please")。
一种方法是在 Dialogflow 中重复后续意图,但这相当繁重,因为 :
- 你需要在每个intent后面加一个,我有很多
- 在多用户环境中,您需要跟踪每个用户的最后一句话 ...
有谁知道如何做到这一点?
从广义上讲,最好的方法是利用 Dialogflow Contexts。在发送消息时,您还可以将该消息添加到上下文中(例如,您可以将其命名为 "last_message")。然后,您可以让另一个 Intent 将 "last_message" 上下文作为输入上下文,如果触发,则使用上下文中保存的值重复它。
@SysCoder 有一个 package 可以帮助你为 node.js 做到这一点。
澄清
这假定您通过履行生成响应。在这种情况下,将您发回的消息保存在两个地方而不是一个地方应该相当容易。 voice-repeater or multivocal 之类的库可以为您处理大部分此类事务,但您自己也不难处理。
如果您通过 GUI 的“响应”部分处理所有回复,那么此方法将不起作用。
取一个通用变量并将所有意图的响应保存到其中,并进行意图重复,其响应就是该通用变量。
let prevSpeech = '';
app.intent('Default Welcome Intent', (conv) => {
const speech =`Welcome to My world`;
conv.ask(new SimpleResponse({
speech:speech,
text: `Welcome to my world`,
}));
prevSpeech = speech;
});
app.intent('Repeat', (conv) => {
conv.ask(new SimpleResponse({
speech:prevSpeech,
text: prevSpeech
}));
});