RingCentral REST API Правильный способ публикации данных?

Я пытаюсь отправить запрос в RingCentral API, чтобы вызвать отправку SMS-сообщения. Я прочитал документацию, и кажется, что я отправляю все данные в правильном формате, но получаю сообщение об ошибке «Неподдерживаемый тип носителя».

Кто-нибудь видит что-то не так с моим кодом, или у кого-нибудь из вас есть опыт работы с этим API?

$data = array("from" => "+10000000000", "to" => "+100000000", "text" => "test_sms_message");                                                                    
    $data_string = json_encode($data);                                                                                                                                                                                   
    $ch = curl_init('https://platform.devtest.ringcentral.com/restapi/v1.0/account/~/extension/~/sms');                                                                      
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    $headers = array();
    $headers[] = "Authorization: Bearer ".$auth_token;
    $headers[] = "Accept: application/json";
    $headers[] = "Content-Type: application/x-www-form-urlencoded";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);                                                                                                                                                                                                                                                                                                 
    $result = curl_exec($ch);
    print_r($result);

person John C.    schedule 17.10.2017    source источник
comment
Я ничего не знаю об этом API, но, скорее всего, вы имеете в виду Content-Type: application/json. Заголовок Accept ничего не делает, когда вы отправляете запрос (по крайней мере, если API правильно следует спецификации HTTP)   -  person Cfreak    schedule 17.10.2017
comment
Это было на самом деле! Спасибо, я потратил ужасно много времени, возясь с этим, чтобы попытаться сделать это правильно! Я очень ценю вашу помощь.   -  person John C.    schedule 17.10.2017
comment
Для справки: официальный PHP SDK RingCentral находится здесь github.com/ringcentral/ringcentral-php и здесь есть неофициальный SDK сообщества github.com/grokify/ringcentral-sdk-php-lite   -  person Grokify    schedule 08.02.2018


Ответы (1)


Поэтому я собираюсь опубликовать ответ на свой вопрос и включить весь код, который я использовал. Этот код позволит вам сначала получить токен авторизации, а затем использовать этот токен для отправки запроса в RingCentral REST API. Я не смог найти рабочий пример PHP нигде в Интернете, поэтому я уверен, что это поможет кому-то еще.

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://platform.devtest.ringcentral.com/restapi/oauth/token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=+1XXXXXXXXX&password=XXXXXXXXX&extension=XXX&grant_type=password");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "XXXXXXXXXXXX" . ":" . "XXXXXXXXXXXXXXXXX");

$headers = array();
$headers[] = "Accept: application/json";
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
$decoded_results = json_decode($result, true);
if (curl_errno($ch)) {
   echo 'Error:' . curl_error($ch);
}

echo '<pre>';
print_r($result);
curl_close ($ch);
$auth_token = $decoded_results['access_token'];
// LINE BREAK


$data_string = '{"to": [{"phoneNumber": "+INSERTNUMBER"}],"from": {"phoneNumber": "+INSERTNUMBER}"},"text": "Test SMS message from Platform server"}';                                                                                                                                                                                   
$ch = curl_init('https://platform.devtest.ringcentral.com/restapi/v1.0/account/~/extension/~/sms');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
$headers = array();
$headers[] = "Authorization: Bearer ".$auth_token;
$headers[] = "Accept: application/json";
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);                                                                                                                                                                                                                                                                                                 
$result = curl_exec($ch);
print_r($result);
person John C.    schedule 17.10.2017