首页 > 解决方案 > 在 Bot Framework 的对话框中发送多条消息

问题描述

我在 Bot Framework 中创建了一个具有以下方法的对话框:

它返回一些字符串数据存储在局部变量中,然后我在 stepContext.EndDialogAsync() 的帮助下发送到模拟器;

CreateAndSendMessage(stepContext, replyText, attachment, query, suggessionActions);
     CreateAndSendMessage(stepContext, dataState.allenNlpTitle, attachment, query, suggessionActions);
    
    return await stepContext.EndDialogAsync();

CreateAndSendMessage 方法具有以下代码:

在这里我创建提示选项并使用返回对话框的 stepContext.PromptAsync() 方法

private async void CreateAndSendMessage(WaterfallStepContext stepContext, string text, Attachment attachment, string queryText, List<CardAction> suggesstions)
            {
                bool isAttachment = false;
                List<CardAction> suggessionActions = new List<CardAction>();
                if (attachment.Content != null)
                {
                    isAttachment = true;
                }
                SPHelper spHelper = new SPHelper(_spService);
                var dataState = await DataStateAccessor.GetAsync(stepContext.Context);

                try
                {
                    if (suggesstions.Count == 0)
                    {
                        suggessionActions = spHelper.SuggessionSearch(dataState.suggestionsData, queryText, dataState);
                        if (suggessionActions.Count == 0)
                        {
                            suggessionActions = spHelper.SuggessionSearch(dataState.suggestionsData, string.Empty, dataState);
                        }
                    }
                    else
                    {
                        suggessionActions = suggesstions;
                    }
                }
                catch (Exception ex)
                {
                    //catch exception
                }
                var opts = new PromptOptions();
                if (isAttachment)
                {
                    opts = new PromptOptions
                    {
                        Prompt = new Activity
                        {
                            Type = ActivityTypes.Message,
                            Text = string.Empty,
                            SuggestedActions = new SuggestedActions() { Actions = suggessionActions },
                            Attachments = new List<Attachment>() { attachment }
                        }
                    };
                }
                else
                {
                    opts = new PromptOptions
                    {

                        Prompt = new Activity
                        {
                            Type = ActivityTypes.Message,
                            Text = text,
                            SuggestedActions = new SuggestedActions() { Actions = suggessionActions }
                        }
                    };

                }
                ```await stepContext.PromptAsync(NamePrompt, opts);```
        }

但是在 Bot Emulator 中收到了三个消息。虽然我只调用了两次方法,但我在模拟器中得到了三个响应。截图如下:

https://i.stack.imgur.com/okSd3.png https://i.stack.imgur.com/eF7Mt.png

标签: c#botframeworkbots

解决方案


推荐阅读