Пример RingCentral PHP FaxOut API

Я только начал изучать RingCentral API.

Я немного смущен тем, как они ожидают данные.

Сначала я попробовал curl, используя:

    $url = ' https://service.ringcentral.com/faxapi.asp';
    $faxData = array();
    $faxData['Username'] = 'xxxxxxxx';
    $faxData['Password'] = 'xxxxxxxx';
    $faxData['Recipient'] = $faxNumber.'|TEST';
    $faxData['Attachment'] = ROOT_PATH.$fileLocation;

    // build url encoded string
    $fields_string='';
    foreach($faxData as $key=>$value) {
        $fields_string .= $key.'='.urlencode($value).'&';
    }
    rtrim($fields_string, '&');

    //open connection
    $ch = curl_init();
    //set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($faxData));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $faxData);

    //execute post
    $result = curl_exec($ch);
    $err = curl_errno ( $ch );
    $errmsg = curl_error ( $ch );
    $header = curl_getinfo ( $ch );
    $httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );

    //close connection
    curl_close($ch);

Затем я попытался отправить по электронной почте, используя номер@ringcentral.com, и я до сих пор не могу заставить это работать вообще. Их сайт поддержки бесполезен, так как я вижу много вопросов без ответов, но у меня нет выбора, и мне нужно, чтобы это заработало.

Я надеюсь, что кто-то сделал это на PHP и может предоставить мне пример или указать мне правильный путь.


person Jeremy    schedule 28.06.2014    source источник


Ответы (2)


Мне удалось заставить исходный код работать с двумя вещами:

(1) Удаление начального пробела из $url:

# Original
$url = ' https://service.ringcentral.com/faxapi.asp';

# New
$url = 'https://service.ringcentral.com/faxapi.asp';

(2) Убедитесь, что ROOT_PATH начинается с @, как указано в документации PHP для CURLOPT_POSTFIELDS по адресу http://php.net/manual/en/function.curl-setopt.php.

Примеры cURL и Guzzle

Вот несколько примеров использования cURL и Guzzle, проверенных на работоспособность.

Пример cURL

function ringcentral_faxout_api_via_curl($username,$password,$recipient,$file,$coverpagetext) {

    $request = curl_init('https://service.ringcentral.com/faxapi.asp');

    curl_setopt($request, CURLOPT_POST, true);
    curl_setopt($request, CURLOPT_POSTFIELDS, array(
        'username'      => $username,
        'password'      => $password,
        'recipient'     => $recipient,
        'attachment'    => '@' . realpath($file),
        'coverpagetext' => $coverpagetext
    ));
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($request);
    curl_close($request);
    return $response;
}

$username  = 'myusername';
$password  = 'mypassword';
$recipient = 'myrecipient';
$file      = '/path/to/myfile';

$result = ringcentral_faxout_api_via_curl( $username, $password, $recipient, $file, 'PHP FaxOut Via cURL');

Пример использования

use GuzzleHttp\Client;

function ringcentral_faxout_api_via_guzzle($username,$password,$recipient,$file,$coverpagetext) {

    $client = new Client();
    $response = $client->post('https://service.ringcentral.com/faxapi.asp', [
        'body' => [
            'username'      => $username,
            'password'      => $password,
            'recipient'     => $recipient,
            'attachment'    => fopen($file, 'r'),
            'coverpagetext' => $coverpagetext
        ]
    ]);

    return $response->getBody();
}

$username  = 'myusername';
$password  = 'mypassword';
$recipient = 'myrecipient';
$file      = '/path/to/myfile';

$result = ringcentral_faxout_api_via_guzzle( $username, $password, $recipient, $file, 'PHP FaxOut Via Guzzle');

Новый API RingCentral

Также ознакомьтесь с более новым API платформы RingCentral, который имеет гораздо более полный API для отправки факсов и другие возможности, задокументированные здесь: https://developers.ringcentral.com/api-and-docs.html

person Grokify    schedule 18.03.2015

function fetch_url_post($url, $variable_array){
    $fields_string = "";
    //set POST variables
    #$url = 'http://domain.com/get-post.php';
    foreach($variable_array as $key => $value){
        $fields[$key] =  urlencode($value);
    }

    //url-ify the data for the POST
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string, '&');

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

    //execute post
    $result = curl_exec($ch);
    return $result;
    //close connection
    curl_close($ch);
}
$url = ' https://service.ringcentral.com/faxapi.asp';
$faxData = array();
$faxData['Username'] = 'xxxxxxxx';
$faxData['Password'] = 'xxxxxxxx';
$faxData['Recipient'] = $faxNumber.'|TEST';
$faxData['Attachment'] = ROOT_PATH.$fileLocation;
echo fetch_url_post($url, $faxData);

убедитесь, что ROOT_PATH.$fileLocation; это абсолютный и правильный путь

person J-Dizzle    schedule 28.06.2014
comment
Я получил тот же ответ. Спасибо. Вместо этого я использовал их электронную почту rcfax.com, так как это все равно не работает. - person Jeremy; 29.06.2014
comment
Глядя снова, я вижу, как вы могли бы заставить это работать таким оригинальным способом - изменить $url = ' https://service.ringcentral.com/faxapi.asp'; на $url = 'https://service.ringcentral.com/faxapi.asp?';, удалив начальный пробел и добавив ? - person J-Dizzle; 30.06.2014