public async override Task <APIResult> ExecuteAPI(Intent obj)
        {
            APIResult result = new APIResult();

            result.IntentName = obj.IntentName;
            string response = "";

            try
            {
                string query = AssembleUrlQuery(obj);
                // response = await Get("https://graph.microsoft.com/v1.0/me/calendarview?startdatetime=2020-01-23T12:30:13.605Z&enddatetime=2020-01-30T12:30:13.605Z");
                response = await Get($"https://graph.microsoft.com/v1.0/me/calendarview?{query}");

                FindCalendarEntryResponse calendarResponse = JsonConvert.DeserializeObject <FindCalendarEntryResponse>(response);

                //response = string.Format("Created event {0} on {1} between {2} and {3}", calendarResponse.subject, calendarResponse.start.dateTime.ToShortDateString(), calendarResponse.start.dateTime.Subtract(-obj.Offset).ToShortTimeString(), calendarResponse.end.dateTime.Subtract(-obj.Offset).ToShortTimeString());
                // assemble response TODO
                response = AssembleResponse(calendarResponse);

                result.ResultText = response;
                result.Code       = APIResultCode.Ok;

                return(result);
            }
            catch (Exception ex)
            {
                result.ResultText = "Error while creating event.";
                result.Code       = APIResultCode.Error;
                result.ErrorText  = ex.Message;

                return(result);
            }
        }
        private string AssembleResponse(FindCalendarEntryResponse calendarResponse)
        {
            string text = "";

            if (calendarResponse == null)
            {
                return("");
            }

            if (calendarResponse.value == null)
            {
                return("");
            }

            if (calendarResponse.value.Count() == 0)
            {
                return("There are no events in this time range.");
            }

            if (calendarResponse.value.Count() > 1)
            {
                text = "Found these events:";
            }
            else
            {
                text = "Found event:";
            }

            text += System.Environment.NewLine;
            foreach (Value obj in calendarResponse.value)
            {
                if (obj.start.dateTime.DayOfYear == DateTime.UtcNow.DayOfYear)
                {
                    text += String.Format("{0} at {1} till {2}", obj.subject, obj.start.dateTime.ToShortTimeString(), obj.end.dateTime.ToShortTimeString());
                }
                else
                {
                    text += String.Format("{0} at {1} {2} till {3} {4}", obj.subject, obj.start.dateTime.ToShortDateString(), obj.subject, obj.start.dateTime.ToShortTimeString(), obj.end.dateTime.ToShortDateString(), obj.end.dateTime.ToShortTimeString());
                }

                text += System.Environment.NewLine;
            }

            return(text);
        }