ovh / php-ovh-sms

PHP for ovh sms API
Other
49 stars 49 forks source link

error ! #4

Closed kefahB closed 8 years ago

kefahB commented 8 years ago

Bonjour, J'ai le même erreur ! et j'ai essayé de changer les credentials comme vous avez indiqué mais, je fait u $sms->getAccounts() et ca retourn bien le compte sms, mais dès que je fait setAccount() ou autre ca retourne le code suivant :

Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error response [url] https://api.ovh.com/1.0/sms/sms-******-1 [status code] 403 [reason phrase] Forbidden' in /home/-_-/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:89 Stack trace: #0 /home/--/www/send_sms/vendor/guzzlehttp/guzzle/src/Subscriber/HttpError.php(33): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Message\Response)) #1 /home/--/www/send_sms/vendor/guzzlehttp/guzzle/src/Event/Emitter.php(109): GuzzleHttp\Subscriber\HttpError->onComplete(Object(GuzzleHttp\Event\CompleteEvent), 'complete') #2 /home/--/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(91): GuzzleHttp\Event\Emitter->emit('complete', Object(GuzzleHttp\Event\CompleteEvent)) #3 /home/--/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(132): GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction)) #4 /home/--/ww in /home/-_-/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 89

j'ai testé sur les deux https://api.ovh.com/createToken/index.cgi?GET=/sms/&PUT=/sms/&DELETE=/sms/&POST=/sms/ et https://api.ovh.com/createToken/index.cgi?GET=/sms/*&PUT=/sms/*&DELETE=/sms/*&POST=/sms/*

VincentCasse commented 8 years ago

Bonjour,

Le deuxième lien semble bon. Avez vous la même erreur avec ? Si oui, pouvez vous envoyer le code que vous utilisez pour produire cette erreur (sans les credentials bien entendu)

Cordialement

kefahB commented 8 years ago

Merci pour votre réponse, avec le deuxième liens je n'arrive même pas à faire un getAccounts() ! mais avec le premier j'obtiens bien mon account sms mais dès que je déclare le setAccount ca ne marche plus !


require __DIR__ . '/vendor/autoload.php';
use \Ovh\Sms\SmsApi;

$applicationKey = "---";
$applicationSecret = "---";
$consumer_key = "---";

$endpoint = 'ovh-eu';

$Sms = new SmsApi(
    $applicationKey,
    $applicationSecret,
    $endpoint,
    $consumer_key
);

// Get available SMS accounts
$accounts = $Sms->getAccounts();
echo($accounts[0]);
// Set the account you will use
$Sms->setAccount($accounts[0]);
VincentCasse commented 8 years ago

Ah ok,

Et avec ce lien ? https://api.ovh.com/createToken/index.cgi?GET=/sms/&GET=/sms/*&PUT=/sms/*&DELETE=/sms/*&POST=/sms/*

kefahB commented 8 years ago

Toujours error ! est ce que le faite d'avoir un password à la racine du site (dans .htaccess) étant que le site est en développement fait cette erreur ?! Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error response [url] https://api.ovh.com/1.0/sms [status code] 403 [reason phrase] Forbidden' in /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:89 Stack trace: #0 /home//******/www/send_sms/vendor/guzzlehttp/guzzle/src/Subscriber/HttpError.php(33): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Message\Response)) #1 /home//******/www/send_sms/vendor/guzzlehttp/guzzle/src/Event/Emitter.php(109): GuzzleHttp\Subscriber\HttpError->onComplete(Object(GuzzleHttp\Event\CompleteEvent), 'complete') #2 /home//******/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(91): GuzzleHttp\Event\Emitter->emit('complete', Object(GuzzleHttp\Event\CompleteEvent)) #3 /home//******/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(132): GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction)) #4 /home/cocarzfrie/www/send_sms/vend in /home//******/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 89

VincentCasse commented 8 years ago

Bonjour,

Je viens de tester ton code avec le dernier lien que je viens de donner (https://api.ovh.com/createToken/index.cgi?GET=/sms/&GET=/sms/*&PUT=/sms/*&DELETE=/sms/*&POST=/sms/*) et cela fonctionne. Est ce que les trois credentials ont bien été modifiés dans le script ?

Par contre, je me suis rendu compte d'une coquille dans le readme, j'ouvre une pull request :)

kefahB commented 8 years ago

J'ai supprimé et réinstaller le tout avec les nouveaux parms, je n'ai plus le code d'erreur mais en attendant ca n'envoie pas de sms !


