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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
63
0
51 261
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

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

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

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

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

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

Это в британской валюте? Разве это не очень дорого?

Pacerier 06.01.2012 05:00

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

Dylan Beattie 06.01.2012 14:35

Ваш основной вариант отправки 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.";
}

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

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

Вы знаете какого-либо провайдера в США?

Saif Khan 15.01.2009 20:44

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

James B 15.01.2009 20:57
Ответ принят как подходящий

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

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

TrentonMcManus 25.01.2013 19:20

Как они попадают в спам? Вы имеете в виду, если номер телефона виден? А как насчет контактной формы с капчей?

johnny 04.12.2013 21:57

Недавно мне пришлось внедрить на нашем веб-сайте функцию отправки смс, инициируемую пользователем, и я нашел полезную услугу 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-сообщение на свой телефон в соответствии с расписание, указанное пользователем. Опять же, я не зашел так далеко, но подумал, что это интересно.

Только отправка, но дешево и просто

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

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

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

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

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

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

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

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

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

Я тоже пользуюсь ClickATell и доволен их услугами.

Alex 27.07.2010 15:34

Как вы вообще получили неограниченное количество SMS?

Pacerier 06.01.2012 04:58

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

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

Чтобы отправлять SMS из веб-приложения, вам необходимо подключить свое приложение к SMS-шлюзу. Большинство шлюзов SMS предоставляют внешний API, который можно использовать для этого. Обычно у них есть документация, которую вы можете использовать, чтобы узнать, как интегрировать SMS-уведомление в свой PHP-код. К сожалению, надежных бесплатных смс-сервисов не существует, поэтому вам придется платить за эту смс-услугу. Вы можете проверить 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
?>

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

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

$URL = "http://v2.smsgateway.me/API/Send/Single.php";

$postdata = http_build_query(
    array(
    'Username' => "[email protected]",
    '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);

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

Привет, меня зовут Джарод, я работаю на 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.");
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);
}

Хорошая идея - использовать решение с несколькими шлюзами. Я создал его для своих целей, но думаю, что он может быть полезен всем, кто хочет легко настроить: 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-й находится в разработке, и другие планируются.

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

Но, по сути, отправить одиночное смс так же просто, как отправить 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 - ваша дополнительная учетная запись.

Что приводит к: SMS

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

Думаю, это самый старый вопрос по этой теме. Преимущественно ответы - реклама платных шлюзов. Но есть еще один способ - смс с андроид устройства (симкарты), андроид шлюз. Я создал бесплатное приложение с открытым исходным кодом с простым API: https://github.com/pavelakafoks/SmsTransmitter Google play: https://play.google.com/store/apps/details?id=info.ininfo.smstransmitter Вы можете использовать мое приложение для своего сайта или создать собственное приложение для Android на основе моих исходников. Это дешевле, чем интернет-смс-шлюзы. Надеюсь, это будет кому-нибудь полезно.

Другие вопросы по теме