Example #1
0
        /*
         *   https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/handling_an_intent
         */
        /// <summary>
        /// Handles the simple phrase of adding a task (no 'list' needs to be specified)
        /// </summary>
        /// <remarks>
        /// For example:
        /// "[app] add [task]"
        /// "Todo11 add Boeing factory tour"
        /// </remarks>
        public void HandleAddTasks(INAddTasksIntent intent, Action <INAddTasksIntentResponse> completion)
        {
            // 1. get the parsed data from Siri
            var item = intent.TaskTitles[0].ToString();

            // 2. have to create the tasks... in your app data store
            SaveToApp(item);

            // 3. after adding to the datastore, respond to the user with an answer/card
            var userActivity = new NSUserActivity("INAddTasksIntent"); // https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/confirming_the_details_of_an_intent
            var response     = new INAddTasksIntentResponse(INAddTasksIntentResponseCode.Success, userActivity)
            {                                                          // tells the user what we did
                AddedTasks = TaskList.FromIntent(intent).Tasks,
            };

            completion(response);
        }
Example #2
0
        public static INTaskList FromIntent(INAddTasksIntent intent)
        {
            var tasks = new List <INTask>();
            INSpeakableString title     = new INSpeakableString("");
            INSpeakableString groupname = new INSpeakableString("");

            if (intent.TargetTaskList != null)
            {
                title = intent.TargetTaskList.Title;
            }
            if (intent.TaskTitles != null)
            {
                foreach (var t in intent.TaskTitles)
                {
                    tasks.Add(new INTask(t, INTaskStatus.NotCompleted, INTaskType.Completable, null, null, null, null, "mytask"));
                }
            }

            return(new INTaskList(title, tasks.ToArray(), groupname, null, null, "mylist"));
        }
        /*
         * https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/handling_an_intent
         */

        public void HandleAddTasks(INAddTasksIntent intent, Action <INAddTasksIntentResponse> completion)
        {
            Console.WriteLine("Add a task");
            var userActivity = new NSUserActivity("INAddTasksIntent");             // https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/confirming_the_details_of_an_intent

            var tasklist = TaskList.FromIntent(intent);

            //if tasks array is empty but a group name is specified, maybe convert it into a task?

            // TODO: have to create the list and tasks... in your app data store

            var response = new INAddTasksIntentResponse(INAddTasksIntentResponseCode.Success, userActivity)
            {
                AddedTasks = tasklist.Tasks,
            };

            if (intent.TargetTaskList != null)
            {
                response.ModifiedTaskList = tasklist;
            }
            completion(response);
        }
Example #4
0
        public void HandleAddTasks(INAddTasksIntent intent, Action <INAddTasksIntentResponse> completion)
        {
            Console.WriteLine("Add a task");
            var userActivity = new NSUserActivity("INAddTasksIntent");             // https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/confirming_the_details_of_an_intent

            var title = "";

            if (intent.TargetTaskList != null)
            {
                Console.WriteLine(intent.TargetTaskList.Title);
                title = intent.TargetTaskList.Title?.ToString();
                foreach (var t in intent.TargetTaskList.Tasks)
                {
                    Console.WriteLine("tasklist: " + t.Title + " " + t.Status);
                    if (string.IsNullOrEmpty(title))
                    {
                        title = t.Title?.ToString();
                    }
                }
            }
            foreach (var t in intent.TaskTitles)
            {
                Console.WriteLine("tasktitle: " + t);
                if (string.IsNullOrEmpty(title))
                {
                    title = t?.ToString();
                }
            }
            if (intent.SpatialEventTrigger != null)
            {
                /*
                 * spatialEventTrigger = <INSpatialEventTrigger: 0x1014cdeb0> {
                 * event = arrive;
                 * placemark = San Francisco, San Francisco, CA, United States @ <+37.77937220,-122.41842100> +/- 100.00m, region CLCircularRegion (identifier:'<+37.75882150,-122.44588850> radius 9379.49', center:<+37.75882150,-122.44588850>, radius:9379.49m);
                 * };
                 * temporalEventTrigger = <null>;
                 * targetTaskList = <null>;
                 * taskTitles = (
                 * WWDC,
                 * );
                 * }}
                 * }}*/
            }
            if (intent.TemporalEventTrigger != null)
            {
                /*temporalEventTrigger = <INTemporalEventTrigger: 0x1052aa0f0> {
                 * dateComponentsRange = <INDateComponentsRange: 0x1051a3800> {
                 * startDateComponents = <NSDateComponents: 0x1051a3e50>
                 * Calendar: <_NSCopyOnWriteCalendarWrapper: 0x1051a37a0>
                 * Calendar Year: 2017
                 * Month: 9
                 * Day: 6
                 * Hour: 17
                 * Minute: 0
                 * Second: 0
                 * Nanosecond: 0;
                 * endDateComponents = <NSDateComponents: 0x1051a3f00>
                 * Calendar: <_NSCopyOnWriteCalendarWrapper: 0x1051a37c0>
                 * Calendar Year: 2017
                 * Month: 9
                 * Day: 7
                 * Hour: 23
                 * Minute: 59
                 * Second: 0
                 * Nanosecond: 0
                 * Weekday: 5;
                 * recurrenceRule = <null>;
                 * };*/
            }
            userActivity.Title = "Received " + title;
            Console.WriteLine("Received " + title);
            var response = new INAddTasksIntentResponse(INAddTasksIntentResponseCode.Success, userActivity)
            {
                AddedTasks       = new INTask[] { new INTask(new INSpeakableString(title), INTaskStatus.NotCompleted, INTaskType.Completable, null, null, null, null, "mytask") },
                ModifiedTaskList = new INTaskList(new INSpeakableString("list 1"),
                                                  new INTask[] {
                    new INTask(new INSpeakableString("task 1"), INTaskStatus.NotCompleted, INTaskType.Completable, null, null, null, null, "mytask"),
                    new INTask(new INSpeakableString("task 2"), INTaskStatus.NotCompleted, INTaskType.Completable, null, null, null, null, "mytask")
                }, new INSpeakableString("group 3"), null, null, "mylist")
            };

            // handling
            //https://developer.apple.com/documentation/sirikit/resolving_and_handling_intents/handling_an_intent
            completion(response);
        }
Example #5
0
 public void HandleAddTasks(INAddTasksIntent intent, Action <INAddTasksIntentResponse> completion)
 {
     throw new NotImplementedException();
 }