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.GetActivityType() == 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 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 cardText = await ScubaCardService.GetCardText("0-Welcome"); var reply = RootDialog.GetCardReply(message, cardText); 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); }
public static async Task <string> GetCardText(string cardName, Dictionary <string, string> replaceInfo = null) { string cardJson = await ScubaCardService.GetCardText(cardName); if (string.IsNullOrEmpty(cardJson)) { return(string.Empty); } if (replaceInfo == null) { return(cardJson); } foreach (var replaceKvp in replaceInfo) { cardJson = cardJson.Replace(replaceKvp.Key, replaceKvp.Value); } return(cardJson); }
private async Task <IMessageActivity> GetCard(Activity activity, string cardName) { var cardText = await ScubaCardService.GetCardText(cardName); return(GetCardReply(activity, cardText)); }