// Get available SMS accounts
$accounts = $Sms->getAccounts();

// Set the account you will use
$Sms->setAccount($accounts[0]);

// Create a new message
$Message = $Sms->createMessage(true);
$Message->addReceiver("+352661466620");
$Message->setIsMarketing(false);

$Message->send("Hello world!");
VincentCasse commented 8 years ago

C'est quoi le retour que tu obtiens ?

@golgeek une idée ?

kefahB commented 8 years ago

Bonjour, Merci pour tout, j'ai fait celà pour que ca marche si le numéro n'est pas en France :

$host = $Sms->getSenders();
$modifySender = new Message( $Sms );
$modifySender->setSender($host[0]);

$modifySender->addReceiver( "+352661466620" );
$modifySender->setIsMarketing( false );

debug( $modifySender->send( "Hello world!" ) );
VincentCasse commented 8 years ago

Hum, et cela fonctionne ou pas ? Quelle est le retour des fonctions si cela ne marche pas ?

kefahB commented 8 years ago

Oui ça marche ainsi, si non étant donné que le numéro n'est pas Français (Luxembourgeois) j'ai fait cela :

    require __DIR__ . '/vendor/autoload.php';
    use \Ovh\Sms\SmsApi;
    use \Ovh\Sms\Message;

    $applicationKey = "*****";
    $applicationSecret = "*****";
    $consumer_key = "*****";

    $endpoint = 'ovh-eu';

$Sms = new SmsApi( $applicationKey, $applicationSecret, $endpoint, $consumer_key );

// Get available SMS accounts
$accounts = $Sms->getAccounts();

// Set the account you will use 
$Sms->setAccount( $accounts[ 0 ] );

function cczSms ($sender, $msg = null, $api, $msgNoRespons = null) {

    if ( substr( $sender, 0, 2 ) == "00" ) { 
        $sender = "+" . substr( $sender, 2, strlen( $sender ) );
    }   

    if ( substr( $sender, 0, 3 ) == "+33" ) { 
        $Message = $api->createMessage(true);
        $Message->addReceiver( $sender );
        $Message->setIsMarketing( false );

        $Message->send( $msg );

    } else {
        $host = $api->getSenders();

        $modifySender = new Message( $api );
        $modifySender->setSender($host[0]);

        $modifySender->addReceiver( $sender );
        $modifySender->setIsMarketing( false );

        $modifySender->send( $msgNoRespons );

    }   
}

$sender = "00352555555555";
$msg = "Répondez par o pour oui si non n pour non";
$msgWithoutRespons = "Veuillez vous connecter sur votre compte pour répondre à la demande !"; 
cczSms($sender, $msg, $Sms, $msgWithoutRespons);

ains ca fonctionne bien pour le moment !

VincentCasse commented 8 years ago

Parfait :)

Le problème est donc résolu. Je ferme donc cette issue.

dehboris commented 8 years ago

@kefahB Bonjour, quelle est le lien que tu as utilisé pour la création de tes tokens?

kefahB commented 8 years ago

Bonjour, Finalement j'ai utilisé le liens proposé par Vincent, le voici : [https://api.ovh.com/createToken/index.cgi?GET=/sms/&GET=/sms/*&PUT=/sms/*&DELETE=/sms/*&POST=/sms/*]

dehboris commented 8 years ago

@kefahB D'accord merci. Je vais essayer sa. En suivant également tes instructions. Tu utilise Laravel comme framework?

kefahB commented 8 years ago

Non, j'utilise php classique, sachant que je ne suis pas un programmeur pro, j'ai appris tout seul donc méfiance :)

dehboris commented 8 years ago

@kefahB D'accord, merci. Mais quand tu serais un peu habitué pense à passé à Laravel c'est pas mal comme framework.

kefahB commented 8 years ago

merci pour le conseil ;)

dehboris commented 8 years ago

@kefahB J'ai cet erreur "Undefined offset: 0" elle est du au faite que getAccounts() me retourne un champ vide. Es ce parce que j'ai pas de crédit sms sur mon compte OVH?

kefahB commented 8 years ago

est ce qu'après déclarer ça tu a au moins le nom de ton compte sms ? si non il faut demandé à vincent peut être il le sera car je n'ai pas eu une erreur pareille !

    require __DIR__ . '/vendor/autoload.php';
    use \Ovh\Sms\SmsApi;
    use \Ovh\Sms\Message;

    $applicationKey = "*****";
    $applicationSecret = "*****";
    $consumer_key = "*****";

    $endpoint = 'ovh-eu';

    $Sms = new SmsApi( $applicationKey, $applicationSecret, $endpoint, $consumer_key );

    // Get available SMS accounts
    print_r( $accounts = $Sms->getAccounts() );
