首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Bot框架:处理用户发送多条连续消息

问Azure Bot框架:处理用户发送多条连续消息
EN

Stack Overflow用户
提问于 2018-07-23 18:54:54
回答 1查看 332关注 0票数 0

有没有办法让我的机器人处理从用户接收多条消息?例如,我(机器人)要求用户输入一些信息,而该用户不是只发送一条包含我需要的信息的消息,而是在3条多条消息中发送。

按照我现在开发的机器人的方式,它将第一条消息作为答案处理,并将下一条消息作为以下问题的答案进行处理。

我希望它的工作方式是让机器人“等待”用户发送每条消息,可能在每条消息后等待几秒钟以检查没有收到新的消息,然后将它们作为一条消息加入并处理。

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 10:19:52

这是可能的,但我不认为这是开发机器人时推荐的做法。

原因是很难跟踪您现在正在接收的是哪条消息,除非您使用PrivateConversationData记录它

一些psuedo代码:

代码语言:javascript
复制
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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51477146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档