Ejemplo n.º 1
0
        public virtual async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity activity)
        {
            if (activity != null)
            {
                switch (activity.GetActivityType())
                {
                case ActivityTypes.Message:



                    await Conversation.SendAsync(activity, () => new RootDialog(_userService));

                    //await Conversation.SendAsync(activity, MakeRootDialog);


                    break;

                case ActivityTypes.ConversationUpdate:
                case ActivityTypes.ContactRelationUpdate:
                case ActivityTypes.Typing:
                case ActivityTypes.DeleteUserData:
                default:
                    Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
                    break;
                }
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);

            return(response);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// POST: api/Messages
        /// receive a message from a user and send replies
        /// </summary>
        /// <param name="activity"></param>
        public virtual async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity activity)
        {
            if (activity != null)
            {
                // Check if activity is of type message
                if (activity.GetActivityType() == ActivityTypes.Message)
                {
                    await Conversation.SendAsync(activity, () => new RootDialog(appointment, shop));
                }
                else
                {
                    Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
                }


                // one of these will have an interface and process it
                //switch (activity.GetActivityType())
                //{
                //    case ActivityTypes.Message:
                //        await Conversation.SendAsync(activity, MakeRootDialog);
                //        break;

                //    case ActivityTypes.ConversationUpdate:
                //    case ActivityTypes.ContactRelationUpdate:
                //    case ActivityTypes.Typing:
                //    case ActivityTypes.DeleteUserData:
                //    default:
                //        Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
                //        break;
                //}
            }
            return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted));
        }
Ejemplo n.º 3
0
        /// <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.GetActivityType() == ActivityTypes.Message)
        //    {
        //        await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
        //    }
        //    else
        //    {
        //        HandleSystemMessage(activity);
        //    }
        //    var response = Request.CreateResponse(HttpStatusCode.OK);
        //    return response;
        //}

        private Microsoft.Bot.Connector.Activity HandleSystemMessage(Microsoft.Bot.Connector.Activity message)
        {
            string messageType = message.GetActivityType();

            if (messageType == ActivityTypes.DeleteUserData)
            {
                // Implement user deletion here
                // If we handle user deletion, return a real message
            }
            else if (messageType == 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
            }
            else if (messageType == ActivityTypes.ContactRelationUpdate)
            {
                // Handle add/remove from contact lists
                // Activity.From + Activity.Action represent what happened
            }
            else if (messageType == ActivityTypes.Typing)
            {
                // Handle knowing that the user is typing
            }
            else if (messageType == ActivityTypes.Ping)
            {
            }

            return(null);
        }
Ejemplo n.º 4
0
        public virtual async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity activity)
        {
            try
            {
                if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
                {
                    // Get and process
                    IMessageActivity message = activity.AsMessageActivity();

                    ActivityRequest request = new ActivityRequest(
                        recipient: message.Recipient.Name,
                        text: message.Text,
                        from: message.From.Name,
                        fromId: message.From.Id,
                        channelId: message.ChannelId,
                        conversationId: message.Conversation.Id,
                        isGroup: message.Conversation.IsGroup,
                        attachments: message.Attachments?.Select(
                            attachment => new AttachmentRequest(attachment.ContentUrl, attachment.ContentType)
                            ));

                    ActivityResponse response = await this.ActivityProcessor.ProcessActivityAsync(this.Store, request).ConfigureAwait(false);

                    // Reply (on a new network connection) back.
                    Microsoft.Bot.Connector.Activity reply = activity.CreateReply();
                    reply.Text = response.Text;
                    foreach (AttachmentResponse attachment in response.Attachments)
                    {
                        reply.Attachments.Add(new Attachment(attachment.ContentType, attachment.ContentUrl, null, attachment.Name));
                    }

                    // Send it either as a group message or individually, depending on how we received the message,
                    using (ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)))
                    {
                        if (message.Conversation.IsGroup.HasValue && message.Conversation.IsGroup.Value)
                        {
                            await connector.Conversations.SendToConversationAsync(reply);
                        }
                        else
                        {
                            await connector.Conversations.ReplyToActivityAsync(reply);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)))
                {
                    Microsoft.Bot.Connector.Activity reply = activity.CreateReply();
                    reply.Text = ex.Message + " " + ex.StackTrace;
                    await connector.Conversations.ReplyToActivityAsync(reply);
                }
            }

            // We always accept the message and send the response using the bot framework on another channel.
            return(new HttpResponseMessage(HttpStatusCode.Accepted));
        }
