SMS из веб-приложения

Я просто хочу отправить SMS из своего веб-приложения в PHP. Может ли кто-нибудь сказать мне, как это сделать? Что мне нужно сделать для этого?

Я не знаю, относится ли это к вам, но то, что я сделал много раз, чтобы сэкономить деньги, спрашивает у пользователя в своем профиле, что у него есть, а затем попробовал сопоставить его с this list . По сути, у многих / большинства носителей есть адрес электронной почты, связанный с номером телефона, который легко позволит вам отправлять тексты на номер. Например, если у вас есть ATT, а ваш номер телефона – 786-262-8344, электронное письмо по адресу 7682628344@txt.att.net отправит вам текстовое сообщение с темой / телом электронной почты бесплатно. Этот метод будет в значительной степени охватывать всех ваших пользователей США бесплатно. Очевидно, что в зависимости от потребностей вашего приложения это может быть невозможно / адекватно / желательно, но это вариант, о котором нужно знать.

Основной способ отправки SMS-сообщений – использовать существующего поставщика SMS. По моему опыту (который обширен с веб-приложениями для обмена SMS-сообщениями), вы часто обнаружите, что переговоры с разными провайдерами – лучший способ получить лучшее предложение для вашего приложения.

Различные поставщики часто предлагают разные услуги и разные функции. Мой любимый провайдер, и действительно, тот, который с радостью договаривался со мной о более низких ставках в прошлом, – TM4B ( http://www.tm4b.com ). Эти ребята имеют отличные ставки, покрывают огромную долю земного шара и имеют отличное обслуживание клиентов.

Ниже приведен некоторый код (и некоторые части, запутанные) из одного из моих живых веб-приложений, для отправки простого сообщения через их API:

 require_once("tm4b.lib.php"); $smsEngine = new tm4b(); // Prepare the array for sending $smsRequest["username"] = "YOURUNAME"; $smsRequest["password"] = "YOURPWORD"; $smsRequest["to"] = "+441234554443"; $smsRequest["from"] = "ME!"; $smsRequest["msg"] = "Hello, test message!"; // Do the actual sending $smsResult = $smsEngine->ClientAPI($smsRequest); // Check the result if( $smsResult['status'] == "ok" ) { print "Message sent!"; } else { print "Message not sent."; } 

Многие другие провайдеры, которые я использовал в прошлом, имеют очень схожие интерфейсы, и все они действительно конкурентоспособны, когда речь заходит о ценах. Вам просто нужно искать поставщика, который соответствует вашим потребностям.

Что касается стоимости, вы смотрите на цены в пределах от нескольких пенсов / центов для большинства западных стран (цены немного выше для большинства стран третьего мира, хотя, будьте осторожны). Большинство провайдеров вам придется оплачивать навалом, если вы хотите получить приличные ставки от них, но они часто будут вести переговоры с вами за «меньшими, чем обычно» партиями. Большинство провайдеров предлагают вариант после оплаты, но только когда вы успешно завершили несколько транзакций с ними … другие предлагают его с самого начала, но цены вымогательства.

Отправить только, но дешево и легко

Самый простой способ, безусловно, использовать взлома электронной почты, что @ Паоло Бергантино упомянуто выше. Легко попросить своих пользователей ввести свой номер телефона и выбрать своего оператора из списка. На любой платформе разработки также легко отправлять электронную почту после получения информации о пользователе.

Однако есть два очень важных ограничения, которые я обнаружил при таком подходе:

  1. Во-первых, сотовые операторы все приоритизуют SMS-сообщения, отправленные через их почтовые шлюзы ниже других SMS-трафика. Вероятно, потому, что они не получают оплату за них. Не используйте этот метод, если для вас важно минимизировать задержку.
  2. Во-вторых, особенно в эту современную эпоху портативных телефонных номеров пользователи время от времени будут переключаться между операторами и почти наверняка забудут рассказать вам. Если вам нужно надежно доставлять SMS-сообщения тем же людям через год или два, этот метод начнет терпеть неудачу.

Отправлять и получать по дешевке

Если вы пытаетесь настроить свой сайт на отправку и получение SMS-сообщений по бюджету, вы можете использовать такую ​​услугу, как TextMarks . TextMarks позволяет выбрать ключевое слово для вашей службы, которое позволяет пользователям направлять вам сообщения через общий текстовый код TextMarks, 41411. Уловка заключается в том, что они оставляют по 20 символов в каждом сообщении для коротких рекламных объявлений для оплаты своих услуг.

Профессиональное качество

Если вам требуется низкая латентность, высокая надежность и отсутствие рекламы, вам в значительной степени придется пройти через агрегатор SMS, если вы недостаточно велик, чтобы вести переговоры с каждым перевозчиком индивидуально.

Самое большое, что я обнаружил, наблюдая за агрегаторами SMS, заключается в том, что многие из них действительно настроены на то, чтобы быть маркетинговыми компаниями, а не приложениями – они действительно не понимают использование SMS в качестве канала, с помощью которого пользователи могут взаимодействовать с поставщики услуг. Я обнаружил, что агенты, которые используют фразу «ваша кампания», а не «ваша заявка», являются худшими нарушителями. Держитесь подальше от них и найдите агрегатор, который понимает ваши потребности как разработчика приложения.

Twilio недавно выпустила API для отправки SMS-сообщений . Api довольно простой, базовый интерфейс REST для отправки SMS и ответный документ для ответа .

Привет, меня зовут Jarod, и я работаю на Twilio.com, поэтому я немного предвзятый. Но, с учетом сказанного, невероятно легко отправить SMS из вашего веб-приложения PHP с помощью Twilio REST API . Вот простой пример:

 <?php // Get the PHP helper library from twilio.com/docs/php/install require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library // Your Account Sid and Auth Token from twilio.com/user/account $sid = "{{ account_sid }}"; $token = "{{ auth_token }}"; $client = new Services_Twilio($sid, $token); $client->account->messages->sendMessage("+14158141829", "+14159352345", "Hi Shyju, Sorry it took me so long to get back to you. <3 The Internet."); 

Для этого мы используем коммерческое решение TextAnywhere .

За небольшую плату (несколько пенсов за SMS) они предоставляют вам веб-сервис (плюс API для .NET, ASP, Java, C ++ и т. Д.). Это легко и работает, хотя это не бесплатно.

В самом основном, это так же просто, как сделать URL-запрос с номером и текстом сообщения в QueryString, а их сервер сделает все остальное за вас.

Если вы знаете перевозчика, вы золотой. Большинство из них имеют шлюзы электронной почты. Если нет, вы можете использовать API Clickatell, который стоит около 0,04 доллара за сообщение. Сейчас я просматриваю хак, где вы будете использовать GSM-модем и индивидуальный план сотового телефона с неограниченным количеством SMS-сообщений. Это может сэкономить много денег, если это сработает.

Если вы хотите инвестировать в смартфон Android, вы можете настроить свой собственный шлюз SMS, который в конце концов станет дешевле.

Я использую SMS GATEWAY ME, который является бесплатным приложением для Android, вы можете отправить сообщение следующим образом:

 $URL = "http://v2.smsgateway.me/API/Send/Single.php"; $postdata = http_build_query( array( 'Username' => "foo@bar.co.uk", 'Password' => "password", 'Number' => "+447791064782", 'Message' => "Hello World!", ) ); $opts = array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata)); $context = stream_context_create($opts); $result = file_get_contents($URL, false, $context); 

