【发布时间】:2020-01-27 05:04:41
【问题描述】:
我使用 SDK v4 在 Visual Studio 2019 中创建了我的 C# 核心聊天机器人。聊天机器人会显示一张英雄卡以开始聊天。它在 Bot 模拟器和 azure 门户中运行良好,但是当使用 iframe 将其实现到网络聊天中时,它不会显示英雄卡。在传递一条消息后,它会显示英雄卡两次,或者如果我们传递英雄卡按钮值,那么它就会去随波逐流。我不知道为什么会发生这种情况,我是这个领域的初学者,这是我的第一个聊天机器人。谁能帮我找出问题所在。提前致谢
DialogAndWelcome Bot.cs 中的代码
namespace Welcome.Bots
public class DialogAndWelcomeBot<T> : DialogBot<T>
where T : Dialog
{
public DialogAndWelcomeBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
: base(conversationState, userState, dialog, logger)
{
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
// Greet anyone that was not the target (recipient) of this message.
// To learn more about Adaptive Cards, see https://aka.ms/msbot-adaptivecards for more details.
if (member.Id != turnContext.Activity.Recipient.Id)
{
var response = MessageFactory.Text("Hi , I’m Alexa. How could I help you");
await turnContext.SendActivityAsync(response, cancellationToken);
await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>("DialogState"), cancellationToken);
}
await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>("DialogState"), cancellationToken);
}
}
}
DialogBot.cs 中的代码
public DialogBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
{
ConversationState = conversationState;
UserState = userState;
Dialog = dialog;
Logger = logger;
}
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
await base.OnTurnAsync(turnContext, cancellationToken);
// Save any state changes that might have occured during the turn.
await ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
await UserState.SaveChangesAsync(turnContext, false, cancellationToken);
}
【问题讨论】:
-
您能否发布代码的相关部分?如果我们能看到你的所作所为,别人提出建议会容易得多。
-
编辑问题并重新发布。
标签: botframework chatbot