Ejemplo n.º 5
0
 public async Task <IHttpActionResult> Post([FromBody] Activity activity)
 {
     // check if activity is of type message
     if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
     {
         await Conversation.SendAsync(activity, () => new RootDialog());
     }
     else
     {
         HandleSystemMessage(activity);
     }
     return(Ok());
 }
Ejemplo n.º 6
0
 public virtual async Task <HttpResponseMessage> Post([FromBody] Activity activity)
 {
     // check if activity is of type message
     if (activity.GetActivityType() == ActivityTypes.Message)
     {
         await Conversation.SendAsync(activity, () => new RootDialog());
     }
     else
     {
         HandleSystemMessage(activity);
     }
     return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted));
 }
Ejemplo n.º 7
0
        public virtual async Task <IActionResult> Post([FromBody] Activity activity)
        {
            if (activity != null)
            {
                // one of these will have an interface and process it
                switch (activity.GetActivityType())
                {
                case ActivityTypes.Message:
                    await Conversation.SendAsync(activity, () => new EchoDialog());

                    break;

                case ActivityTypes.ConversationUpdate:
                case ActivityTypes.ContactRelationUpdate:
                case ActivityTypes.Typing:
                case ActivityTypes.DeleteUserData:
                default:
                    Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
                    break;
                }
            }
            return(StatusCode((int)HttpStatusCode.Accepted));
        }
        /// <summary>
        /// Handles activity of all types except for messages
        /// TODO: Note sure why / how this function ever gets called
        /// </summary>
        /// <param name="activity"></param>
        private async void HandleSystemMessage(Activity activity)
        {
            if (activity == null)
            {
                return;
            }

            switch (activity.Type)
            {
            case ActivityTypes.Message:
                await PostMessage(activity);

                break;

            case ActivityTypes.DeleteUserData:
                // Implement user deletion here
                // If we handle user deletion, return a real activity
                break;

            case 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
                await WelcomeNewUser(activity);

                break;

            case ActivityTypes.ContactRelationUpdate:
                // Handle add/remove from contact lists
                // Activity.From + Activity.Action represent what happened
                break;

            case ActivityTypes.Typing:
                // Handle knowing tha the user is typing
                await ResponseTyping(activity);

                break;

            case ActivityTypes.Ping:
                await ResponsePing(activity);

                break;

            default:
                Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}");
                break;
            }
        }
        /// <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.GetActivityType())
            {
            // all messages pass through one dialog for now
            case ActivityTypes.Message:
                LuisModelAttribute attr    = new LuisModelAttribute(ConfigurationManager.AppSettings[Constants.LuisModelIdKey], ConfigurationManager.AppSettings[Constants.LuisSubscriptionKey]);
                LuisService        luisSvc = new LuisService(attr);
                await Conversation.SendAsync(activity, () => new GitHubLuisDialog(luisSvc));

                break;

            // send a "hello" to someone who just joined the conversation (not all channels support this)
            case ActivityTypes.ConversationUpdate:
                IConversationUpdateActivity update = activity;
                using (ILifetimeScope scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
                {
                    IConnectorClient client = scope.Resolve <IConnectorClient>();
                    if (update.MembersAdded.Any())
                    {
                        Activity reply = activity.CreateReply();
                        IEnumerable <ChannelAccount> newMembers = update.MembersAdded?.Where(t => t.Id != activity.Recipient.Id);
                        foreach (var newMember in newMembers)
                        {
                            reply.Text = Constants.DemoText + $"Welcome {newMember.Name}! I can help you with getting information about your GitHub repos.";

                            IBotData data = scope.Resolve <IBotData>();
                            await data.LoadAsync(CancellationToken.None);

                            if (data.UserData.ContainsKey(Constants.AuthTokenKey))
                            {
                                reply.Text += " It looks like you're already logged in, so what can I help you with?";
                            }
                            else
                            {
                                reply.Text += " To get started, type **login** to authorize me to talk to GitHub on your behalf, or type **help** to get more information.";
                            }

                            await client.Conversations.ReplyToActivityAsync(reply);
                        }
                    }
                }
                break;
            }

            return(new HttpResponseMessage(HttpStatusCode.Accepted));
        }
 public virtual async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity activity)
 {
     // check if activity is of type message
     if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
     {
         BotDbAnalytics.AddSession(
             activity.ChannelId,
             activity.Conversation.Id,
             DateTime.UtcNow,
             activity.Locale);
         await Conversation.SendAsync(activity, () => new ViaSportDialog());
     }
     else
     {
         HandleSystemMessage(activity);
     }
     return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted));
 }
