private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { // Handle conversation state changes, like members being added and removed // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info // Not available in all channels // This method gets invoked when somebody establishes a conversation with your bot // You can add an introduction here or just say Hello World! IConversationUpdateActivity update = message; var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials()); foreach (var newMember in update.MembersAdded) { if (newMember.Id != message.Recipient.Id) { var reply = message.CreateReply(); reply.Text = $"Hello World!"; client.Conversations.ReplyToActivityAsync(reply); } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing that the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
/// <summary> /// Invoke when a conversation update activity is received from the channel. /// </summary> /// <param name="turnContext">Context object containing information cached for a single turn of conversation with a user.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns>A task that represents the work queued to execute.</returns> /// <remarks> /// Reference link: https://docs.microsoft.com/en-us/dotnet/api/microsoft.bot.builder.teams.teamsactivityhandler.onconversationupdateactivityasync?view=botbuilder-dotnet-stable. /// </remarks> protected override async Task OnConversationUpdateActivityAsync( ITurnContext <IConversationUpdateActivity> turnContext, CancellationToken cancellationToken) { try { turnContext = turnContext ?? throw new ArgumentNullException(nameof(turnContext)); this.RecordEvent(nameof(this.OnConversationUpdateActivityAsync), turnContext); IConversationUpdateActivity activity = turnContext.Activity; this.logger.LogInformation("Received conversationUpdate activity."); this.logger.LogInformation($"conversationType: {activity.Conversation.ConversationType}, membersAdded: {activity.MembersAdded?.Count}, membersRemoved: {activity.MembersRemoved?.Count}"); if (activity.MembersAdded?.Count == 0) { this.logger.LogInformation("Ignoring conversationUpdate that was not a membersAdded event."); return; } switch (activity.Conversation.ConversationType) { case PersonalConversationType: await ActivityHelper.OnMembersAddedToPersonalChatAsync(membersAdded : activity.MembersAdded, turnContext : turnContext, logger : this.logger, appBaseUrl : this.appBaseUrl, this.localizer); return; case ChannelConversationType: await ActivityHelper.OnMembersAddedToTeamAsync(membersAdded : activity.MembersAdded, turnContext : turnContext, microsoftAppCredentials : this.microsoftAppCredentials, logger : this.logger, appBaseUrl : this.appBaseUrl, localizer : this.localizer, cancellationToken : cancellationToken); return; default: throw new InvalidOperationException("Unexpected operation. Expected conversation type."); } } catch (Exception ex) { this.logger.LogError(ex, $"Error processing conversationUpdate: {ex.Message}", SeverityLevel.Error); throw; } }
private UserDataEntity ParseData(IConversationUpdateActivity activity, string partitionKey) { var rowKey = activity?.From?.AadObjectId; if (rowKey == null) { throw new ArgumentNullException(nameof(activity)); } return(new UserDataEntity { PartitionKey = partitionKey, RowKey = activity?.From?.AadObjectId, AadId = activity?.From?.AadObjectId, UserId = activity?.From?.Id, ConversationId = partitionKey.Equals(UserDataTableNames.UserDataPartition) ? activity?.Conversation?.Id : null, ServiceUrl = activity?.ServiceUrl, TenantId = activity?.Conversation?.TenantId, Email = "Email1: " + activity?.From?.Name, }); }
/// <summary> /// User(s) join or left a conversation /// </summary> /// <param name="connector"></param> /// <param name="activity"></param> /// <returns></returns> async Task HandleConversationUpdateAsync(ConnectorClient connector, IConversationUpdateActivity activity) { const string welcomeMessage = "Welcome to the Rock, Paper, Scissors game! " + "To begin, type \"rock\", \"paper\", or \"scissors\". "; Func <ChannelAccount, bool> isChatbot = channelAcct => channelAcct.Id == activity.Recipient.Id; //It works only when user join conversation if (activity.MembersAdded.Any(isChatbot)) { Activity reply = (activity as Activity).CreateReply(welcomeMessage); await connector.Conversations.ReplyToActivityAsync(reply); } //It works only when user left conversation if (activity.MembersRemoved.Any(isChatbot)) { //To be determined. } }
private static TeamDataEntity ParseTeamData(IConversationUpdateActivity activity) { var channelData = activity.GetChannelData <TeamsChannelData>(); if (channelData != null) { var teamsDataEntity = new TeamDataEntity { PartitionKey = PartitionKeyNames.TeamDataTable.TeamDataPartition, RowKey = channelData.Team.Id, TeamId = channelData.Team.Id, Name = channelData.Team.Name, ServiceUrl = activity.ServiceUrl, TenantId = channelData.Tenant.Id, }; return(teamsDataEntity); } return(null); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { var reply = message.CreateReply("Hello! I am JobBot.\nHere to assist you find the job you desire."); ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty <ChannelAccount>()) { // when the bot is added, then if (member.Id == iConversationUpdated.Recipient.Id) { connector.Conversations.ReplyToActivityAsync(reply); //sends async message } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { if (activity.Type == ActivityTypes.Message) { if (activity.Text.Contains("speaker") || activity.Text.Contains("whois")) { var client = new ConnectorClient(new Uri(activity.ServiceUrl), new MicrosoftAppCredentials()); await client.Conversations.SendToConversationAsync(await new UserInfoCard().GetUserInfoCardAsync(activity)); } else { await Conversation.SendAsync(activity, () => new Dialogs.RootDialog()); } } else if (activity.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity conversationUpdate = activity; var client = new ConnectorClient(new Uri(activity.ServiceUrl), new MicrosoftAppCredentials()); if (activity.MembersAdded != null) { activity .MembersAdded .Where(newMember => newMember.Id != activity.Recipient.Id) .ToList() .ForEach(newMember => { var reply = activity.CreateReply(); reply.Text = $"Welcome {newMember.Name}!. I'm CodeEurope Bot. \n How can I help you?"; client.Conversations.ReplyToActivityAsync(reply); }); } } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity update = message; var cliente = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials()); if (update.MembersAdded != null && update.MembersAdded.Any()) { foreach (var nuevo in update.MembersAdded) { if (nuevo.Id != message.Recipient.Id) { var reply = message.CreateReply(); reply.Text = "Hola " + nuevo.Name + ". Aquí econtraras muchas peliculas, puedo ayudarte a encontralas."; cliente.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private async Task HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { // Handle conversation state changes, like members being added and removed // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info // Not available in all channels IConversationUpdateActivity update = message; if (update.MembersAdded.Any()) { foreach (var newMember in update.MembersAdded) { // the bot is always added as a user of the conversation, since we don't // want to display the message twice ignore the conversation update triggered by the bot if (newMember.Id == message.Recipient.Id) { await SendGreetingMessage(message); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } }
private static UserDataEntity ParseUserData(IConversationUpdateActivity activity) { var rowKey = activity?.From?.AadObjectId; if (rowKey != null) { var userDataEntity = new UserDataEntity { PartitionKey = UserDataTableNames.UserDataPartition, RowKey = activity?.From?.AadObjectId, AadId = activity?.From?.AadObjectId, UserId = activity?.From?.Id, ConversationId = activity?.Conversation?.Id, ServiceUrl = activity?.ServiceUrl, TenantId = activity?.Conversation?.TenantId, }; return(userDataEntity); } return(null); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); foreach (var member in iConversationUpdated.MembersAdded ?? Array.Empty <ChannelAccount>()) { if (member.Id == iConversationUpdated.Recipient.Id) { var reply = ((Activity)iConversationUpdated).CreateReply($"Hallo! \n\nWie kann ich behilflich sein? \n\n \n\nGeben Sie jederzeit 'Hilfe' ein, um weitere Hinweise zu bekommen."); connector.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); foreach (var member in iConversationUpdated.MembersAdded ?? Array.Empty <ChannelAccount>()) { if (member.Id == iConversationUpdated.Recipient.Id) { var reply = ((Activity)iConversationUpdated).CreateReply($"**Hallo und herzlich willkommen** beim digitalen Assistenten der Stadt Dorsten! \n\nBitte schreiben Sie mir eine Nachricht, um den Chat zu beginnen!"); connector.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
protected override async Task OnMembersAddedAsync(IList <ChannelAccount> membersAdded, ITurnContext <IConversationUpdateActivity> turnContext, CancellationToken cancellationToken) { IConversationUpdateActivity iConversationUpdated = turnContext.Activity as IConversationUpdateActivity; foreach (var member in membersAdded) { if (member.Id != turnContext.Activity.Recipient.Id) { var card = new HeroCard { Title = "Welcome to WeatherBot", Text = @"Type the city name for get the weather report", Images = new List <CardImage>() { new CardImage(ImageToBase64(_images[0])) }, }; await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()), cancellationToken); } } }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity update = message; var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials()); if (update.MembersAdded != null && update.MembersAdded.Any()) { foreach (var newMember in update.MembersAdded) { if (newMember.Id != message.Recipient.Id) { var reply = message.CreateReply(); reply.Text = $"Bienvenue {newMember.Name}! Je suis Boby, un chatbot démonstrateur. Tu peux me parler de tout et de rien, mais n'oublie pas que je suis nouveau ici :) "; client.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { // Handle conversation state changes, like members being added and removed // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info // Not available in all channels IConversationUpdateActivity update = message; if (update.MembersAdded != null && update.MembersAdded.Any(m => m.Id != update.Recipient.Id)) { var member = update.MembersAdded.First(); var connector = new ConnectorClient(new Uri(update.ServiceUrl)); var reply = message.CreateReply($"Hello World Bot Framework {member.Name}!"); connector.Conversations.ReplyToActivityAsync(reply); } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private async Task <Activity> HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl)); foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty <ChannelAccount>()) { if (member.Id == iConversationUpdated.Recipient.Id) { var reply = message.CreateReply("I'm an IBotDataStore<BotData> example. I'll increment a number, stored in Private Conversation Data, every time you send me a message."); await connector.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private async Task <Activity> HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl)); foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty <ChannelAccount>()) { // if the bot is added, then if (member.Id == iConversationUpdated.Recipient.Id) { var reply = ((Activity)iConversationUpdated).CreateReply($"Hi! I'm Cosmo , your astronomy geek."); await connector.Conversations.ReplyToActivityAsync(reply); } } } } return(null); }
public override async Task OnConversationUpdate(IConversationUpdateActivity updateActivity) { var connector = updateActivity.CreateConnectorClient(); var activity = ((Activity)updateActivity); if (updateActivity.AreMembersAdded()) { var username = activity.MembersAdded[0].Name; var greeting = username != "You" ? $"Cześć, {username}! :)" : "Cześć! :)"; await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(greeting)); await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Jestem botem, który pomoże Ci monitorować poziom zanieczyszczenia powietrza. 🏭")); if (activity.From.Name != null) { await _accessor.EnsureUser(activity.ChannelId, activity.From.Id, activity.From.Name, activity.Conversation.Id); await OnMessage(activity); } } }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { switch (activity.Type) { case ActivityTypes.Message: await Conversation.SendAsync(activity, () => new Dialogs.RootLuisDialog()); break; case ActivityTypes.ConversationUpdate: IConversationUpdateActivity update = activity; using (var scope = Microsoft.Bot.Builder.Dialogs.Internals.DialogModule.BeginLifetimeScope(Conversation.Container, activity)) { var client = scope.Resolve <IConnectorClient>(); if (update.MembersAdded.Any()) { foreach (var newMember in update.MembersAdded) { if (newMember.Id != activity.Recipient.Id) { var reply = activity.CreateReply(); reply.Text = $"Olá {newMember.Name}! \n Qual produto você está interessado em comprar?"; await client.Conversations.ReplyToActivityAsync(reply); } } } } break; default: break; } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }
private async Task HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity; if (iConversationUpdated != null) { ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl)); foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty <ChannelAccount>()) { // if the bot is added, then if (member.Id == iConversationUpdated.Recipient.Id) { var reply = ((Activity)iConversationUpdated).CreateReply($"Hi! I'm a Weather Bot Example. Ask me about the weather in a city."); await connector.Conversations.ReplyToActivityAsync(reply); } } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } }
async Task HandleConversationUpdateAsync( ConnectorClient connector, IConversationUpdateActivity activity) { const string WelcomeMessage = "Welcome to the Rock, Paper, Scissors game! " + "To begin, type \"rock\", \"paper\", or \"scissors\". " + "Also, \"score\" will show scores and " + "delete will \"remove\" all your info."; Func <ChannelAccount, bool> isChatbot = channelAcct => channelAcct.Id == activity.Recipient.Id; if (activity.MembersAdded?.Any(isChatbot) ?? false) { Activity reply = (activity as Activity).CreateReply(WelcomeMessage); await connector.Conversations.ReplyToActivityAsync(reply); } if (activity.MembersRemoved?.Any(isChatbot) ?? false) { // to be determined } }
public async Task PostWelcomeMessage(IDialogContext Context, IMessageActivity Message) { IConversationUpdateActivity iConversationUpdated = Message as IConversationUpdateActivity; if (iConversationUpdated != null) { foreach (var Member in iConversationUpdated.MembersAdded ?? Array.Empty <ChannelAccount>()) { // This means the bot is being added. if (Member.Id == iConversationUpdated.Recipient.Id) { // Tell users what the bot does. var Hero = new HeroCard { Title = "Library Chat Bot", Subtitle = "", Text = "Hello! I am a bot designed to give you information on authors and books. Wyatt Fraley made me. Ask me anything you like!" }; await PostCard(Context, Hero); } } } }
async Task HandleConversationUpdateAsync( ConnectorClient connector, IConversationUpdateActivity activity) { const string WelcomeMessage = "Welcome to Meeting Scheduler! " + "Type \"register\" to get started. " + "After that, you can type \"appointment\" to add a new appointment, " + "\"venue\" to add a new venue, or \"schedule\" to schedule a new meeting."; Func <ChannelAccount, bool> isChatbot = channelAcct => channelAcct.Id == activity.Recipient.Id; if (activity.MembersAdded?.Any(isChatbot) ?? false) { Activity reply = (activity as Activity).CreateReply(WelcomeMessage); await connector.Conversations.ReplyToActivityAsync(reply); } if (activity.MembersRemoved?.Any(isChatbot) ?? false) { // to be determined } }
private UserDataEntity ParseData(IConversationUpdateActivity activity, string partitionKey) { var rowKey = activity?.From?.AadObjectId; if (rowKey == null) { throw new ArgumentNullException(nameof(activity)); } return(new UserDataEntity { PartitionKey = partitionKey, RowKey = activity?.From?.AadObjectId, AadId = activity?.From?.AadObjectId, UserId = activity?.From?.Id, ConversationId = partitionKey.Equals(UserDataTableNames.UserDataPartition) ? activity?.Conversation?.Id : null, ServiceUrl = activity?.ServiceUrl, TenantId = activity?.Conversation?.TenantId, // Setting this userType value as Member, since the guest userType is skipped. UserType = UserType.Member, }); }
/// <summary> /// Creates a response to welcoem new users /// </summary> /// <param name="message">Incoming text</param> /// <returns>A response to the new user, with their name</returns> private static async Task WelcomeNewUser(Activity message) { var client = new ConnectorClient(new Uri(message.ServiceUrl)); IConversationUpdateActivity update = message; if (update.MembersAdded.Any()) { var createReply = message.CreateReply(); var newMembers = update.MembersAdded?.Where(t => t.Id != message.Recipient.Id); // Welcome each new member foreach (var newMember in newMembers) { createReply.Text = "Welcome"; if (!string.IsNullOrEmpty(newMember.Name)) { createReply.Text += $" {newMember.Name}"; } createReply.Text += "!"; await client.Conversations.ReplyToActivityAsync(createReply); } } }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { // Handle conversation state changes, like members being added and removed // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info // Not available in all channels IConversationUpdateActivity conversationupdate = message; if (conversationupdate.MembersAdded.Any() && message.MembersAdded.Any(o => o.Id == "UserId")) // != ConfigurationManager.AppSettings["BotId"]))) { ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl)); Activity reply = message.CreateReply("Welcome. I'm a sample Themed Bot. " + YouCanAskMeMessage); connector.Conversations.ReplyToActivityAsync(reply); message.Type = ActivityTypes.Message; } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { var client = new ConnectorClient(new Uri(message.ServiceUrl)); IConversationUpdateActivity update = message; if (update.MembersAdded.Any()) { var reply = message.CreateReply(); var newMembers = update.MembersAdded?.Where(t => t.Id != message.Recipient.Id); foreach (var newMember in newMembers) { reply.Text = "Hey! I'm the NewsyBot, and can show you news from around the world. Don't worry if you don't speak the language, I'll translate it for you as well."; client.Conversations.ReplyToActivityAsync(reply); } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { // Handle add/remove from contact lists // Activity.From + Activity.Action represent what happened } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }
public virtual async Task <HttpResponseMessage> Post([FromBody] Activity activity) { var client = new ConnectorClient(new Uri(activity.ServiceUrl), new MicrosoftAppCredentials()); if (activity.Type == ActivityTypes.Message) { var typingActivity = activity.CreateReply(); typingActivity.Type = ActivityTypes.Typing; await client.Conversations.ReplyToActivityAsync(typingActivity); await Conversation.SendAsync(activity, () => new LuisDialog()); } else if (activity.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity update = activity; if (update.MembersAdded != null && update.MembersAdded.Any()) { foreach (var newMember in update.MembersAdded) { if (newMember.Id != activity.Recipient.Id) { var reply = activity.CreateReply(); reply.Text = $@"Hey there {newMember.Name}. Nice to meet you."; await client.Conversations.ReplyToActivityAsync(reply); } } } } else { HandleSystemMessage(activity); } return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted)); }
private void HandleSystemMessage(Activity message) { if (message.Type != ActivityTypes.ConversationUpdate) { return; } IConversationUpdateActivity update = message; var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials()); if (update.MembersAdded == null || !update.MembersAdded.Any()) { return; } foreach (var newMember in update.MembersAdded) { if (newMember.Id == message.Recipient.Id) { continue; } var reply = message.CreateReply(); reply.Text = $"Welcome {newMember.Name}! Enter a station name to get next 10 departures board."; client.Conversations.ReplyToActivityAsync(reply); } }
private Activity HandleSystemMessage(Activity message) { if (message.Type == ActivityTypes.DeleteUserData) { // Implement user deletion here // If we handle user deletion, return a real message } else if (message.Type == ActivityTypes.ConversationUpdate) { IConversationUpdateActivity update = message; using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var client = scope.Resolve <IConnectorClient>(); if (update.MembersAdded.Any()) { var reply = message.CreateReply(); reply.Text = $"Welcome, I am a account assistant bot, type help to get more information"; client.Conversations.ReplyToActivityAsync(reply); } } } else if (message.Type == ActivityTypes.ContactRelationUpdate) { } else if (message.Type == ActivityTypes.Typing) { // Handle knowing tha the user is typing } else if (message.Type == ActivityTypes.Ping) { } return(null); }