UCWA 2.0 Попытка добавить прямой контакт, но получение ParameterValidationFailure

Я использую UCWA 2.0 для некоторой интеграции Skype4Business в наше веб-приложение внутренней сети.

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

Что мне нравится делать, что не работает, так это устанавливать прямой контакт для пользователя. Документация для этого: нажмите здесь

Мой код для вызова POST:

 using (var client = new HttpClient())
 {
     var param = new { target = "sip:[email protected]" };
     var paramJson = JsonConvert.SerializeObject(param, Formatting.Indented);

     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     client.DefaultRequestHeaders.Referrer = new Uri(result4._links.xframe.href);
     client.DefaultRequestHeaders.Add("Authorization", $"{result3.token_type} {result3.access_token}");

     var url = $"https://ucwebext.domain.be/{applicationUrl}/me/callForwardingSettings/immediateForwardSettings/immediateForwardToContact";

     var responseNew = await client.PostAsync(url, new StringContent(paramJson, Encoding.UTF8, "application/json"));
     var responseString = await responseNew.Content.ReadAsStringAsync();
}

Тот же код с использованием RestSharp:

var client = new RestClient($"https://ucwebext.domain.be/{applicationUrl}");

var restR = new RestRequest("/me/callForwardingSettings/immediateForwardSettings/immediateForwardToContact", Method.POST);

var param = new { target = "sip:[email protected]" };
var jsonToSend = JsonConvert.SerializeObject(param, Formatting.Indented);

restR.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody);
restR.AddParameter("referer", result4._links.xframe.href);

restR.AddHeader("Authorization", $"{result3.token_type} {result3.access_token}");

restR.RequestFormat = DataFormat.Json;

var response = client.ExecuteAsPost(restR, "POST");

Заголовок запроса из звонка:

POST https://ucwebext.domain.be/ucwa/oauth/v1/applications/101024253230/me/callForwardingSettings/immediateForwardSettings/immediateForwardToContact   HTTP/1.1
Accept: application/json
Referer: https://ucwebext.domain.be/Autodiscover/XFrame/XFrame.html
Authorization: Bearer cwt=AAEBHAEFAAAAAAAF...0Q_OXzsR4g4F-PpYaMGK10Pg
Content-Type: application/json; charset=utf-8
Host: ucwebext.domain.be
Content-Length: 48
Expect: 100-continue

{"target":"sip:[email protected]"}

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

{"code":"BadRequest","subcode":"ParameterValidationFailure","message":"Пожалуйста, проверьте, что вы ввели, и повторите попытку.","parameters":[{"name":"target","reason" :"MissingOrInvalid"}]}

Я пробовал все и не понимаю, почему параметр не отправляется или недействителен.

Любая помощь высоко ценится!


person Nanou Ponette    schedule 08.01.2018    source источник


Ответы (1)


РЕШЕНИЕ

Вместо использования JSON я добавил параметр как строку запроса, и это сработало!

 var client = new RestClient($"https://ucwebext.domain.be/{applicationUrl}");
 var restR = new RestRequest($"/me/callForwardingSettings/immediateForwardSettings/immediateForwardToContact{Url.Encode("?target=sip:[email protected]")}", Method.POST);

 restR.AddParameter("referer", result4._links.xframe.href);
 restR.AddHeader("Authorization", $"{result3.token_type} {result3.access_token}");

 var response = client.ExecuteAsPost(restR, "POST");
person Nanou Ponette    schedule 09.01.2018