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)); }
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); }