Git Product home page Git Product logo

ringcentral-php's Introduction

RingCentral SDK for PHP

Build Status Coverage Status Code Document Chat Twitter

RingCentral Developers is a cloud communications platform which can be accessed via more than 70 APIs. The platform's main capabilities include technologies that enable: Voice, SMS/MMS, Fax, Glip Team Messaging, Data and Configurations.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Requirements

  • PHP 7.2+
  • CURL extension
  • MCrypt extension

Installation

Please choose one of the following installation options:

With Composer (recommended)

The installation of composer is local by default. We suggest that you install it at the top level of your application's directory structure.

  1. Install composer:

    $ curl -sS https://getcomposer.org/installer | php

    More info about installation on Linux / Unix / OSX and Windows.

  2. Run the Composer command to install the latest version of SDK:

    $ php composer.phar require ringcentral/ringcentral-php
  3. Require Composer's autoloader in your PHP script (assuming it is in the same directory where you installed Composer):

    require('vendor/autoload.php');

PHAR with bundled dependencies

This is not recommended! Use Composer as modern way of working with PHP packages.

  1. Download PHAR file

  2. Require files:

    require('path-to-sdk/ringcentral.phar');

Please keep in mind that bundled dependencies may interfere with your other dependencies.

Basic Usage

Initialization

$rcsdk = new RingCentral\SDK\SDK('clientId', 'clientSecret', RingCentral\SDK\SDK::SERVER_PRODUCTION);

You also may supply custom AppName and AppVersion parameters with your application codename and version. These parameters are optional but they will help a lot to identify your application in API logs and speed up any potential troubleshooting. Allowed characters for AppName and AppVersion are: letters, digits, hyphen, dot and underscore.

$rcsdk = new RingCentral\SDK\SDK('clientId', 'clientSecret', RingCentral\SDK\SDK::SERVER_PRODUCTION, 'MyApp', '1.0.0');

For production use RingCentral\SDK\SDK::SERVER_PRODUCTION constant. Or type in the server URL by hand.

Authentication

Check authentication status:

$rcsdk->platform()->loggedIn();

Authenticate user with jwt:

$rcsdk->platform()->login([
    'jwt' => 'your_jwt_token'
]);

Authenticate user with authorization code:

$rcsdk->platform()->login([
    'code' => 'authorization code from RingCentral login redirect uri'
]);

Authentication lifecycle

Platform class performs token refresh procedure if needed. You can save authentication between requests in CGI mode:

// when application is going to be stopped
file_put_contents($file, json_encode($rcsdk->platform()->auth()->data(), JSON_PRETTY_PRINT));

// and then next time during application bootstrap before any authentication checks:
$rcsdk->platform()->auth()->setData(json_decode(file_get_contents($file), true));

Important! You have to manually maintain synchronization of SDK's between requests if you share authentication. When two simultaneous requests will perform refresh, only one will succeed. One of the solutions would be to have semaphor and pause other pending requests while one of them is performing refresh.

Performing API call

$apiResponse = $rcsdk->platform()->get('/account/~/extension/~');
$apiResponse = $rcsdk->platform()->post('/account/~/extension/~', array(...));
$apiResponse = $rcsdk->platform()->put('/account/~/extension/~', array(...));
$apiResponse = $rcsdk->platform()->delete('/account/~/extension/~');

print_r($apiResponse->json()); // stdClass will be returned or exception if Content-Type is not JSON
print_r($apiResponse->request()); // PSR-7's RequestInterface compatible instance used to perform HTTP request
print_r($apiResponse->response()); // PSR-7's ResponseInterface compatible instance used as HTTP response

Multipart response

Loading of multiple comma-separated IDs will result in HTTP 207 with Content-Type: multipart/mixed. This response will be parsed into multiple sub-responses:

$presences = $rcsdk->platform()
                 ->get('/account/~/extension/id1,id2/presence')
                 ->multipart();

print 'Presence loaded ' .
      $presences[0]->json()->presenceStatus . ', ' .
      $presences[1]->json()->presenceStatus . PHP_EOL;

Send SMS - Make POST request

$apiResponse = $rcsdk->platform()->post('/account/~/extension/~/sms', array(
    'from' => array('phoneNumber' => 'your-ringcentral-sms-number'),
    'to'   => array(
        array('phoneNumber' => 'mobile-number'),
    ),
    'text' => 'Test from PHP',
));

Get Platform error message

