Отправка SMS-сообщений Twizo с использованием CURL - PullRequest
3 голосов
/ 10 июня 2019

Я пытался отправить SMS, используя инструкции API от: https://www.twizo.com/developers/documentation/

$data = array(
    'sender'=>'Me',
    'body'=>'Message',
    'recipients'=>'201*****0'
);

$string = http_build_query($data);
$ch = curl_init("https://twizo:API-KEY@api-asia-01.silverstreet.com/v1/sms/submitsimple");

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
print_r($server_output);

Код работает, но возвращает сообщение об ошибке:

{"validation_messages": {"ополучатели ": {" noArraySupplied ":" Для этого поля допускаются только значения массива "}}," тип ":" http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html","title":"Unprocessable Entity "," status ": 422 , "detail": "Неудачная проверка"}

РЕДАКТИРОВАТЬ2: Вышеуказанная проблема исправлена, но теперь я хочу сделать эту работу:

Файл send.php:

set_time_limit(0);
if(isset($_POST['submit'])){
$letter = $_POST['message'];
$recs = $_POST['rec'];
$mailist = $_POST['number'];
$from = $_POST["from"];
$message = $letter;
$line = 0;
$list = explode("\n",$_POST['number']);
foreach ($list as $number){ 
$line = $line+1;
}
?>
<H4>Total Number : <?php echo $line; ?> </H4>
<?php
$spamed = 0;
foreach ($list as $number){ 
$spamed = $spamed+1;
echo " ".$spamed."/".$line." ><b>".$number." => status :";
include "result.php";
}
}


result.php file :


sleep(0.7);
$message_array = array("https://silverstreet:API-KEY@api-asia-01.silverstreet.com/v1/sms/submitsimple");
$mssage = array_rand($message_array);
$url = $message_array[$mssage];
$data = array(
  'body' => $message,
  'sender' => $from,
  'recipients' =>array("$recs")
); 
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$js = json_decode($result);
curl_close($ch);
if($js->message == "ok"){echo "sent";echo "<br>";} else {
if (!isset($js->message)){echo $result;
echo "<br>";
echo $url;
}else  {
echo "not sent <br> message  =";
echo  $js->message;
echo "<br>";
echo $url;}

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Попробуйте это:

В документации указано, что ключ API должен быть отправлен через заголовки HTTP, коды ошибок также указывают на то же:

$string = http_build_query($data);
$ch = curl_init("https://api-asia-01.silverstreet.com/v1/sms/submitsimple");

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'twizo: API-KEY'
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
print_r($server_output);
1 голос
/ 10 июня 2019

Я думаю, вам нужен массив второго измерения для получателей.

$data = array(
    'sender'=>'Me',
    'body'=>'Message',
    'recipients'=>array('201*****0')
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...