Problème d'envoi de sms - API php

Bonjour,

nous avons un script php qui s'occupe de récupérer les numéros de portable en base de donnée, toutefois lors de l'envoi nous avons ce message d'erreur :

{"message":"[receivers] string Data is not an array for an array type"}

Le code est récupéré depuis le guide OVH :

/**
* @param array $receivers
* @param string $text
*
* @return array
*/
public function sendSms($receivers, $text)
{
$content = [
"charset"=> "UTF-8",
"class"=> "phoneDisplay",
"coding"=> "7bit",
"message"=> $text,
"noStopClause"=> false,
"priority"=> "high",
"receivers"=> $receivers,
"senderForResponse"=> false,
"sender" => "ISPROD",
"validityPeriod"=> 2880
];

try {
$smsService = $this->getSmsServices()[0];

//récupère le nombre de credit utilisé + numéro(s) valide(s)
$resultPostJob = $this->post('/sms/'. $smsService . '/jobs', $content);

//récupère la liste des sms en attentes
$smsJobs = $this->get('/sms/'. $smsService . '/jobs');

return [
'result_post_job' => $resultPostJob,
'sms_jobs' => $smsJobs,
'receivers' => $receivers
];
} catch (\GuzzleHttp\Exception\ClientException $ce) {
writeErrorLogs($ce->getMessage());
}
}

La variable $receivers est passé en paramètre de la fonction d'envoi. Si je remplace la variable par le tableau des destinataires que j'aurai précédemment dumpé (qui est bien un tableau de string), ça fonctionne.

// code
$content = [
"charset"=> "UTF-8",
"class"=> "phoneDisplay",
"coding"=> "7bit",
"message"=> $text,
"noStopClause"=> false,
"priority"=> "high",
"receivers"=> [ "+33xxxxxxx", "+33yyyyyyy"…],
"senderForResponse"=> false,
"sender" => "ISPROD",
"validityPeriod"=> 2880
];

// code

Une piste ?

Bonjour,

Je suis justement en train de réfléchir sur ce problème mais je pense que depuis ce post, vous avez surement avancé sur le sujet.
Mes connaissances en php sont très basiques mais il me semble que le format attendu de la variable $receivers n'est pas celui d'un tableau php composé de string, non?

Cordialement,
Matthieu

Bonjour,

$receivers est bien un tableau de string, autant dans notre application que ce qui est attendu par l'https://docs.ovh.com/fr/sms/envoyer_des_sms_avec_lapi_ovh_en_php/#etape-5-envoi-du-premier-sms api ovh.

Chose étonnante :

Si je fais une boucle sur $receivers pour envoyer les sms 1 par 1, cela fonctionne, mais pas en "one shot"

Bonjour,

J'ai bien dit une bêtise : le format attendu est bien un array de string car ça fonctionne très bien pour moi en "one shot" jusqu'à un certain point.

En effet, si mon array est trop gros (presque 500 destinataires), j'ai une erreur Curl m'indiquant que la procédure a dépassé le temps imparti de 30 secondes.

Si par contre, je converti mon array en fichier .txt (2 lignes de code) que je transmet via une URL, la procédure dure à peine 2 secondes.