function send_sms() { global $sms; // В тело функции необходимо вставить код отправки смс на выбранный шлюз. // В коде можно использовать следующие переменные: // sms["phone"] - номер абонента; // sms["text"] - текст сообщения; // sms["sender"] - подпись или номер отправителя. // Функция должна возвратить результат "OK" в случае удачной отправки или сообщение об ошибке. $data = " <?xml version='1.0' encoding='UTF-8' ?> <request method='send-sms' login='_логин_' passw='_пароль_'> <msg id='1' phone='$sms[phone]' sn='$sms[sender]'>$sms[text]</msg> </request>"; $response = ''; if ($fp = fsockopen ("wap.olympia.net.ua", 80, $errno, $errstr, 30)) { $request ="POST /websend/default.aspx HTTP/1.0\r\n"; $request.="Host: wap.olympia.net.ua\r\n"; $request.="Content-Type: text/xml\r\n"; $request.="Content-Length: ".strlen($data)."\r\n"; $request.=$data."\r\n\r\n"; fputs($fp, $request); while (!feof($fp)) { $response.=fread($fp,8192); } fclose($fp); return 'OK'; } else { return 'ERROR $errno - $errstr'; } }
Мануал по API от СМС шлюза:
Цитата
URL сервиса: http://wap.olympia.n...nd/default.aspx
Формат требуемого xml:
<?xml version="1.0" encoding="UTF-8" ?>
<request method="send-sms" login="LOGIN" passw="PASSWORD">
<msg id="1" phone="PHONE_NUMBER" sn="SENDER">TEXT_OF_MESSAGE</msg>
</request>
LOGIN - логин, зарегестрированный в системе
PASSWORD - пароль вашей учетной записи
PHONE_NUMBER - 12-значный номер телефона (напр.
380671234567)
SENDER - альфанумерическое имя, 11 символов латиницей
TEXT_OF_MESSAGE - текст сообщения в кодировке UTF-8
Ответ от нас:
<?xml version="1.0" encoding="UTF-8" ?>
<response method="send-sms">
<msg id="1" mid="MID" res="0"/>
</response>
MID - возвращается уникальный ID в нашей
системе
res - 0 (принято к отправке), -1 (не принято)
Формат требуемого xml:
<?xml version="1.0" encoding="UTF-8" ?>
<request method="send-sms" login="LOGIN" passw="PASSWORD">
<msg id="1" phone="PHONE_NUMBER" sn="SENDER">TEXT_OF_MESSAGE</msg>
</request>
LOGIN - логин, зарегестрированный в системе
PASSWORD - пароль вашей учетной записи
PHONE_NUMBER - 12-значный номер телефона (напр.
380671234567)
SENDER - альфанумерическое имя, 11 символов латиницей
TEXT_OF_MESSAGE - текст сообщения в кодировке UTF-8
Ответ от нас:
<?xml version="1.0" encoding="UTF-8" ?>
<response method="send-sms">
<msg id="1" mid="MID" res="0"/>
</response>
MID - возвращается уникальный ID в нашей
системе
res - 0 (принято к отправке), -1 (не принято)
Проблема в том что если вышеописанный код запускать самостоятельно не через clientbase то все работает, если же запускаем через clientbase то сам clientbase сообщает что сообщение отправлено, хотя сообщение не приходит и в логах получаем:
Цитата
HTTP/1.1 200 OK
Connection: close
Date: Thu, 15 Dec 2011 21:02:35 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 481
Connection: close
Date: Thu, 15 Dec 2011 21:02:35 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 481