Ejemplo n.º 11
0
        public async Task <object> Post([FromBody] Activity activity)
        {
            try
            {
                // Initialize the azure bot
                using (BotService.Initialize())
                {
                    // BotBuilder insists on getting from the default config - this overrides it
                    Conversation.UpdateContainer(b =>
                    {
                        b.RegisterInstance(new MicrosoftAppCredentials(
                                               Config.GetAppSetting("MicrosoftAppId"),
                                               Config.GetAppSetting("MicrosoftAppPassword")
                                               ));
                    });
                    // use this to check what the registered value is
                    // ((MicrosoftAppCredentials)(Conversation.Container.ComponentRegistry.TryGetRegistration(new Autofac.Core.TypedService(typeof(MicrosoftAppCredentials)), out var xxx) ? Conversation.Container.ResolveComponent(xxx, new Autofac.Core.Parameter[0]) : null)).MicrosoftAppId

                    // Deserialize the incoming activity
                    //string jsonContent = await req.Content.ReadAsStringAsync();
                    //var activity = JsonConvert.DeserializeObject<Activity>(jsonContent);

                    // authenticate incoming request and add activity.ServiceUrl to MicrosoftAppCredentials.TrustedHostNames
                    // if request is authenticated
                    var authHeader    = this.Request.Headers.GetCommaSeparatedValues(HeaderNames.Authorization);
                    var authParts     = authHeader[0].Split(new[] { ' ' }, 2);
                    var identityToken = await BotService.Authenticator.TryAuthenticateAsync(authParts[0], authParts[1], CancellationToken.None);

                    if (null == identityToken || !identityToken.Authenticated)
                    {
                        this.Response.Headers.Add("WWW-Authenticate", $"Bearer realm=\"{Request.Host}\"");
                        return(Unauthorized());
                    }
                    identityToken.ValidateServiceUrlClaim(new[] { activity });
                    MicrosoftAppCredentials.TrustServiceUrl(activity.ServiceUrl);

                    if (activity != null)
                    {
                        // one of these will have an interface and process it
                        switch (activity.GetActivityType())
                        {
                        case ActivityTypes.Message:
                            var text = activity.AsMessageActivity().Text ?? "";
                            Trace.WriteLine($"Recieved message: '{text}' from {activity.From.Id}/{activity.From.Name} on {activity.ChannelId}/{activity.Conversation.IsGroup.GetValueOrDefault()}");
                            Trace.WriteLine($"  ChannelData: {(activity.ChannelData as JObject)}");
                            Trace.WriteLine($"  Conversation: {activity.Conversation.ConversationType}, id: {activity.Conversation.Id}, name: {activity.Conversation.Name}, role: {activity.Conversation.Role}, properties: {activity.Conversation.Properties}");
                            Trace.WriteLine($"  From: {activity.From.Id}/{activity.From.Name}, role: {activity.From.Role}, properties: {activity.From.Properties}");
                            Trace.WriteLine($"  Recipient: {activity.Recipient.Id}/{activity.Recipient.Name}, role: {activity.Recipient.Role}, properties: {activity.Recipient.Properties}");
                            if (text.Contains("</at>") && activity.ChannelId == "msteams")
                            {
                                // ignore the mention of us in the reply
                                text = new Regex("<at>.*</at>").Replace(text, "").Trim();
                            }

                            if (activity.ChannelId == "slack")
                            {
                                var mentions = activity.Entities.Where(i => i.Type == "mention").Select(i =>
                                                                                                        i.Properties.ToAnonymousObject(new
                                {
                                    mentioned = new { id = "", name = "" },
                                    text      = ""
                                }))
                                               .ToList();

                                // ignore any group messages that don't mention us
                                if (activity.Conversation.IsGroup.GetValueOrDefault() &&
                                    !mentions.Any(i => i.mentioned.name == activity.Recipient.Name))
                                {
                                    break;
                                }

                                // filter out any mentions - we don't really care about them...
                                foreach (var mention in mentions)
                                {
                                    if (!string.IsNullOrEmpty(mention.text))
                                    {
                                        text = text.Replace(mention.text, "");
                                    }
                                }

                                // set up the conversation so we'll be in the thread
                                string thread_ts = ((dynamic)activity.ChannelData)?.SlackMessage?.@event?.thread_ts;
                                string ts        = ((dynamic)activity.ChannelData)?.SlackMessage?.@event?.ts;
                                if (string.IsNullOrEmpty(thread_ts) && !string.IsNullOrEmpty(ts) && activity.Conversation.Id.Split(':').Length == 3)
                                {
                                    // this is a main-channel conversation - pretend it came in on a thread
                                    activity.Conversation.Id += $":{ts}";
                                    Trace.WriteLine($"  Modified Conversation: {activity.Conversation.ConversationType}, id: {activity.Conversation.Id}, name: {activity.Conversation.Name}, role: {activity.Conversation.Role}, properties: {activity.Conversation.Properties}");
                                }
                            }

                            activity.AsMessageActivity().Text = text.Trim();

                            Trace.WriteLine($"Processing message: '{text}' from {activity.From.Id}/{activity.From.Name} on {activity.ChannelId}/{activity.Conversation.IsGroup.GetValueOrDefault()}");
                            await Conversation.SendAsync(activity, () => new ExceptionHandlerDialog <object>(new BotDialog(Request.GetRequestUri()), true));

                            break;

                        case ActivityTypes.ConversationUpdate:
                            var client = new ConnectorClient(new Uri(activity.ServiceUrl), new MicrosoftAppCredentials(
                                                                 Config.GetAppSetting("MicrosoftAppId"),
                                                                 Config.GetAppSetting("MicrosoftAppPassword")
                                                                 ));
                            IConversationUpdateActivity update = activity;
                            if (update.MembersAdded?.Any() ?? false)
                            {
                                var reply      = activity.CreateReply();
                                var newMembers = update.MembersAdded?.Where(t => t.Id != activity.Recipient.Id);
                                foreach (var newMember in newMembers)
                                {
                                    reply.Text = "Welcome";
                                    if (!string.IsNullOrEmpty(newMember.Name))
                                    {
                                        reply.Text += $" {newMember.Name}";
                                    }
                                    reply.Text += ", this is a bot from Rightpoint Labs Beta - say 'info' for more.";
                                    await client.Conversations.ReplyToActivityAsync(reply);
                                }
                            }
                            break;

                        case ActivityTypes.ContactRelationUpdate:
                        case ActivityTypes.Typing:
                        case ActivityTypes.DeleteUserData:
                        case ActivityTypes.Ping:
                        default:
                            Trace.WriteLine($"Unknown activity type ignored: {activity.GetActivityType()}");
                            break;
                        }
                    }
                    return(Accepted());
                }
            }
            catch (Exception ex)
            {
                TelemetryClient.TrackException(ex);
                throw;
            }
        }
