c# - 在 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
解决方案
推荐阅读
- dotnetnuke - 如何在调度程序的 DoWork() 方法中检索 DNN ModuleSetting 或 TabSetting?
- wordpress - Wordpress wp-content 插件不是管理员 add_menu_page
- html - 如何将网站背景设置为模糊的视频?
- javascript - 反应映射功能没有返回任何东西
- c# - Microsoft Graph 和 WPF 用户身份验证 - 自定义登录表单
- javascript - `document.documentElement` 的 offsetHeight 行为不同
- php - 从表中访问用户配置文件
- javascript - 如何计算几个总金额的总和?
- java - 从资源中读取文件 - 路径必须存在:/app/app.jar!/BOOT-INF/classes!/features/
- php - 419 页面在 laravel 5.7 中过期