Приветственные сообщения - это круто, но они не обязательно вам нужны. В моем случае у меня есть несколько диалогов, с MainDialog, который должен вызывать другие диалоги.
У меня проблема (при использовании эмулятора бота), что пользователь должен что-то напечатать, прежде чем будет запущен главный диалог.
Не можем ли мы вызвать диалог при добавлении членов? Спасибо за чтение :). Вот весь мой класс:
этот код бота, полученный из примера richcardsbot здесь :
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using HackBot.Dialogs;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using Microsoft.BotBuilderSamples.Bots;
using Microsoft.Extensions.Logging;
namespace HackBot.Bots
{
public class RichCardsBot : DialogBot<MainDialog>
{
public RichCardsBot(ConversationState conversationState, UserState userState, MainDialog dialog, ILogger<DialogBot<MainDilaog>> logger)
: base(conversationState, userState, dialog, logger)
{
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
var attachments = new List<Attachment>();
// 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 reply = MessageFactory.Attachment(attachments);
//var reply= MessageFactory.Text("The following flight has been cancelled ."
// + " You have a Hotel booking for the Destination."
// + "what would you like to do with the booking ?.");
reply.Attachments.Add(Cards.FirstCard().ToAttachment());
await turnContext.SendActivityAsync(reply, cancellationToken);
}
}
}
}
}