我的机器人有什么方法可以处理接收来自用户的多条消息?例如,我(机器人)要求用户输入一些信息,而该用户不是只发送一条包含我所需信息的消息,而是以3条多条消息的形式发送该消息。
我的机器人现在的开发方式是,它将第一条消息作为答案,并将下一条消息作为对以下问题的答案。
我希望它起作用的方式是使机器人“等待”用户发送每条消息,也许在每条消息之后等待几秒钟以检查是否收到新消息,然后将它们作为一个消息加入消息并处理。
答案 0 :(得分:1)
有可能,但我认为这不是开发机器人的推荐做法。
原因是很难跟踪您现在收到的消息,
除了您使用PrivateConversationData
一些伪代码:
await context.PostAsync("please reply 3 message");
context.Wait(ThreeMessageReceivedAsync);
private async Task ThreeMessageReceivedAsync(IDialogContext context,
IAwaitable<IMessageActivity> result)
{
context.PrivateConversationData.TryGetValue<string>("FirstMessage", out string firstMessage);
context.PrivateConversationData.TryGetValue<string>("SecondMessage", out string secondMessage);
context.PrivateConversationData.TryGetValue<string>("ThirdMessage", out string thirdMessage);
var message = await result;
if(string.IsNullOrEmpty(firstMessage))
{
context.PrivateConversationData.SetValue<string>("FirstMessage", message.Text);
context.Wait(ThreeMessageReceivedAsync);
}
else if(string.IsNullOrEmpty(secondMessage))
{
context.PrivateConversationData.SetValue<string>("SecondMessage", message.Text);
context.Wait(ThreeMessageReceivedAsync);
}
else if(string.IsNullOrEmpty(thirdMessage))
{
context.PrivateConversationData.SetValue<string>("ThirdMessage", message.Text);
// you have got all three message, do your logic to it
// if you want to join all three message, use variable firstMessage, secondMessage and message.Text for third
}
}
hope above helps.