private HttpResponseMessage HandleInvokeMessages(Activity activity)
        {
            var activityValue = activity.Value.ToString();

            if (activity.Name == "task/fetch")
            {
                Models.BotFrameworkCardValue <string> action;
                try
                {
                    action = JsonConvert.DeserializeObject <Models.TaskModuleActionData <string> >(activityValue).Data;
                }
                catch (Exception)
                {
                    action = JsonConvert.DeserializeObject <Models.BotFrameworkCardValue <string> >(activityValue);
                }

                Models.TaskInfo     taskInfo     = GetTaskInfo(action.Data);
                Models.TaskEnvelope taskEnvelope = new Models.TaskEnvelope
                {
                    Task = new Models.Task()
                    {
                        Type     = Models.TaskType.Continue,
                        TaskInfo = taskInfo
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));
            }
            else if (activity.Name == "task/submit")
            {
                ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                Activity        reply     = activity.CreateReply("Received = " + activity.Value.ToString());
                connector.Conversations.ReplyToActivity(reply);
            }
            return(new HttpResponseMessage(HttpStatusCode.Accepted));
        }
Exemplo n.º 2
0
        private async Task <HttpResponseMessage> HandleInvokeActivity(Activity activity)
        {
            var    activityValue = activity.Value.ToString();
            string ETid;

            Models.TaskInfo     taskInfo;
            Models.TaskEnvelope taskEnvelope;
            switch (activity.Name)
            {
            case "signin/verifyState":
                await Conversation.SendAsync(activity, () => new RootDialog());

                break;

            case "composeExtension/query":
                // Handle fetching task module content
                var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                var response  = MessageExtension.HandleMessageExtensionQuery(connector, activity);
                return(response != null?Request.CreateResponse <ComposeExtensionResponse>(response) : new HttpResponseMessage(HttpStatusCode.OK));

            case "task/fetch":
                // Handle fetching task module content
                string action = string.Empty;

                try
                {
                    var input = JsonConvert.DeserializeObject <TaskFetchData>(activityValue);
                    action = input.data.data;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    // action = JsonConvert.DeserializeObject<Models.BotFrameworkCardValue<string>>(activityValue);
                }
                taskInfo = GetTaskInfo(action);

                taskEnvelope = new Models.TaskEnvelope
                {
                    Task = new Models.Task()
                    {
                        Type     = Models.TaskType.Continue.ToString().ToLower(),
                        TaskInfo = taskInfo
                    }
                };
                return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

            case "task/submit":
                string taskId = JsonConvert.DeserializeObject <TaskModuleSubmitData <TicketTaskData> >(activityValue).Data.action;
                //string commandid = details.commandId;
                switch (taskId)
                {
                case "ticketcomplete":
                    var createTicketData = JsonConvert.DeserializeObject <SubmitActionData <TicketTaskData> >(activityValue).data;
                    taskInfo = GetTaskInfo(taskId);
                    var ticketurl = "?ticketNoId=" + createTicketData.ticketNo + "&description=" + createTicketData.TDescription + "&category=" + createTicketData.TCategory + "&priority=" + createTicketData.TPriority;
                    taskInfo.Url         = taskInfo.Url + ticketurl;
                    taskInfo.FallbackUrl = taskInfo.FallbackUrl + ticketurl;

                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case "podecline":
                    var podeclineData = JsonConvert.DeserializeObject <SubmitActionData <PODeclineData> >(activityValue).data;
                    taskInfo = GetTaskInfo(taskId);
                    var declineUrl = "?poNo=" + podeclineData.poNumber;
                    taskInfo.Url         = taskInfo.Url + declineUrl;
                    taskInfo.FallbackUrl = taskInfo.FallbackUrl + declineUrl;

                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case "decline":
                    var declineData = JsonConvert.DeserializeObject <SubmitActionData <DeclineData> >(activityValue).data;
                    taskId   = "declined";
                    taskInfo = GetTaskInfo(taskId);
                    var decUrl = "?poNo=" + declineData.PONo + "&reason=" + declineData.reason + "&comment=" + declineData.comments;
                    taskInfo.Url         = taskInfo.Url + decUrl;
                    taskInfo.FallbackUrl = taskInfo.FallbackUrl + decUrl;

                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case "editVisitorRequest":
                    taskInfo     = GetTaskInfo(taskId);
                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };
                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case "editTicket":

                    taskInfo     = GetTaskInfo(taskId);
                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case "sendrequest":
                    var savevisitordata = JsonConvert.DeserializeObject <SubmitActionData <VisitorData> >(activityValue).data;
                    taskInfo = GetTaskInfo(taskId);
                    var vurl = "?Date=" + savevisitordata.Vdate + "&Time=" + savevisitordata.Vtime + "&Contact=" + savevisitordata.Vcontact + "&location=" + savevisitordata.VhostLocation + "&purpose=" + savevisitordata.Vpurpose + "&hostName=" + savevisitordata.VhostName + "&org=" + savevisitordata.Vorg;
                    taskInfo.Url         = taskInfo.Url + vurl;
                    taskInfo.FallbackUrl = taskInfo.FallbackUrl + vurl;

                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type     = Models.TaskType.Continue.ToString().ToLower(),
                            TaskInfo = taskInfo
                        }
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));

                case TaskModuleIds.toggleEventStatus:
                    // TODO Event - EventTaskData
                    var eventData = JsonConvert.DeserializeObject <SubmitActionData <EventTaskData> >(activityValue).data;

                    //will update the button action Added<->Removed
                    GetDataHelper.ETStatusUpdate(eventData.eventId);
                    return(new HttpResponseMessage(HttpStatusCode.Accepted));

                default:         // Handled all remaining cases for task module. Ex-  Close, PoDeclinedClosed
                    return(Request.CreateResponse(HttpStatusCode.OK));
                }

            case "composeExtension/submitAction":

                var    details   = JsonConvert.DeserializeObject <SubmitActionData>(activityValue);
                string commandid = details.commandId;
                switch (details.commandId)
                {
                case "createticket":
                    var createTicketData = JsonConvert.DeserializeObject <SubmitActionData <TicketTaskData> >(activityValue);
                    if (createTicketData.data == null)
                    {
                        commandid    = details.commandId;
                        taskInfo     = GetTaskInfo(commandid);
                        taskEnvelope = new Models.TaskEnvelope
                        {
                            Task = new Models.Task()
                            {
                                Type     = Models.TaskType.Continue.ToString().ToLower(),
                                TaskInfo = taskInfo
                            }
                        };

                        return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));
                    }
                    else if (createTicketData.data.action == "submit")
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else if (createTicketData.data.action == "submitTicket")
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else
                    {
                        commandid = createTicketData.data.action;
                        taskInfo  = GetTaskInfo(commandid);
                        var ticketurl = "?ticketNoId=" + createTicketData.data.ticketNo + "&description=" + createTicketData.data.TDescription + "&category=" + createTicketData.data.TCategory + "&priority=" + createTicketData.data.TPriority;
                        taskInfo.Url         = taskInfo.Url + ticketurl;
                        taskInfo.FallbackUrl = taskInfo.FallbackUrl + ticketurl;
                        taskEnvelope         = new Models.TaskEnvelope
                        {
                            Task = new Models.Task()
                            {
                                Type     = Models.TaskType.Continue.ToString().ToLower(),
                                TaskInfo = taskInfo
                            }
                        };

                        return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));
                    }

                case "visitorregistration":
                    var savevisitordata = JsonConvert.DeserializeObject <SubmitActionData <VisitorData> >(activityValue);

                    if (savevisitordata.data == null)
                    {
                        commandid    = details.commandId;
                        taskInfo     = GetTaskInfo(commandid);
                        taskEnvelope = new Models.TaskEnvelope
                        {
                            Task = new Models.Task()
                            {
                                Type     = Models.TaskType.Continue.ToString().ToLower(),
                                TaskInfo = taskInfo
                            }
                        };

                        return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));
                    }
                    else if (savevisitordata.data.action == "submitVisitor")
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else if (savevisitordata.data.action == "submitRequest")
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else
                    {
                        commandid = savevisitordata.data.action;
                        taskInfo  = GetTaskInfo(commandid);
                        var ticketurl = "?Date=" + savevisitordata.data.Vdate + "&Time=" + savevisitordata.data.Vtime + "&Contact=" + savevisitordata.data.Vcontact + "&location=" + savevisitordata.data.VhostLocation + "&purpose=" + savevisitordata.data.Vpurpose + "&hostName=" + savevisitordata.data.VhostName + "&org=" + savevisitordata.data.Vorg;
                        taskInfo.Url         = taskInfo.Url + ticketurl;
                        taskInfo.FallbackUrl = taskInfo.FallbackUrl + ticketurl;
                        taskEnvelope         = new Models.TaskEnvelope
                        {
                            Task = new Models.Task()
                            {
                                Type     = Models.TaskType.Continue.ToString().ToLower(),
                                TaskInfo = taskInfo
                            }
                        };

                        return(Request.CreateResponse(HttpStatusCode.OK, taskEnvelope));
                    }

                default:
                    commandid = details.commandId;
                    break;
                }
                break;

            case "composeExtension/onCardButtonClicked":
                ETid = JsonConvert.DeserializeObject <Models.TaskModuleSubmitData <string> >(activityValue).Data;
                GetDataHelper.ETStatusUpdate(ETid);
                break;
            }
            return(new HttpResponseMessage(HttpStatusCode.Accepted));
        }