try {

    $rcsdk->platform()->get('/account/~/whatever');

} catch (\RingCentral\SDK\Http\ApiException $e) {

    // Getting error messages using PHP native interface
    print 'Expected HTTP Error: ' . $e->getMessage() . PHP_EOL;

    // In order to get Request and Response used to perform transaction:
    $apiResponse = $e->apiResponse();
    print_r($apiResponse->request());
    print_r($apiResponse->response());

    // Another way to get message, but keep in mind, that there could be no response if request has failed completely
    print '  Message: ' . $e->apiResponse->response()->error() . PHP_EOL;

}

How to debug HTTP

You can set up any HTTPS sniffer (e.g. proxy server, like Charles) and route SDK traffic to it by providing a custom Guzzle Client instance:

use GuzzleHttp\Client as GuzzleClient;

$guzzle = new GuzzleClient([
    'proxy' => 'localhost:8888',
    'verify' => false
]);

$rcsdk = new SDK("clientId", "clientSecret", SDK::SERVER_PRODUCTION, 'Demo', '1.0.0', $guzzle);

Subscriptions

Webhook Subscriptions

$apiResponse = $rcsdk->platform()->post('/subscription', array(
    'eventFilters' => array(
        '/restapi/v1.0/account/~/extension/~/message-store',
        '/restapi/v1.0/account/~/extension/~/presence'
    ),
    'deliveryMode' => array(
        'transportType' => 'WebHook',
        'address' => 'https://consumer-host.example.com/consumer/path'
    )
));

When webhook subscription is created, it will send a request with validation-token in headers to webhook address. Webhook address should return a success request with validation-token in headers to finish webhook register.

WebSocket Subscriptions

use RingCentral\SDK\WebSocket\WebSocket;
use RingCentral\SDK\WebSocket\Subscription;
use RingCentral\SDK\WebSocket\Events\NotificationEvent;

// connect websocket
$websocket = $rcsdk->initWebSocket();
$websocket->addListener(WebSocket::EVENT_READY, function (SuccessEvent $e) {
    print 'Websocket Ready' . PHP_EOL;
    print 'Connection Details' . print_r($e->apiResponse()->body(), true) . PHP_EOL;
});
$websocket->addListener(WebSocket::EVENT_ERROR, function (ErrorEvent $e) {
    print 'Websocket Error' . PHP_EOL;
});
$websocket->connect();

// create subscription
$subscription = $rcsdk->createSubscription();
$subscription->addEvents(array(
    '/restapi/v1.0/account/~/extension/~/presence',
    '/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS'
));
$subscription->addListener(Subscription::EVENT_NOTIFICATION, function (NotificationEvent $e) {
    print 'Notification ' . print_r($e->payload(), true) . PHP_EOL;
});
$subscription->register();

We need to create websocket connection before creating subscription. When websocket connection get error, need to re-created websocket and subscription manually.

PubNub Subscriptions

This is deprecated, please use WebSocket Subscription.

use RingCentral\SDK\Subscription\Events\NotificationEvent;
use RingCentral\SDK\Subscription\PubnubSubscription;

