/* * 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); }
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); }
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); }
public void HandleAddTasks(INAddTasksIntent intent, Action <INAddTasksIntentResponse> completion) { throw new NotImplementedException(); }