private static async Task <HttpResponseMessage> HandleO365ConnectorCardActionQuery(Activity activity)
        {
            var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl));
            O365ConnectorCardActionQuery o365CardQuery = activity.GetO365ConnectorCardActionQueryData();
            Activity replyActivity = activity.CreateReply();

            switch (o365CardQuery.ActionId)
            {
            case Constants.ShowFlights:
                FlightInputDetails flightInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <FlightInputDetails>(o365CardQuery.Body);
                flightInfo.JourneyDate = flightInfo.JourneyDate + activity.LocalTimestamp.Value.Offset;
                await ShowFlightInfo(flightInfo, replyActivity);

                break;

            case Constants.Rebook:
                RebookClass rebookFlight = Newtonsoft.Json.JsonConvert.DeserializeObject <RebookClass>(o365CardQuery.Body);
                await AttachRebookPassenger(rebookFlight.flightNumberInput, rebookFlight.pnrNumberInput, replyActivity);

                break;

            default:
                break;
            }
            await connectorClient.Conversations.ReplyToActivityWithRetriesAsync(replyActivity);

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
Ejemplo n.º 2
0
        private async Task HandleInvoke(IDialogContext context, IMessageActivity message)
        {
            var activity        = (Activity)message;
            var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl));

            // Get O365 connector card query data.
            O365ConnectorCardActionQuery o365CardQuery = activity.GetO365ConnectorCardActionQueryData();
            Activity replyActivity = activity.CreateReply();

            switch (o365CardQuery.ActionId)
            {
            case Constants.PNR:
                var PNRno = Newtonsoft.Json.JsonConvert.DeserializeObject <O365BodyValue>(o365CardQuery.Body);
                await AttachBaggagebyPNR(PNRno.Value, replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            case Constants.TicketNumber:
                var Ticketno = Newtonsoft.Json.JsonConvert.DeserializeObject <O365BodyValue>(o365CardQuery.Body);
                await AttachBaggageInformationTicket(Ticketno.Value, replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            case Constants.Name:
                var Name = Newtonsoft.Json.JsonConvert.DeserializeObject <O365BodyValue>(o365CardQuery.Body);
                await AttachBaggageInformationName(Name.Value, replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            case Constants.DetailsofCheckedBaggage:
                var PNRno1 = Newtonsoft.Json.JsonConvert.DeserializeObject <O365BodyValue>(o365CardQuery.Body).Value;
                await AttachBaggageInformation(PNRno1, replyActivity);

                break;

            case Constants.CurrentStatus:
                var PNRno2 = Newtonsoft.Json.JsonConvert.DeserializeObject <O365BodyValue>(o365CardQuery.Body);
                await AttachBaggageInformation(PNRno2.Value, replyActivity);

                break;

            case Constants.RebookBaggage:
                RebookClass NewFlightTicketNumber = Newtonsoft.Json.JsonConvert.DeserializeObject <RebookClass>(o365CardQuery.Body);
                await AttachRebookInformation(NewFlightTicketNumber.flightNumberInput, replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            case Constants.ReportMissing:
                await AttachReportMissing(replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            default:
                break;
            }

            string savedMessageId;

            if (context.ConversationData.TryGetValue(LastMessageIdKey, out savedMessageId))
            {
                try
                {
                    var resource = await connectorClient.Conversations.UpdateActivityAsync(replyActivity.Conversation.Id, savedMessageId, replyActivity);

                    savedMessageId = resource.Id;
                }
                catch (Exception e)
                {
                    var resource = e.Message.ToString();
                }
            }
            else
            {
                var resource = await connectorClient.Conversations.ReplyToActivityWithRetriesAsync(replyActivity);

                savedMessageId = resource.Id;
            }
            context.ConversationData.SetValue(LastMessageIdKey, savedMessageId);
        }