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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        private async Task <IMessageActivity> GetCard(Activity activity, string cardName)
        {
            var cardText = await ScubaCardService.GetCardText(cardName);

            return(GetCardReply(activity, cardText));
        }