Skip to main content
The First Step
Dec 11, 2015 3:22 PM UTC
Question

cURL error when Integrating the PHP SDK on my project

Hi,


I am Using RingCentral Connect Platform PHP SDK (https://github.com/ringcentral/ringcentral-php) to send fax messages, I get a curl error when i run the script. I have a developer account and testing the authenticate and Fax message and it works fine.


Error details:

Warning: curl_close(): 28 is not a valid cURL handle resource in <path_to_project>vendor
ingcentral
ingcentral-phpsrcHttpClient.php on line 104    Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Invalid response string' in vendor
ingcentralpsr7srcfunctions.php:478  Stack trace:  #0 <path_to_project>vendor
ingcentral
ingcentral-phpsrcHttpApiResponse.php(56): RingCentralPsr7parse_response('HTTP/1.1 0 OK??')  #1 <path_to_project>vendor
ingcentral
ingcentral-phpsrcHttpClient.php(99): RingCentralSDKHttpApiResponse->__construct(Object(RingCentralPsr7Request), false, 0)  #2 <path_to_project>vendor
ingcentral
ingcentral-phpsrcHttpClient.php(25): RingCentralSDKHttpClient->loadResponse(Object(RingCentralPsr7Request))  #3 <path_to_project>vendor
ingcentral
ingcentral-phpsrcPlatformPlatform.php(214): RingCentralSDKHttpClient->send(Object(RingCentralPsr7Request))  #4 <path_to_project>vendor
ingcentral
ingcentral-phpsrcPlatformPlatform.php(301): RingCentralSDKPlatformPlatform->sendReq in C:inetpubwwwrooterexpresspublicvendor
ingcentral
ingcentral-phpsrcHttpClient.php on line 44


Sample code (basically the sample code from - https://github.com/ringcentral/ringcentral-php/blob/master/demo/fax.php):


<?php

use RingCentralSDKSDK;


require_once(__DIR__.'/vendor/autoload.php');


$credentials = require(__DIR__ . '/vendor/ringcentral/ringcentral-php/demo/_credentials.php');


// Authorize

$platform->login($credentials['username'], $credentials['extension'], $credentials['password']);


// Find Fax-enabled phone number that belongs to extension

$phoneNumbers = $platform->get('/account/~/extension/~/phone-number', array('perPage' => 'max'))

->json()->records;


print 'Fax Phone Number: ' . $credentials['username'] . PHP_EOL;


// Send Fax

$request = $rcsdk->createMultipartBuilder()

->setBody(array(

'to' => array(

array('phoneNumber' => $credentials['username']),

),

'faxResolution' => 'High',

))

->add('Plain Text', 'file.txt')

->add(fopen('https://developers.ringcentral.com/assets/images/ico_case_crm.png', 'r'))

->request('/account/~/extension/~/fax');


//print $request->getBody() . PHP_EOL;


$response = $platform->sendRequest($request);


print 'Sent Fax ' . $response->json()->uri . PHP_EOL;












14 replies

The First Step
Dec 11, 2015 7:00 PM UTC
Hi ,

Did you instantiate the SDK Object within the sample code that your are using to Authenticate and Send Fax :

Please include this code within your demo application :

// Create SDK instance
$rcsdk = new SDK($credentials['appKey'], $credentials['appSecret'], $credentials['server'], 'Demo', '1.0.0');
$platform = $rcsdk->platform();
If you take a lookat our Demo Folder within the SDK you would see a file named "_credentialsSample.json" . Please make sure you are using all the details on your sandbox account like appKey, appSecret and the credentials on your sandbox account etc. 


Also for your reference, i am providing a sample code below to Authenticate and Send Fax : 

$credentials_file = count($argv) > 1         ? $argv[1] : __DIR__ . '/_credentialsSample.json';


        $credentials = json_decode(file_get_contents($credentials_file), true);

        // Create SDK instance
        $rcsdk = new SDK($credentials['appKey'], $credentials['appSecret'], $credentials['server'], 'Demo', '1.0.0');
        $platform = $rcsdk->platform();
        // // Authorize
        $platform->login($credentials['username'], $credentials['extension'], $credentials['password'], true);
    
        
        $request = $rcsdk->createMultipartBuilder()
                 ->setBody(array(
                     'to'         => array(
                         array('phoneNumber' => 'toNumber'),
                     ),
                     'faxResolution' => 'High',
                 ))
                 ->add('Plain Text', 'file.txt')
                 ->add(fopen('https://developers.ringcentral.com/assets/images/ico_case_crm.png', 'r'))    
                 ->request('/account/~/extension/~/fax');


        $response = $platform->sendRequest($request);
        print_r("Request");
        print_r($response->request()-> getHeaders());
        print_r("Response");
        print_r($response->raw());

The First Step
Dec 14, 2015 10:46 AM UTC
Hi Anil,

Thank you for your response. I did instantiate the SDK Object. Somehow missed pasting it in  sample code above. 

I get the same error when i substituted the reference code you provided

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Invalid response string' in vendor ingcentralpsr7srcfunctions.php:478
Stack trace:
#0 <path_to_project>vendor ingcentral ingcentral-phpsrcHttpApiResponse.php(56): RingCentralPsr7parse_response('HTTP/1.1 0 OK??')
#1 <path_to_project>vendor ingcentral ingcentral-phpsrcHttpClient.php(99): RingCentralSDKHttpApiResponse->__construct(Object(RingCentralPsr7Request), false, 0)
#2 <path_to_project>vendor ingcentral ingcentral-phpsrcHttpClient.php(25): RingCentralSDKHttpClient->loadResponse(Object(RingCentralPsr7Request))
#3 <path_to_project>vendor ingcentral ingcentral-phpsrcPlatformPlatform.php(214): RingCentralSDKHttpClient->send(Object(RingCentralPsr7Request))
#4 <path_to_project>vendor ingcentral ingcentral-phpsrcPlatformPlatform.php(301): RingCentralSDKPlatformPlatform->sendReq in C:inetpubwwwrooterexpresspublicvendor ingcentral ingcentral-phpsrcHttpClient.php on line 44
This error occurs when i try to call the  

// Authorize call
        $platform->login($credentials['username'], $credentials['extension'], $credentials['password'], true);
The First Step
Dec 14, 2015 6:31 PM UTC
Could you please provide the Organization Name or the sandbox number with which you are using the developer platform, we could take a look at your account. 
The First Step
Dec 15, 2015 2:28 AM UTC
The sandbox username is +18024486632. I tested the sandbox credentials on ringway API explorer : Send Fax. It works fine and I receive a fax.
The First Step
Dec 15, 2015 2:59 AM UTC
I have created a sample Demo Application to Authenticate and send Fax . 

Please take a look at the file named "sendFax.php" in the Github Repo and you could modify the code accordingly within your application:

https://github.com/anilkumarbp/ringcentral-php-demo


The First Step
Dec 15, 2015 8:17 AM UTC
Hi Anil,

I copied your code and tried to run it. 

Errors:

Error 1
 - Fatal error: Class 'RingCentralSDKSDK' not found in C:inetpubwwwroot ingcentral-php-demoappauthenticate.php on line 10

The vendor ingcentral ingcentral-php folder was empty, so i downloaded the zip file from https://github.com/ringcentral/ringcentral-php and pasted those files in the folder. The error disappears which leads to Error 2

Error 2 - 
Fatal error: Interface 'PsrHttpMessageRequestInterface' not found in C:inetpubwwwroot ingcentral-php-demovendor ingcentralpsr7srcRequest.php on line 13
The First Step
Dec 15, 2015 3:44 PM UTC
Hi Anil, 

We have resolved the issue we came across while trying to integrate Ringcentral PHP SDK. The issue was caused due to cURL SSL certificate issue.

Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed. Copied cacert.pem file and modified php.ini with the path to cacert.pem and it works.

Thank you for your support.
The First Step
Dec 16, 2015 3:07 PM UTC
Hi,

Can you tell me how i can format the fax message into a proper content with bold and next line
eg:

$request = $rcsdk->createMultipartBuilder()   
->setBody(array(
'to'  => array(
array('phoneNumber' => '12672800722'),
'faxResolution' => 'High',))
->add('Plain Text <Br> <b> Hello </b>', 'file.txt')
->request('/account/~/extension/~/fax');
Right now the content shows up in the fax message as such:
Plain Text <Br> <b> Hello </b>.
Can we have html formatting:
Plain Text 
Hello.
The First Step
Dec 16, 2015 8:40 PM UTC
You are trying to add HTML formatting to a plain text. You could try replacing the "<" and ">" symbols with "&lt" and "&gt" respectively but i suppose that would work with the text file. 

However, you could create a .pdf format file and you could have it included as your attachment before sending the fax.


The First Step
Dec 17, 2015 9:39 AM UTC
Created a pdf file and as suggested included it as an attachment. Works as expected

Thanks