На их сайте есть документация, в которой рассказывается, как принимать входящие сообщения.

Если вам нужен надежный способ отправки большого количества SMS-сообщений, вы должны искать поставщика услуг SMS, который действует как веб-шлюз для SMS. В этом случае будет интерфейс на основе http, позволяющий отправлять SMS, вызывая URL-адрес и передавая получателя и сообщение в качестве параметров.

dktext не только позволяет отправлять текстовые сообщения bult для запрашивающих клиентов, но скоро будет включена интеграция с Google Voice для использования одной и той же системы с вашей учетной записью Google Voice

Чтобы отправить SMS из веб-приложения, вам необходимо подключить ваше приложение к SMS-шлюзу. Большинство шлюзов SMS предоставляют внешний API, который можно использовать для этого. У них обычно есть документация, которую вы можете использовать, чтобы узнать, как интегрировать уведомление SMS в ваш PHP-код. К сожалению, нет надежного бесплатного sms-сервиса, поэтому вам нужно заплатить за этот sms-сервис. Вы можете проверить http://www.phpjabbers.com/web-sms/, который, кажется, работает очень легко. Их код интеграции довольно прост:

 <?php $SMSLIB["phone"] = '44111222333'; // your phone number $SMSLIB["key"] = 'abcdefghijklmnopqrs'; // your personal API code include("smslib.php"); // we will provide you with smslib.php file sendSMS("test message", $SMSLIB["phone"]); // function which sends the message ?> в <?php $SMSLIB["phone"] = '44111222333'; // your phone number $SMSLIB["key"] = 'abcdefghijklmnopqrs'; // your personal API code include("smslib.php"); // we will provide you with smslib.php file sendSMS("test message", $SMSLIB["phone"]); // function which sends the message ?> 

Чтобы отправить SMS, необходимо обратиться к поставщику услуг RestAPI для внешних сообщений. Вы можете позвонить двумя способами:

API вызовов с помощью Curl: вам нужно установить завиток на сервере и использовать его как

  $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $sms_gateway_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); 

Else Использовать PHP file_get_contents()

