Невозможно создать задачу ToDo с помощью Graph API версии v1.0

#microsoft-graph-api #azure-ad-graph-api #microsoft-graph-sdks #microsoft-todo

#microsoft-graph-api #azure-ad-graph-api #microsoft-graph-sdks #microsoft-todo

Вопрос:

Я пытаюсь использовать функцию задачи ToDo в graph api версии v1.0 для создания задачи, используя следующий код

 var result = graphServiceClient.Users[outlookUserId].Todo.Lists[listid].Tasks.Request().AddAsync(todoTask).Resu<
 

Однако я получаю следующую ошибку:

Код: сообщение invalidRequest: тип с именем «microsoft.toDo.todoTask» не может быть разрешен моделью. Когда модель доступна, каждое имя типа должно соответствовать допустимому типу. Внутренняя ошибка: Код: InvalidModel Дополнительные данные: дата: 2020-11-25T09:41:04 идентификатор запроса: 39794548-8f63-443e-a8bc-76ad6091dc8d идентификатор запроса клиента: 39794548-8f63-443e-a8bc-76ad6091dc8d Идентификатор запроса клиента: 39794548-8f63-443e-a8bc-76ad6091dc8d Запрос клиента: 39794548-8f63-443e-a8bc- 76ad6091dc8d

Для решения вышеизложенного я установил для odatatype todoTask значение null, но получил другое исключение:

Код: Сообщение invalidRequest: тип с именем «microsoft.toDo.dateTimeTimeZone» не может быть разрешен моделью. Когда модель доступна, каждое имя типа должно соответствовать допустимому типу. Внутренняя ошибка: Код: InvalidModel Дополнительные данные: дата: 2020-11-25T09:43:27 идентификатор запроса: 0780add8-3f17-40c5-a92b-e9e62ad08bf8 идентификатор запроса клиента: 0780add8-3f17-40c5-a92b-e9e62ad08bf8 Идентификатор клиента: 0780add8-3f17-40c5-a92b-e9e62ad08bf8 Запрос клиента: 0780add8-3f17-40c5-a92b-e9e62ad08bf8

Чтобы разрешить вышеизложенное, я установил odatatype для всех элементов данных todoTask типа DateTimeZone равным null, но затем получил следующее исключение:

Код: Сообщение invalidRequest: тип с именем «microsoft.toDo.itemBody» не может быть разрешен моделью. Когда модель доступна, каждое имя типа должно соответствовать допустимому типу. Внутренняя ошибка: Код: InvalidModel Дополнительные данные: дата: 2020-11-25T09:46:11 идентификатор запроса: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592 идентификатор запроса клиента: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592 Идентификатор запроса клиента: 5bafbcab-5090-47b5-ac8e-8c96ec1d6592 Идентификатор клиента: 5bafbcab-5090- 47b5-ac8e-8c96ec1d6592

Чтобы разрешить вышеописанное, я установил для odatatype тела todoTask значение null, но теперь я получаю следующее исключение, которое я не могу разрешить:

Код: Сообщение общего исключения: Внутренняя ошибка сервера Внутренняя ошибка: Дополнительные данные: дата: 2020-11-25T09:48:23 идентификатор запроса: f5d52f43-c0b4-425e-83ec-652fadb7abf9 идентификатор запроса клиента: f5d52f43-c0b4-425e-83ec-652fadb7abf9 Идентификатор запроса клиента: f5d52f43-c0b4-425e-83ec-652fadb7abf9 Идентификатор запроса клиента: f5d52f43-c0b4-425e-83ec-652fadb7abf9

Для нашего приложения нам нужно создать задачу и синхронизировать ее с Outlook, и поскольку это будет запущено в производство, мы не можем использовать бета-версию. Кто-нибудь, пожалуйста, может помочь мне сохранить задачу.

Обновить:

Вот код того, как я устанавливаю объект TodoTask:

 var todoTask = new TodoTask();
todoTask.Title = "Subject";
todoTask.DueDateTime = new DateTimeTimeZone() { DateTime = dueDate.Date.ToString()};
todoTask.Status = TaskStatus.NotStarted;
todoTask.Importance = Importance.Normal;
todoTask.Body = new ItemBody
{
     Content = "Test",
     ContentType = BodyType.Text
};
todoTask.IsReminderOn = true;
todoTask.ReminderDateTime = new DateTimeTimeZone() { 
     DateTime = reminderTime.Value.ToString() };
todoTask.Extensions = new TodoTaskExtensionsCollectionPage();
todoTask.Extensions.Add(new OpenTypeExtension{
     ExtensionName = "TestProperty", 
     AdditionalData = new Dictionary<string,object>{{"MyProp","MyValue"}}});
 

Комментарии:

1. Я попытался повторить тот же вызов Graph API в POSTMAN, Microsoft Graph Explorer — у меня это работает. Я вижу, что вы используете SDK, поэтому убедитесь, что вы используете последний пакет NuGet, и посмотрите, можете ли вы повторить проблему или нет.

2. Я пробовал использовать последнюю версию SDK, но все еще сталкивался с той же проблемой.

3. Позвольте мне проверить это…

4. Пожалуйста, поделитесь полным кодом о том, как вы настроили var todoTask = new TodoTask для нас тестирование.

Ответ №1:

После того, как вы установите для odatatype значение null, вам также необходимо установить TimeZone свойство для DueDateTime and ReminderDateTime .

Например:

         var todoTask = new TodoTask();
        todoTask.Title = "Subject2";
        todoTask.ODataType = null;
        DateTime dueDate = DateTime.UtcNow.Date;
        DateTime reminderTime = DateTime.UtcNow.Date;
        todoTask.DueDateTime = new DateTimeTimeZone() {
            TimeZone = "UTC",
            ODataType = null,
            DateTime = dueDate.Date.ToString() 
        };
        todoTask.Status = TaskStatus.NotStarted;
        todoTask.Importance = Importance.Normal;
        todoTask.Body = new ItemBody
        {
            ODataType = null,
            Content = "Test",
            ContentType = BodyType.Text
        };
        todoTask.IsReminderOn = true;
        todoTask.ReminderDateTime = new DateTimeTimeZone()
        {
            TimeZone = "UTC",
            ODataType = null,
            DateTime = reminderTime.Date.ToString()
        };
        todoTask.Extensions = new TodoTaskExtensionsCollectionPage();
        todoTask.Extensions.Add(new OpenTypeExtension
        {
            ExtensionName = "TestProperty",
            AdditionalData = new Dictionary<string, object> { { "MyProp", "MyValue" } }
        });