Beispiel #1
0
        private async Task <DialogTurnResult> AfterConfirmNumber(WaterfallStepContext sc, CancellationToken cancellationToken)
        {
            try
            {
                var state = await Accessor.GetAsync(sc.Context);

                if (sc.Result is bool)
                {
                    if ((bool)sc.Result)
                    {
                        var selectedEvent = state.ShowMeetingInfo.FocusedEvents.First();
                        var activity      = TemplateEngine.GenerateActivityForLocale(JoinEventResponses.JoinMeeting);
                        await sc.Context.SendActivityAsync(activity);

                        var replyEvent = sc.Context.Activity.CreateReply();
                        replyEvent.Type = ActivityTypes.Event;
                        replyEvent.Name = "OpenDefaultApp";
                        var eventJoinLink = new OpenDefaultApp
                        {
                            MeetingUri   = selectedEvent.OnlineMeetingUrl ?? GetTeamsMeetingLinkFromMeeting(selectedEvent),
                            TelephoneUri = "tel:" + GetDialInNumberFromMeeting(selectedEvent)
                        };
                        replyEvent.Value = JsonConvert.SerializeObject(eventJoinLink);
                        await sc.Context.SendActivityAsync(replyEvent, cancellationToken);
                    }
                    else
                    {
                        var activity = TemplateEngine.GenerateActivityForLocale(JoinEventResponses.NotJoinMeeting);
                        await sc.Context.SendActivityAsync(activity);
                    }
                }

                state.ShowMeetingInfo.ShowingMeetings.Clear();

                return(await sc.EndDialogAsync());
            }
            catch (SkillException ex)
            {
                await HandleDialogExceptions(sc, ex);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
            catch (Exception ex)
            {
                await HandleDialogExceptions(sc, ex);

                return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs));
            }
        }
        public static Activity CreateOpenDefaultAppReply(Activity activity, PointOfInterestModel destination, OpenDefaultAppType type)
        {
            var replyEvent = activity.CreateReply();

            replyEvent.Type = ActivityTypes.Event;
            replyEvent.Name = "OpenDefaultApp";

            var value = new OpenDefaultApp();

            switch (type)
            {
            case OpenDefaultAppType.Map: value.MapsUri = $"geo:{destination.Geolocation.Latitude},{destination.Geolocation.Longitude}"; break;

            case OpenDefaultAppType.Telephone: value.TelephoneUri = "tel:" + destination.Phone; break;
            }

            replyEvent.Value = value;
            return(replyEvent);
        }