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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Отправить и получить за дешевую

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

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

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

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

Ответ 5

Привет, меня зовут 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.");

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

Если вы хотите инвестировать в смартфон 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);

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

Ответ 9

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

Ответ 10

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

Ответ 11

Чтобы отправить 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
?>

Ответ 12

PHP необходимо вызвать внешнюю службу обмена сообщениями RestAPIs для отправки SMS. Вы можете позвонить двумя способами:

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, который вы можете попробовать с помощью своего веб-приложения.

Ответ 13

Мне недавно пришлось реализовать пользовательскую функцию sms на нашем веб-сайте и нашла полезную услугу www.dotgo.com. Это бесплатно... похоже, что он был создан несколькими PhD как своего рода безграмотный механизм обмена сообщениями (подумайте о модели запроса-ответа 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-сообщение на их по расписанию, указанному пользователем. Опять же, я не воспринимал это так далеко, но думал, что это интересно.

Ответ 14

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

Ответ 16

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

demo SMS Gateway API с помощью PHP и Ajax

Ответ 18

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);
}

Ответ 19

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

$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, а другие планируются.

Ответ 20

Вы можете использовать наш 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 - ваш субсчет.

В результате получается: SMS

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

Ответ 21

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