Вот PHP-класс и тестовый код для отправки sms с помощью службы Bulk sms gateway, которую вы можете попробовать с помощью своего веб-приложения.

Я должен был реализовать пользовательские функции sms на нашем сайте в последнее время и нашел полезную услугу http://www.dotgo.com. Это бесплатно … похоже, что он был создан несколькими докторами наук как своего рода безграмотная система обмена сообщениями (подумайте о модели запроса-ответа http).

Для его работы вы создаете файл index.crml (аналогично index.html, php и т. Д.). Наш взгляд выглядит следующим образом (извините, что все это ставит на одной линии … имея некоторые проблемы, которые он отображает в противном случае):

 <?xml version="1.0" encoding="UTF-8"?><cmrl xmlns:dotgo="http://dotgo.com/cmrl/1.0"><match pattern="*"><engine href="http://www.bulbstorm.com/sms/flashbulb.php"/></match></cmrl> 

На нашем сайте индексный файл, в свою очередь, ссылается на файл /sms/flashbulb.php, который (за исключением открывающих и закрывающих php-тегов) выглядит так:

 $wordArray = explode(' ',$_REQUEST['sys_argument']); $username = strip_tags($wordArray[0]); $messageBody = str_replace($username.' ', '', $_REQUEST['sys_argument']); require_once 'Database.php'; $dbh = new Database('bulbstorm'); $args = array($username, $messageBody); $dbh->execMysqlProc('uspAddFlashbulb', $args); print "<message><content>Bulb received and saved to your account</content></message>"; 

Во всяком случае, я включаю только код, чтобы дать представление о том, как функционирует фреймворк и как мало кода нужно писать, чтобы получить что-то функциональное.

Есть некоторые ограничения. Главное, чтобы все было инициировано пользователем. Поэтому, если вы в первую очередь хотите отправить исходящие сообщения, которым не предшествует ваш пользователь, отправляющий сообщение на ваш сайт, чтобы «получить» ответное сообщение, то это, вероятно, не то, что вы хотите. Тем не менее, мы работали над тем, что мы делаем. Один из основателей даже лично ответил на вопрос по электронной почте и был очень полезным.

Одна из функций, которые мы еще не использовали, но рассмотрели их функциональность подписки … где пользователи могут настроить ее так, чтобы система dotgo периодически опросала страницу на вашем сайте, отправив sms-сообщение на свой телефон на расписание, заданное пользователем. Опять же, я не зашел так далеко, но подумал, что это интересно.

В принципе, у каждой авиакомпании есть почтовый шлюз, которому вам нужно будет отправить электронное письмо. Вам необходимо заранее знать перевозчика, чтобы вы знали, какой адрес электронной почты должен отправить SMS-сообщение.

Для PHP доступно несколько библиотек SMPP, одно из которых следующее. Это протокол, используемый для связи с сервером SMS.

http://pear.php.net/reference/Net_SMPP-0.4.3/Net_SMPP/_SMPP_Net_SMPP-0.4.3_SMPP_php.html

Я использовал приведенный ниже URL-адрес API SMS в PHP с помощью jQuery ajax, а также вы можете хранить каждую информацию sms в базе данных mysql для отслеживания.

демо- шлюз SMS с помощью PHP и Ajax

В Mobile Text Alerts имеется PHP API для отправки SMS-сообщений.

 function sendSMS($number,$message) { $request = message api link; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); return split(',',$response); } 

Рекомендуется использовать решение multigateway. Я создал его для своих целей, но я думаю, что это может быть полезно для тех, кто хочет легко настроить: https://packagist.org/packages/orajo/sms-zilla

 $smsSender = new SmsZilla\SmsSender(new SmsZilla\Adapter\MockAdapter()); $smsSender->setRecipient('605123456'); // adding more recipients (with and without country code) $smsSender->setRecipient(['511654321', '48511654987', '+41751654987']); $smsSender->setText("Message text"); $result = $smsSender->send(); 

Сейчас эта библиотека поддерживает 5 поставщиков, 6-й – в dev, а другие запланированы.

Вы можете использовать наш API и этот учебник, который охватывает тему.

Но, в основном, отправка одного SMS-сообщения так же просто, как отправка HTTP-запроса POST:

 curl -X "POST" https://api.wavecell.com/sms/v1/amazing_hq/single \ -u amazing:1234512345 \ -H "Content-Type: application/json" \ -d $'{ "source": "AmazingDev", "destination": "+6512345678", "text": "Hello, World!" }' 

Где amazing ваша учетная запись, 1234512345 – пароль (используйте более строгие пароли!) И amazing_hq – ваш субсчет.

Результат: смс

Подробности о отправке HTTP-запроса в PHP рассматриваются в следующих вопросах:

  • Запрос POST с корпусом JSON
  • Данные POST для URL-адреса в PHP
  • Как отправить запрос POST с PHP?