Как я могу передавать данные из моего массива в теги xmls, чтобы отправить сообщение на несколько номеров, если бы я запросил из базы данных - PullRequest
0 голосов
/ 27 июня 2019

У меня есть такой провайдер, который предоставляет SMS API в моей стране, все отлично работает при отправке смс одному пользователю, проблема возникает, когда мне нужно отправить нескольким пользователям из базы данных, они используют XML для отправки нескольким пользователям Жесткое кодирование чисел внутри xml, всякий раз, когда я пытаюсь найти значение из моего массива, выдается ошибка неопределенной переменной.

Я пытался использовать print_r(), implode(",",$var), json_encode(), они, кажется, работают, но когда я повторяю цикл, я получаю ошибку

 public function multi(){

             define ("URL_API_DOMAIN", "http://www.bongolive.co.tz/api/broadcastSMS.php");
        $sendername = "mysendername";
        $username = "myusername";
        $password = "mypassword";
        $apikey = "mykey";
        $numbers=array("+255*********","+255********");
        $number=print_r($numbers);
        // foreach ($numbers as $key => $numb) {
        //  echo $number = $numb;
        // }
        // return $number;
        $callbackURL = "";
        $messageXML = "
<Broadcast>
    <Authentication>
        <Sendername>".$sendername."</Sendername>
        <Username>".$username."</Username>
        <Password>".$password."</Password>
        <Apikey>".$apikey."</Apikey>
    </Authentication>
        <Message>
            <Content>Test broad cast from eboaard Message, Ukipata hii text nijulishe MAKAVELI</Content>
            <Receivers>

            foreach($number as $numb){
                <Receiver id=''>".$numb."</Receiver>
            }
            </Receivers>
                <Callbackurl>".$callbackURL."</Callbackurl>
        </Message>
 </Broadcast>";
 $data = array('messageXML' => $messageXML);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, URL_API_DOMAIN);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

  $response = curl_exec($ch);
  echo "response = $response ";
        }

}

//their codes example
<?php
        define ("URL_API_DOMAIN", "http://www.bongolive.co.tz/api/broadcastSMS.php");
        $sendername = "Bongo Live";
        $username = "testaccount";
        $password = "123456";
        $apikey = "c4a12fa8-ed6f-11df-a1f1-00181236674f";
        $callbackURL = "http://www.yourdomain.com/sms/dlr.php";
        $messageXML = "
<Broadcast>
    <Authentication>
        <Sendername>".$sendername."</Sendername>
        <Username>".$username."</Username>
        <Password>".$password."</Password>
        <Apikey>".$apikey."</Apikey>
    </Authentication>
        <Message>
            <Content>Test Message</Content>
            <Receivers>
                <Receiver id='7772237998'>255655123123</Receiver>
            </Receivers>
                <Callbackurl>".$callbackURL."</Callbackurl>
        </Message>
 </Broadcast>";
 $data = array('messageXML' => $messageXML);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, URL_API_DOMAIN);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

  $response = curl_exec($ch);
  echo "response = $response ";
 ?>

Я ожидал отправлять сообщения на мои два номера, но я получаю ErrorException (E_NOTICE) Undefined variable: numb error, я использую контроллеры laravel, у меня мало знаний о xmls

1 Ответ

0 голосов
/ 27 июня 2019

Изменить это:

$messageXML = "
<Broadcast>
    <Authentication>
        <Sendername>".$sendername."</Sendername>
        <Username>".$username."</Username>
        <Password>".$password."</Password>
        <Apikey>".$apikey."</Apikey>
    </Authentication>
    <Message>
        <Content>Test broad cast from eboaard Message, Ukipata hii text nijulishe MAKAVELI</Content>
        <Receivers>

        foreach($number as $numb){
            <Receiver id=''>".$numb."</Receiver>
        }
        </Receivers>
            <Callbackurl>".$callbackURL."</Callbackurl>
    </Message>
 </Broadcast>";

На это:

$messageXML = "<Broadcast><Authentication>".
              "<Sendername>{$sendername}</Sendername>".
              "<Username>{$username}</Username>".
              "<Password>{$password}</Password>".
              "<Apikey>{$apikey}</Apikey></Authentication>".
              "<Message><Content>Test broad cast from eboaard ".
              "Message, Ukipata hii text nijulishe MAKAVELI</Content><Receivers>";

foreach($number as $numb) {
    $messageXML .= "<Receiver id=''>{$numb}</Receiver>";
}

$messageXML .= "</Receivers><Callbackurl>{$callbackURL}</Callbackurl></Message></Broadcast>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...