kefahB commented 8 years ago

peut être un bout de code pour voir ?

dehboris commented 8 years ago
<?php
namespace App\Http\Controllers\Back\User;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use \Ovh\Sms\SmsApi;

class SendController extends Controller
{
    public function index()
    {
        return view('back.user.pages.send');

    }

    public function onSend(Request $request)
    {
        $applicationKey = "-------------";
        $applicationSecret = "-------------";
        $endpoint = "ovh-eu";
        $consumerKey = "-------------";

        // Init SmsApi object
        $Sms = new SmsApi( $applicationKey, $applicationSecret, $endpoint, $consumerKey );

        // Get available SMS accounts
        $accounts = $Sms->getAccounts();

        print_r( $accounts);

        // Set the account you will use
        $Sms->setAccount($accounts[0]);
    }
}

En retour pour print_r() j'ai Array() et pour $Sms->setAccount($accounts[0]); j'ai un message d'erreur Undefined offset: 0

kefahB commented 8 years ago

si getAccounts() ne retourne rien c'est que votre compte sms n'existe pas ou il est suspendu ou les credancial ne sont pas les bonnes ?! parce que normalement getAccounts() devrait retourner le nom de votre service un truc du genre sms-db123456-1 et c'est normal que setAccount() retourne cela car il ne trouve pas de compte pour l'utiliser ! @VincentCasse est ce que le faites d'avoir 0 crédit fait cela ?

dehboris commented 8 years ago

@kefahB Merci. Je vais demandé les conseils chez @VincentCasse. @VincentCasse Tu peux me venir en aide?

VincentCasse commented 8 years ago

salut @dehboris,

Si tu recois une liste vide, c'est que tu n'as pas acheté de "service sms". En gros, t'as pas de crédit liè à ton compte.

Tu peux en acheter sur cette page https://www.ovh.com/fr/cloud/paas-sms.xml

dehboris commented 8 years ago

@VincentCasse D'accord merci pour le conseil, je vais le faire.

yadutaf commented 8 years ago

Note que cela peut être facilement détecté avec

if(count($account) == 0) {
    // Oups, pas de service SMS...
}
kefahB commented 8 years ago

cher @VincentCasse , je ne sais pas qu'est ce qui se passe avec l'api, mais le même erreur revient c'est la 2émé fois ! la première j'ai du supprimer le compte l'api et recréer un de nouveau parce que les credentials ont été modifié par rapport à celles que vous m'avez envoyé ! pourtant je n'ai pas de code qui fait des modification sur le compte ! avec le nouveau compte ça marchait et maintenant ca ne marche plus !


<b>Fatal error</b>:  Uncaught exception 'GuzzleHttp\Exception\ClientException' in /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:89
Stack trace:
#0 /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/Subscriber/HttpError.php(33): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Message\Response))
#1 /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/Event/Emitter.php(109): GuzzleHttp\Subscriber\HttpError-&gt;onComplete(Object(GuzzleHttp\Event\CompleteEvent), 'complete')
#2 /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(91): GuzzleHttp\Event\Emitter-&gt;emit('complete', Object(GuzzleHttp\Event\CompleteEvent))
#3 /home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/RequestFsm.php(132): GuzzleHttp\RequestFsm-&gt;__invoke(Object(GuzzleHttp\Transaction))
#4 /home/******/www/send_sms/vendor/react/promise/src/FulfilledPromise.php(25): GuzzleHttp\RequestFsm-&gt;GuzzleHttp\{closure}(Array)
#5 /home/****** in <b>/home/******/www/send_sms/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php</b> on line <b>89</b><br />
younes0 commented 8 years ago

Pourquoi votre site indique qu'il faut créer une App sur: https://eu.api.ovh.com/createApp/ Alors que l'adresse est : https://api.ovh.com/createToken/index.cgi?GET=/sms&GET=/sms/*&PUT=/sms/*&DELETE=/sms/*&POST=/sms/* ?

Ca porte vraiment à confusion tout ça.

yadutaf commented 8 years ago

Afin de clarifier la gestion des issues pour tout le monde, je vous invite à ouvrir une issue dédiée à votre question et de poster sur api@ml.ovh.net.