Ejemplo n.º 12
0
        public virtual async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity message)
        {
            ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl));

            IBotDataStore <BotData> dataStore = botStateStore;

            storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("piglatinbotsjameslew_AzureStorageConnectionString"));
            botStateStore  = new TableBotDataStore(storageAccount, "botdata");

            Microsoft.Bot.Connector.Activity replyMessage = message.CreateReply();
            replyMessage.Locale     = "en-Us";
            replyMessage.TextFormat = TextFormatTypes.Plain;

            if (message.GetActivityType() != ActivityTypes.Message)
            {
                replyMessage = await handleSystemMessagesAsync(message, connector, botStateStore);

                if (replyMessage != null)
                {
                    var reply = await connector.Conversations.ReplyToActivityAsync(replyMessage);
                }
            }
            else
            {
                if (message.Text.Contains("MessageTypesTest"))
                {
                    Microsoft.Bot.Connector.Activity mtResult = await messageTypesTest(message, connector);

                    await connector.Conversations.ReplyToActivityAsync(mtResult);
                }
                else if (message.Text.Contains("DataTypesTest"))
                {
                    Microsoft.Bot.Connector.Activity dtResult = await dataTypesTest(message, connector, botStateStore);

                    await connector.Conversations.ReplyToActivityAsync(dtResult);
                }
                else if (message.Text.Contains("CardTypesTest"))
                {
                    Microsoft.Bot.Connector.Activity ctResult = await cardTypesTest(message, connector);

                    await connector.Conversations.ReplyToActivityAsync(ctResult);
                }

                try
                {
                    if (await isNewUser(message.From.Id, message, botStateStore))
                    {
                        Microsoft.Bot.Connector.Activity introMessage = message.CreateReply();
                        introMessage.Locale     = "en-Us";
                        introMessage.TextFormat = TextFormatTypes.Plain;
                        introMessage.InputHint  = InputHints.IgnoringInput;

                        introMessage.Text = string.Format(translateToPigLatin("Hey there, I'm PigLatinBot. I make intelligible text unintelligible.  Ask me how by typing 'Help', and for terms and info, click ") + "[erehay](http://www.piglatinbot.com)", message.From.Name);
                        var reply = await connector.Conversations.ReplyToActivityAsync(introMessage);
                    }
                    replyMessage.InputHint = InputHints.AcceptingInput;
                    replyMessage.Speak     = message.Text;
                    replyMessage.Text      = translateToPigLatin(message.Text);
                    var httpResponse = await connector.Conversations.ReplyToActivityAsync(replyMessage);
                }
                catch (HttpResponseException e)
                {
                    Trace.WriteLine(e.Message);
                    var Response = Request.CreateResponse(HttpStatusCode.InternalServerError);
                    return(Response);
                }
            }
            var responseOtherwise = Request.CreateResponse(HttpStatusCode.OK);

            return(responseOtherwise);
        }