$subscription = $rcsdk->createSubscription('Pubnub);
$subscription->addEvents(array('/restapi/v1.0/account/~/extension/~/presence'))
$subscription->addListener(PubnubSubscription::EVENT_NOTIFICATION, function (NotificationEvent $e) {
    print_r($e->payload());
});
$subscription->setKeepPolling(true);
$apiResponse = $subscription->register();

Please keep in mind that due to limitations of the PubNub library, which is synchronous, subscriptions may expire and must be re-created manually.

Multipart Requests

SDK provides a helper to make sending of faxes easier.

$request = $rcsdk->createMultipartBuilder()
                 ->setBody(array(
                     'to'         => array(
                         array('phoneNumber' => '16501112233'),
                     ),
                     'faxResolution' => 'High',
                 ))
                 ->add('Plain Text', 'file.txt')
                 ->add(fopen('path/to/file', 'r'))
                 ->request('/account/~/extension/~/fax'); // also has optional $method argument

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

How to demo?

Clone the repo and create a file demo/_credentials.php copy the contents from the file 'demo/_credentialsSample.php' as shown below:

return array(
    'username'     => '18881112233', // your RingCentral account phone number
    'extension'    => null, // or number
    'password'     => 'yourPassword',
    'clientId'     => 'yourClientId',
    'clientSecret' => 'yourClientSecret',
    'server'       => 'https://platform.ringcentral.com', // for production - https://platform.ringcentral.com
    'smsNumber'    => '18882223344', // any of SMS-enabled numbers on your RingCentral account
    'mobileNumber' => '16501112233', // your own mobile number to which script will send sms
    'dateFrom'     => 'yyyy-mm-dd',
    'dateTo'       => 'yyyy-mm-dd'
);

Then execute:

$ php index.php

Should output:

Auth exception: Refresh token has expired
Authorized
Refreshing
Refreshed
Users loaded 10
Presence loaded Something New - Available, Something New - Available
Expected HTTP Error: Not Found (from backend)
SMS Phone Number: 12223334455
Sent SMS https://platform.ringcentral.com/restapi/v1.0/account/111/extension/222/message-store/333
Subscribing

After that script will wait for any presence notification. Make a call to your account or make outbound call from your account. When you will make a call, script will print notification and exit.

Please take a look in demo folder to see all the demos.

ringcentral-php's People

Contributors

anilkumarbp avatar byrnereese avatar carusogabriel avatar coxlr avatar dakingkong avatar embbnux avatar emilorol avatar grokify avatar kasperfranz avatar kirill-konshin avatar manavo avatar mikestowe avatar pacovu avatar sushilmallrc avatar tylerlong avatar uize avatar vyshakhbabji avatar wonderboyjon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ringcentral-php's Issues

Subscription class not in autoloader

<?php

require_once('vendor/autoload.php');

// Configuration
define('SANDBOX', 1);
define('BASE_URL', SANDBOX ? 'https://platform.devtest.ringcentral.com' : 'https://platform.ringcentral.com');
define('KEY', 'my_app_key');
define('SECRET', 'my_app_secret');
define('USERNAME', 'my_username'); // Main Phone Number
define('PASSWORD', 'my_password');

$rcsdk = new RC\SDK(KEY, SECRET, BASE_URL);
$rcsdk->getPlatform()->authorize(USERNAME, '', PASSWORD, true);
$rcsdk->getPlatform()->isAuthorized();

function getVoiceMails() {
    if ($rcsdk->getPlatform()->isAuthorized()) {
        try {
            $response = $rcsdk->getPlatform()->get('/account/~/extension/~/message-store?messageType=VoiceMail');
        } catch (RC\http\HttpException $e) {
            print 'Expected HTTP Error: ' . $e->getResponse()->getError() . PHP_EOL;
        }

        return $response->getJson();
    }
}

$rcsdk->getSubscription()
    ->addEvents(array('/restapi/v1.0/account/~/extension/~/presence'))
    ->on(Subscription::EVENT_NOTIFICATION, function (NotificationEvent $e) {

        print_r($e->getPayload());

    })
    ->register();
PHP Fatal error:  Class 'Subscription' not found in /home/rafael/PhpstormProjects/ringcentral-vm/program.php on line 37

Was this done intentionally?

Laravel 5.6 incompatibility with symfony/event-dispatcher

When installing ringcentral to a fresh install of laravel 5.6 you get a error message telling you it cant because it requires symfony/event-dispatcher ^2.7|^3.3.2. Laravel currently uses symfony/event-dispatcher 4.0.10. Is it possible to bring support up for this version? #19

RingCentral PHP SDK throwing Uncaught exception InvalidArgumentException on login

I am trying to use RingCentral PHP SDK to send SMS. When I use code from demo then I get error shown in below screenshot. When I use JS SDK with same credentials then I am able to successfully send SMS. Following is my code for php:

use RingCentral\SDK\SDK;
// require_once(__DIR__ . '/vendor/_bootstrap.php');
require(__DIR__ . '/vendor/autoload.php');

$rcsdk = new SDK('appKey', 'appSecret', SDK::SERVER_SANDBOX);
$platform = $rcsdk->platform();

$platform->login('sandbox_no', '', 'password');

Please let me know if I am missing something or I need to install any additional component.
php sdk invalidargumentexception

Incomplete/incorrect function documentation

Some of the function descriptions in this library are incomplete, incorrect or missing entirely, particularly within Platform.php

For example:

`/**
* @param string $options['redirectUri']
* @param string $options['state']
* @param string $options['brandId']
* @param string $options['display']
* @param string $options['prompt']
* @param array $options
* @throws ApiException
* @return ApiResponse
*/
public function authUrl($options)
{

    return $this->createUrl(self::AUTHORIZE_ENDPOINT . '?' . http_build_query(
        array (
        'response_type' => 'code',
        'redirect_uri'  => $options['redirectUri'] ? $options['redirectUri'] : null,
        'client_id'     => $this->_clientId,
        'state'         => $options['state'] ? $options['state'] : null,
        'brand_id'      => $options['brandId'] ? $options['brandId'] : null,
        'display'       => $options['display'] ? $options['display'] : null,
        'prompt'        => $options['prompt'] ? $options['prompt'] : null
    )), array(
        'addServer'     => 'true'
    ));
}`

This function does not return an ApiResponse object, it returns a string.
This function does not throw an ApiException.
There is no description of what this function actually does/what it's for.

public function auth() { return $this->_auth; }

This function does not have any kind of description or specify what the return type is.

There are numerous other examples of this issue. It makes it very difficult to know whether we're actually using the functions correctly and causes a nightmare for the IDE when it tries to detect issues such as uncaught exceptions or mismatched return types.

Is there any chance someone could go through and fix/add/tidy up the function descriptions please?

Get attachment

Could you help me to use SDK for get attachment code? I am using below but do not know hot to get binary data. HTTP status 200 Ok.

$response = $this->platform->get('/account//extension//message-store/' . $messageId . '/content/' . $attachmentId)
->multipart();

    return $response->json();

Code searching for Ringcentral\SDK\SDK

Hi! I have installed the php code and my directory structure looks like below:
ringcentral dir

But I am getting the error [06-Apr-2018 07:35:30 UTC] PHP Fatal error: Class 'RingCentral\SDK\SDK' not found in /site-home/site-name/public_html/iupgrade/ringcentral/demo/authData.php on line 14

How to resolve this?
Thanks!

PubNub doesn't work

$subscription = $rcsdk->createSubscription();
$subscription->addEvents(array('/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS'));
$subscription->addListener(Subscription::EVENT_NOTIFICATION, function (NotificationEvent $e) {
    print_r($e->payload());
});
$subscription->setKeepPolling(true);
$r = $subscription->register();

Whenever there is a new notification, the program crashes with the following log:

[2018-05-03 09:07:28] PubNub.DEBUG: GET https://ps.pndsn.com/v2/subscribe/sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe/1118584868256543_cbe8ceb9/0?pnsdk=PubNub-PHP%2F4.0.0&uuid=CCD08540-9533-4FEE-A037-C85899725F51 {"method":"Subscribe"} []
[2018-05-03 09:07:29] PubNub.DEBUG: Response body: {"t":{"t":"15253384490658455","r":4},"m":[]} {"method":"Subscribe","statusCode":200} []
[2018-05-03 09:07:29] PubNub.DEBUG: GET https://ps.pndsn.com/v2/subscribe/sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe/1118584868256543_cbe8ceb9/0?tt=15253384490658455&tr=4&pnsdk=PubNub-PHP%2F4.0.0&uuid=CCD08540-9533-4FEE-A037-C85899725F51 {"method":"Subscribe"} []
[2018-05-03 09:08:18] PubNub.DEBUG: Response body: {"t":{"t":"15253384984578890","r":4},"m":[{"a":"1","f":0,"p":{"t":"15253384983976115","r":1},"k":"sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe","c":"1118584868256543_cbe8ceb9","d":{"uuid":"2419942694190264390","event":"/restapi/v1.0/account/130829004/extension/130829004/message-store/instant?type=SMS","timestamp":"2018-05-03T09:08:21.384Z","subscriptionId":"1f28df8f-65b0-4998-84c0-0810705eb3b7","ownerId":"130829004","body":{"id":"4307708004","to":[{"phoneNumber":"+17322764403","name":"Something New","location":"Lakewood, NJ"}],"from":{"phoneNumber":"+1650641xxxx","location":"Mountain View, CA"},"type":"SMS","creationTime":"2018-05-03T09:08:18.326Z","lastModifiedTime":"2018-05-03T09:08:18.326Z","readStatus":"Unread","priority":"Normal","attachments":[{"id":"4307708004","type":"Text","contentType":"text/plain"}],"direction":"Inbound","availability":"Alive","subject":"test","messageStatus":"Received"}}}]} {"method":"Subscribe","statusCode":200} []

Fatal error: Uncaught Error: Cannot use object of type PubNub\Models\Consumer\PubSub\PNMessageResult as array in /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/ringcentral/ringcentral-php/src/Subscription/Subscription.php:355
Stack trace:
#0 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/ringcentral/ringcentral-php/src/Subscription/Subscription.php(51): RingCentral\SDK\Subscription\Subscription->notify(Object(PubNub\Models\Consumer\PubSub\PNMessageResult))
#1 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Managers/ListenerManager.php(68): RingCentral\SDK\Subscription\PubnubCallback->message(Object(PubNub\PubNub), Object(PubNub\Models\Consumer\PubSub\PNMessageResult))
#2 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Managers/SubscriptionManager.php(266): PubNub\Managers\ListenerManager->announceMessage(Object(PubNub\Models\Consumer\PubSub\PNMessageResult))
#3 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Man in /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/ringcentral/ringcentral-php/src/Subscription/Subscription.php on line 355

PNMessageResult is not an array, but it is used as an array.

Here is the source code for PNMessageResult: https://github.com/pubnub/php/blob/master/src/PubNub/Models/Consumer/PubSub/PNMessageResult.php

Update the notify method here https://github.com/ringcentral/ringcentral-php/blob/master/src/Subscription/Subscription.php#L446 to

public function notify($pubnubMessage)
    {
        $message = $pubnubMessage->getMessage();
        $message = $this->decrypt($message);
        $this->dispatch(self::EVENT_NOTIFICATION, new NotificationEvent($message));
        return $this->_keepPolling;
    }

can fix the issue.

Bring back PHP 5.3 compatibility

Last PHP 5.3 compatible release so far is 0.5, in order to satisfy our clients we need to bring 5.3 back (it was broken in 5.4 because of PSR-7 compatibility).

This task will most likely involve making a PR for Guzzle's PSR-7 repo.

Unable to authenticate

I'm using dev-master version of SDK since I'm using it in Laravel 5.2 App.
When authenticating, I get an error related to missing Headers.

ApiException in Client.php line 54:
Client error: `POST https://platform.ringcentral.com/restapi/oauth/token` resulted in a `400 Bad Request` response:
{
"error" : "invalid_client",
"error_description" : "Authentication header value is malformed"
}

SDK Can't be Used to Download Attachment Data

I am using:

$attachment = "https://platform.devtest.ringcentral.com/restapi/v1.0/account/130980004/extension/130980004/message-store/1146871004/content/1146871004";
$res2 = $rcsdk->getPlatform()->get($attachment);
file_put_contents("file.pdf",$res2->getBody());

This grabs the content and creates a file that is 189KB (It's a few bytes off the size of the PDF I get from logging into my account). The file that it creates though is corrupt thought. It appears that the data returned by getBody() isn't usable for creating a valid file. Either that method should be updated to retrieve proper data or a new method should be created.

File not found autoload.php

Download demo. Run it.

../vendor/autoload.php failed to open stream: No such file or directory

Issue produced on Oct-3rd-2017

Yii2 installation error with symfony/event-dispatcher v4.1.6

Hi!
When I tried to install ringcentral-php in Yii2 project by using composer I got this error : Your requirements could not be resolved to an installable set of packages.

Problem 1
- Conclusion: don't install ringcentral/ringcentral-php 2.1.3
- Conclusion: don't install ringcentral/ringcentral-php 2.1.2
- Conclusion: remove symfony/event-dispatcher v4.1.6
- Installation request for ringcentral/ringcentral-php ^2.1 -> satisfiable by ringcentral/ringcentral-php[2.1.1, 2.1.2, 2.1.3].
- Conclusion: don't install symfony/event-dispatcher v4.1.6
- ringcentral/ringcentral-php 2.1.1 requires symfony/event-dispatcher ^2.7|^3.3.2 -> satisfiable by symfony/event-dispatcher[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21,
v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2
.7.49, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2
.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16,
v3.3.17, v3.3.18, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.14, v3.4.15, v3.4.16, v3.4.17, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9].
- Can only install one of: symfony/event-dispatcher[v2.7.0, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.1, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.10, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.11, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.12, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.13, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.14, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.15, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.16, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.17, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.18, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.19, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.2, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.20, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.21, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.22, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.23, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.24, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.25, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.26, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.27, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.28, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.29, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.3, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.30, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.31, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.32, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.33, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.34, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.35, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.36, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.37, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.38, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.39, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.4, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.40, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.41, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.42, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.43, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.44, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.45, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.46, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.47, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.48, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.49, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.5, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.6, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.7, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.8, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.7.9, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.0, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.1, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.10, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.11, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.12, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.13, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.14, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.15, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.16, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.17, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.18, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.19, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.2, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.20, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.21, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.22, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.23, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.24, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.25, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.26, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.27, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.28, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.29, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.3, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.30, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.31, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.32, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.33, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.34, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.35, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.36, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.37, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.38, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.39, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.4, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.40, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.41, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.42, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.43, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.44, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.45, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.46, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.5, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.6, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.7, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.8, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v2.8.9, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.10, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.11, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.12, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.13, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.14, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.15, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.16, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.17, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.18, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.2, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.3, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.4, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.5, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.6, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.7, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.8, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.3.9, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.0, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.1, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.10, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.11, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.12, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.13, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.14, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.15, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.16, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.17, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.2, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.3, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.4, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.5, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.6, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.7, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.8, v4.1.6].
- Can only install one of: symfony/event-dispatcher[v3.4.9, v4.1.6].
- Installation request for symfony/event-dispatcher (locked at v4.1.6) -> satisfiable by symfony/event-dispatcher[v4.1.6].

Installation failed, reverting ./composer.json to its original content.

Can any body tell how can I workaround this error?

Thank's.

Problem in sending Fax?

Hi
I run the demo/fax.php

always return

Response text: {
"message" : "Bad Request",
"errors" : [ ]
}
Previous: Response has unsuccessful status
any idea why ?

Demo code not working with the following steps..

Hi,

I have performed the following steps:

clone repo
composer install
change credentialsSample to credentials
php index.php

And i get the following message after a few seconds:

[2017-11-18 01:06:54] PubNub.ERROR: cURL error 28: Operation timed out after 60015 milliseconds with 0 bytes received {"method":"Subscribe"} []

[2017-11-18 01:06:54] PubNub.DEBUG: GET https://ps.pndsn.com/v2/subscribe/sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe/294679779839432_c55356a2/0?tt=2144983647&tr=3&pnsdk=PubNub-PHP%2F4.0.0&uuid=027DE65F-0267-4485-86A3-283E8EE2A9A7 {"method":"Subscribe"} []

The connection remains open but console continuously logs the above, I have tried to call the account number and extensions and neither of them work, Is their any ideas?

3-Legged OAuth in PHP SDK

Reported by customer in RingCentral Developer Community:

I am having issue when using PHP for 3-Legged.
When I click on Authorize button on login consent screen, I am receiving following error:

Authentication code cannot be obtained successfully for the given mailbox.

php-sdk-threeleggedoauth-issue

Knowing that a developer must make a call to /restapi/oauth/authorize with a query string that contains key/values for: redirect_uri, client_id, state, response_type, and prompt leads me to `grep -lr "/authorize ./" from root of the SDK without results for 3-Legged Auth using the appropriate route.

Since PHP is a server-side language, that leads me to think that a PHP developer implementing 3-Legged OAuth is required to use either our [https://github.com/ringcentral/ringcentral-js](JS SDK) in the client-side code or implement their own code, to generate the server-client requests to apply appropriate data and handle client-side redirects appropriately.

Authorization header is not specified

Guys, few days ago I started to receive this error:

Exception: Authorization header is not specified SDK HTTP Error at https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~/message-store?messageType=VoiceMail&dateFrom=2016-04-16T07%3A00%3A02%2B03%3A00&dateTo=2016-04-17T20%3A55%3A15%2B03%3A00 Response text: { "errorCode" : "OAU-123", "message" : "Authorization header is not specified", "errors" : [ { "errorCode" : "OAU-123", "message" : "Authorization header is not specified" } ] } Previous: Response has unsuccessful status

Reproduced only on production server (works fine on devtest) at each api call except authorization. Can you help me please? Is it server-side bug?

Code searching for /../vendor/autoload.php

Hello,
I have followed the installation instructions and installed the ringcentral php code in a folder on our website. On trying to run the demo file I get the following error in the error log:
[04-Apr-2018 12:33:58 America/Denver] PHP Fatal error: require_once(): Failed opening required '/../vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /site-home/site-name/public_html/iupgrade/ringcentral/vendor/ringcentral/ringcentral-php/demo/_bootstrap.php on line 3
I am attaching the directory structure of the files installed.
directory-structure

Thanks!

Conflict with other packages because "guzzlehttp/psr7": "dev-master" is required

Looking into implementing RingCentral into our app I have hit a conflict.

ringcentral/ringcentral-php requires guzzlehttp/psr7: dev-master
However, another dependency for our project, intervention/image, requires guzzlehttp/psr7: ~1.1
So when doing a composer require for the dev-master it fails as it complains that intervention/image needs 1.1.

Austins-MacBook-Air:laravel austin$ composer require ringcentral/ringcentral-php
Using version dev-master for ringcentral/ringcentral-php
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Can only install one of: guzzlehttp/psr7[dev-master, 1.2.0].
    - Can only install one of: guzzlehttp/psr7[dev-master, 1.2.0].
    - Can only install one of: guzzlehttp/psr7[dev-master, 1.2.0].
    - ringcentral/ringcentral-php dev-master requires guzzlehttp/psr7 dev-master -> satisfiable by guzzlehttp/psr7[dev-master].
    - Installation request for ringcentral/ringcentral-php dev-master -> satisfiable by ringcentral/ringcentral-php[dev-master].
    - Installation request for guzzlehttp/psr7 == 1.2.0.0 -> satisfiable by guzzlehttp/psr7[1.2.0].

Installation failed, reverting ./composer.json to its original content.

Do you have a good reason for requiring "guzzlehttp/psr7": "dev-master"? Can you please change the composer.json require dependency?

Fatal error: Uncaught TypeError: Argument 1 passed to PubNub\Exceptions\PubNubUnsubscribeException::setChannels()

This is the first time that I use RingCentral PHP SDK. Everything worked fine until I tried PubNub

$subscription = $rcsdk->createSubscription();
$subscription->addEvents(array('/restapi/v1.0/account/~/extension/~/message-store/instant?type=SMS'));
$subscription->addListener(Subscription::EVENT_NOTIFICATION, function (NotificationEvent $e) {
    print_r($e->getPayload());
});

$apiResponse = $subscription->register();
[2018-05-03 08:25:30] PubNub.DEBUG: GET https://ps.pndsn.com/v2/subscribe/sub-c-b8b9cd8c-e906-11e2-b383-02ee2ddab7fe/1116154513890231_8370446d/0?pnsdk=PubNub-PHP%2F4.0.0&uuid=4A9EE615-4764-4BC8-B780-88353F9D7282 {"method":"Subscribe"} []
[2018-05-03 08:25:30] PubNub.DEBUG: Response body: {"t":{"t":"15253359305298380","r":4},"m":[]} {"method":"Subscribe","statusCode":200} []

Fatal error: Uncaught TypeError: Argument 1 passed to PubNub\Exceptions\PubNubUnsubscribeException::setChannels() must be of the type array, string given,called in /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/ringcentral/ringcentral-php/src/Subscription/Subscription.php on line 35 and defined in /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Exceptions/PubNubUnsubscribeException.php:32
Stack trace:
#0 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/ringcentral/ringcentral-php/src/Subscription/Subscription.php(35): PubNub\Exceptions\PubNubUnsubscribeException->setChannels('111615451389023...')
#1 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Managers/ListenerManager.php(57): RingCentral\SDK\Subscription\PubnubCallback->status(Object(PubNub\PubNub), Object(PubNub\Models\ResponseHelpers\PNStatus))
#2 /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Managers/SubscriptionManager.php(118): PubNub\Managers\Listener in /Users/tyler.liu/src/php/sms-api-php-quickstart/vendor/pubnub/pubnub/src/PubNub/Exceptions/PubNubUnsubscribeException.php on line 32

I think
https://github.com/ringcentral/ringcentral-php/blob/master/src/Subscription/Subscription.php#L50
should be changed to $e->setChannels(array($sub['deliveryMode']['address']));

Improve CONTRIBUTE documentation

Need to provide more information on how we want developers to contribute, the PHP code style we expect them to use, what types of tests and coverage we expect them to use, branching strategy in Git we expect, etc...

Seem to never be able to authorize... what could I be doing wrong?

Do I need to use sandbox accounts in the "devtest" area? I would be happy with just rest API GEt's .... but I would like to get this working

xception: Refresh token has expired Exception: Bad Application Release Status: Blocked SDK HTTP Error: Bad Application Release Status: Blocked at https://platform.devtest.ringcentral.com/restapi/oauth/token stdClass Object ( [error] => invalid_client [error_description] => Bad Application Release Status: Blocked ) Previous: Response has unsuccessful status #0 /home/dashboardrmonnet/public_html/test/rc/lib/platform/Platform.php(238): RingCentral\http\Request->send() #1 /home/dashboardrmonnet/public_html/test/rc/lib/platform/Platform.php(145): RingCentral\platform\Platform->authCall(Object(RingCentral\http\Request)) #2 /home/dashboardrmonnet/public_html/test/rc/demo/authData.php(43): RingCentral\platform\Platform->authorize('xxxxx', 'xxxxxxx', 'xxxxxxxx', true) #3 /home/dashboardrmonnet/public_html/test/rc/index.php(3): require('/home/dashboard...') #4 {main}

PHP SDK issue

Hard to know what SDK version to use for composer. I used 0.5.0 and it worked. >= 1.0.0 didn't work.

Add optional support for custom SSL CA Certificate path

Add optional support for the following PHP cURL settings as mentioned in issue #29.

  • CURLOPT_SSL_VERIFYHOST
  • CURLOPT_SSL_VERIFYPEER
  • CURLOPT_SSLVERSION

Without the above, an option is to direct users to set the curl.cainfo property in php.ini.

Example of multipart request for custom greeting

I'm attempting to create a custom greeting as outlined in the docs: https://developer.ringcentral.com/api-docs/latest/index.html#!#RefCreateUserCustomGreeting. Unfortunately this is failing using both a WAV and MP3 file with a 415 Unsupported Media Type error. Below is an example of my code:

$multipartRequest = $rcsdk->createMultipartBuilder()->setBody([
    'type' => 'Voicemail',
    'answeringRule' => [
        'id' => '[redacted]'
    ],
])->add(fopen('test_greeting.mp3', 'r'))->request('/restapi/v1.0/account/~/extension/[redacted]/greeting');

$response = $rcsdk->platform()->sendRequest($multipartRequest);

Could you provide a working example of createMultipartBuilder for this use case? Thanks!

Laravel 5.5 Support

I am trying to use this library with a Laravel 5.5 project, but Laravel 5.5 required symfony/event-dispatcher version 4.0.4, while this library goes up to v3.4.4 it seems.

Can this work with 4.0.4, or am I SOL?

I'm tempted to download it manually and test it out, but wanted to check with the maintainers first.

Unable to Refresh token

When I try to refresh the token, I get an error "Refresh Token has Expired".
After user authorized the app, I saved entire payload which had following info...

{
    "access_token": "*****",
    "token_type": "bearer",
    "expires_in": 3598,
    "refresh_token": *****",
    "refresh_token_expires_in": 604798,
    "scope": "ReadCallLog",
    "owner_id": "12345",
    "endpoint_id": "*****"
}

How can I have valid refresh token to call other apis?

Update App Key and App Secret terminology to Client ID and Client Secret

The terminology in the Developer Portal has changed from App Key and App Secret to Client ID and Client Secret to better align with the OAuth 2.0 standard (IETF RFC 6749). There have been some questions on where to get the App Key and App Secret now that these terms are no longer used. Please update to reflect this.

Use of the boolean parameter in Authenticate User method

Reading the documentation for Authenticate User, there is a comment after the example code in the README.md file which says:

// change true to false to not remember user

But the example code doesn't show the use of either boolean value:

$sdk->getPlatform()->login('username', 'extension (or leave blank)', 'password');

Additionally, after looking at the login method definition, there isn't any use of a boolean value:
https://github.com/ringcentral/ringcentral-php/blob/master/src/Platform/Platform.php#L113

Docs indicate PHP 5.5+ support but dependency requires PHP 7.0

Reported on the DevCommunity using PHP 5.6.23:

https://devcommunity.ringcentral.com/ringcentraldev/topics/sms-api-for-sending-text-to-customers-and-get-reply-against-sms

These installation instructions with PHP 5.6.23 results in the error below:

$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar require ringcentral/ringcentral-php

Error:

  Problem 1
    - phpunit/php-token-stream 2.0.1 requires php ^7.0 -> your PHP version (5.6.23) does not satisfy that requirement.
    - phpunit/php-token-stream 2.0.1 requires php ^7.0 -> your PHP version (5.6.23) does not satisfy that requirement.
    - Installation request for phpunit/php-token-stream (locked at 2.0.1) -> satisfiable by phpunit/php-token-stream[2.0.1]

Exception: cURL error 3: malformed

Hi,

Our server is using PHP 7 and I'm trying to fix all the compatibility issues that keep popping up. One error that I got:

image

I looked for error 3 and it says: The URL was not properly formatted.

My code:
$response = $platform ->post('/account/~/extension/~/sms', array( 'from' => array('phoneNumber' => $username), 'to' => array( array('phoneNumber' => $to), ), 'text' => 'Test to get message code status', )); print_r($response->response());

What am I doing wrong?

Unauthorized for this grant type

The api is throwing me the error . { "error" : "unauthorized_client", "error_description" : "Unauthorized for this grant type" } on authData.php page while i am trying to login .

Laravel 5.5 Perpetually has "Refresh Token has Expired" Status

I've been working on a Laravel 5.5 app to Monitor Call logs. When I started, it was just in PHP and the tokens worked fine. Since restarting the project with Laravel I've had the inability to test the site because it refuses to let me refresh the token. I even tried creating a new application from scratch and ended up with the same exact issue.

Remove usage of environment variables for SERVER value in Demo code

The demo code recommends using the _credentials.php returned array variable to reference the desired target RingCentral server, and then referencing that from within the code for login and auth.

Instead, this should follow the same example presented in the README.md file which leverages the SDK's constant variable: RingCentral\SDK\SDK::SERVER_SANDBOX or RingCentral\SDK\SDK::SERVER_PRODUCTION to be more consistent.

Error when run composer.phar command

I am installing SDK in local machine โ€“ Downloaded ZIP file and extract in Desktop.

Go to terminal (Using Ubuntu 17.04) and follow below steps

Step 1 :: curl -sS https://getcomposer.org/installer | php
Run successfully

Step 2 :: php composer.phar require ringcentral/ringcentral-php

Getting below error โ€“ Will you help me to resolve?

Your requirements could not be resolved to an installable set of packages.

Problem 1
- The requested package ringcentral/ringcentral-php No version set (parsed as 1.0.0) is satisfiable by ringcentral/ringcentral-php[No version set (parsed as 1.0.0)] but these conflict with your requirements or minimum-stability.

Installation failed, reverting ./composer.json to its original content.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.