Вызов функции QuerySchedule WebAPI

Я использую вызовы веб-API для Dynamics 365, чтобы получить результат для функции QuerySchedule. Я также пробовал использовать это как связанную функцию. Но ни один из них не возвращает ожидаемого результата. Ниже представлена ​​документация по этому поводу: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/queryschedule?view=dynamics-ce-odata-9

Я пробовал другой идентификатор ресурса, разные способы указать тип enum в вызове, полное имя функции и т. Д., Но я всегда получаю ошибку.

Вот мой призыв:

https://mycrm.com/api/data/v9.0/QuerySchedule(ResourceId=@p1,Start=@p2,End=@p3,TimeCodes=@p4)?@p1=resourceguid&@p2=2019-01-05T09:27:39Z&@p3=2019-01-05T21:27:39Z&@p4=Available

Ожидается, что на выходе будет QueryScheduleResponse, как указано в ссылке ниже: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/queryscheduleresponse?view=dynamics-ce-odata-9

Но я продолжаю получать сообщение об ошибке:

В экземпляре объекта не задана ссылка на объект.

Может ли кто-нибудь, кто выполнял вызовы веб-API в Dynamics 365 с использованием OData или имеет какой-либо опыт в этой области, любезно помочь?


person AshleyAsh1990    schedule 08.01.2019    source источник
comment
Могу я предположить, что вы используете D365 CE v9.2? Может быть, вы хотите упростить свой запрос и разместить упрощенный URL-адрес в браузере?   -  person Kelvin    schedule 10.01.2019


Ответы (1)


Быстро провел тест консоли браузера, фрагмент кода из это сообщение в блоге работает нормально.

При вставке части фрагмента из блога ваш код может сломаться, поскольку вы передаете «Доступен» вместо ['0'] вместо TimeCodes.

var requestUrl = "/api/data/v9.0/QuerySchedule(ResourceId=@p1,Start=@p2,End=@p3,TimeCodes=@p4)";
requestUrl += "?@p1=" + context.getUserId().replace("{", "").replace("}", "");
//put Id of resource you want get data for as parameter 1

requestUrl += "&@p2=" + JSON.stringify(start).replace(/"/g, "");
requestUrl += "&@p3=" + JSON.stringify(end).replace(/"/g, "");
requestUrl += "&@p4=" + JSON.stringify(['0']);

Даже вы можете вставить этот URL-адрес в адресную строку браузера для смарт-теста:

Запрос:

https://test.crm.dynamics.com/api/data/v9.0/QuerySchedule(ResourceId=@p1,Start=@p2,End=@p3,TimeCodes=@p4)?@p1=0EEE678F-C4FF-E711-A959-000D3A1A941E&@p2=2019-01-15T09:27:39Z&@p3=2019-01-15T21:27:39Z&@p4=['0']

Вы можете заметить, что ['0'] превратился в [%270%27], но появится ожидаемый ниже ответ.

Ответ:

{"@odata.context":"https://test.crm.dynamics.com/api/data/v9.0/$metadata#Microsoft.Dynamics.CRM.QueryScheduleResponse","TimeInfos":[{"Start":"2019-01-15T00:00:00Z","End":"2019-01-16T00:00:00Z","TimeCode":"Available","SubCode":"Schedulable","SourceId":"15f40c32-1609-46db-93da-1bbb8eb19c9d","CalendarId":"69b0ee2b-bad7-4b8e-9bcc-d03e76b45a03","SourceTypeCode":4004,"IsActivity":false,"ActivityStatusCode":-1,"Effort":1.0,"DisplayText":""}]}
person Arun Vinoth    schedule 15.01.2019