示例#1
0
        public virtual async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            // check if activity is of type message
            if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
            {
                //Logging messages typed by the User to the Database
                LogMessageToDb.WriteToDatabase
                (
                    conversationid: activity.Conversation.Id
                    , username: activity.From.Name
                    , channel: activity.ChannelId
                    , message: activity.Text
                );

                var      connector     = new ConnectorClient(new Uri(activity.ServiceUrl));
                Activity isTypingReply = activity.CreateReply();
                isTypingReply.Type = ActivityTypes.Typing;
                await connector.Conversations.ReplyToActivityAsync(isTypingReply);

                //await Conversation.SendAsync(activity, () => new EchoDialog());
                await Conversation.SendAsync(activity, () => new RootLuisDialog());
            }
            else
            {
                HandleSystemMessage(activity);
            }
            return(new HttpResponseMessage(System.Net.HttpStatusCode.Accepted));
        }
        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
                if (message.MembersAdded.Any(o => o.Id == message.Recipient.Id))
                {
                    var welcome = "Hi!  My name is Elder Bot.  I can answer all manner of questions about the Church of Jesus Christ of Latter Day Saints also know as the Mormons.  What would you like to know?";
                    var reply   = message.CreateReply(welcome);

                    ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl));
                    if (msgcount == 0)
                    {
                        LogMessageToDb.WriteToDatabase
                        (
                            conversationid: message.Conversation.Id
                            , username: "******"
                            , channel: message.ChannelId
                            , message: welcome
                        );
                        msgcount++;
                    }

                    //await connector.Conversations.ReplyToActivityAsync(reply);
                    connector.Conversations.ReplyToActivity(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);
        }
        /// POST: api/Messages
        /// Receive a message from a user and reply to it
        public async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            if (activity.Type == ActivityTypes.Message)
            {
                //Logging messages typed by the User to the Database
                LogMessageToDb.WriteToDatabase
                (
                    conversationid: activity.Conversation.Id
                    , username: activity.From.Name
                    , channel: activity.ChannelId
                    , message: activity.Text
                );

                //await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
                await Conversation.SendAsync(activity, () => new Dialogs.RootLuisDialog());
            }
            else
            {
                HandleSystemMessage(activity);
            }
            var response = Request.CreateResponse(HttpStatusCode.OK);

            return(response);
        }