Ejemplo n.º 13
0
        private async Task <Microsoft.Bot.Connector.Activity> handleSystemMessagesAsync(Microsoft.Bot.Connector.Activity message, ConnectorClient connector, TableBotDataStore botStateStore)
        {
            Microsoft.Bot.Connector.Activity replyMessage = message.CreateReply();
            message.Locale = "en";
            IBotDataStore <BotData> dataStore = botStateStore;

            switch (message.GetActivityType())
            {
            case ActivityTypes.DeleteUserData:
                //In this case the DeleteUserData message comes from the user so we can clear the data and set it back directly

                BotData currentBotData = (BotData)await dataStore.LoadAsync(new Address(message.Recipient.Id, message.ChannelId, message.From.Id, message.Conversation.Id, message.ServiceUrl), BotStoreType.BotUserData, default(CancellationToken));

                pigLatinBotUserData deleteUserData = new pigLatinBotUserData();
                currentBotData.SetProperty("v1", deleteUserData);
                await dataStore.SaveAsync(new Address(message.Recipient.Id, message.ChannelId, message.From.Id, message.Conversation.Id, message.ServiceUrl), BotStoreType.BotUserData, currentBotData, default(CancellationToken));

                replyMessage.Text = translateToPigLatin("I have deleted your data oh masterful one");
                Trace.TraceInformation("Clearing user's BotUserData");
                return(replyMessage);

            //if they're new or haven't seen the updated legal documents, send them a message
            //use the incoming message to set up the outgoing message
            case ActivityTypes.ConversationUpdate:

                foreach (ChannelAccount added in message.MembersAdded)
                {
                    Microsoft.Bot.Connector.Activity addedMessage = message.CreateReply();

                    bool needToSendWelcomeText        = false;
                    pigLatinBotUserData addedUserData = new pigLatinBotUserData();
                    BotData             botData       = new BotData();

                    // is the added member me?
                    if (added.Id == message.Recipient.Id)
                    {
                        addedMessage.Text = string.Format(translateToPigLatin("Hey there, I'm PigLatinBot. I make intelligible text unintelligible.  Ask me how by typing 'Help', and for terms and info, click ") + "[erehay](http://www.piglatinbot.com)", added.Name);
                        var reply = await connector.Conversations.ReplyToActivityAsync(addedMessage);

                        continue;
                    }

                    if (await isNewUser(added.Id, message, botStateStore))
                    {
                        addedUserData.isNewUser = false;
                        needToSendWelcomeText   = true;
                    }

                    if (addedUserData.lastReadLegalese < lastModifiedPolicies)
                    {
                        addedUserData.lastReadLegalese = DateTime.UtcNow;
                        needToSendWelcomeText          = true;
                    }
                    if (needToSendWelcomeText)
                    {
                        addedMessage.Text         = string.Format(translateToPigLatin("Welcome to the chat") + " {0}, " + translateToPigLatin("I'm PigLatinBot. I make intelligible text unintelligible.  Ask me how by typing 'Help', and for terms and info, click ") + "[erehay](http://www.piglatinbot.com)", added.Name);
                        addedMessage.Recipient    = added;
                        addedMessage.Conversation = null;

                        try
                        {
                            botData.SetProperty("v1", addedUserData);
                            await dataStore.SaveAsync(new Address(message.Recipient.Id, message.ChannelId, added.Id, message.Conversation.Id, message.ServiceUrl), BotStoreType.BotUserData, botData, default(CancellationToken));
                        }
                        catch (Exception e)
                        {
                            Trace.WriteLine(e.Message);
                        }

                        var ConversationId = await connector.Conversations.CreateDirectConversationAsync(message.Recipient, message.From);

                        addedMessage.Conversation = new ConversationAccount(id: ConversationId.Id);
                        var reply = await connector.Conversations.SendToConversationAsync(addedMessage);
                    }
                }

                //maybe someone got removed
                foreach (ChannelAccount removed in message.MembersRemoved)
                {
                    Microsoft.Bot.Connector.Activity removedMessage = message.CreateReply();
                    removedMessage.Locale = "en";

                    removedMessage.Text = string.Format("{0}", removed.Name) + translateToPigLatin(" has Left the building");
                    var reply = await connector.Conversations.ReplyToActivityAsync(removedMessage);
                }

                return(null);

            default:
                return(null);
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Return the "major" portion of the activity
        /// </summary>
        /// <param name="activity"></param>
        /// <returns>normalized major portion of the activity, aka message/... will return "message"</returns>
        public static string GetActivityType(this IActivity activity)
        {
            var type = activity.Type.Split('/').First();

            return(Activity.GetActivityType(type));
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Normalize ActivityType
 /// </summary>
 /// <param name="activity"></param>
 /// <returns>normalized activity type</returns>
 public static string GetActivityType(this IActivity activity)
 {
     return(Activity.GetActivityType(activity.Type));
 }