private IMessageActivity GetInstructionsCard(IDialogContext context) { var message = context.MakeMessage(); message.Attachments.Add(ResponseCards.GenerateInstructionsCard()); return(message); }
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; var client = new ConnectorClient(new Uri(message.ServiceUrl), new MicrosoftAppCredentials()); if (update.MembersAdded != null && update.MembersAdded.Any()) { foreach (var newMember in update.MembersAdded) { var reply = message.CreateReply(); if (newMember.Id != message.Recipient.Id) { reply.Text = $"Welcome {newMember.Name}!"; } else { reply.Attachments.Add(ResponseCards.GenerateInstructionsCard()); } await client.Conversations.ReplyToActivityAsync(reply); } } String replyMessage = string.Empty; } 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) { } }