Я создал своего C# базового чата в Visual Studio 2019, используя SDK v4. Бот-чат отображает порядок карт героев, чтобы начать чат. Он отлично работает в эмуляторе ботов и на портале 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);
}