Как добавить функцию обмена текстовыми сообщениями SMS на мой сайт?


57

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

Также было бы плюсом, если бы это решение позволяло осуществлять двустороннюю SMS-связь с моим веб-приложением, чтобы люди могли отвечать сообщением типа ПОДТВЕРДИТЬ или ОТМЕНА.

Кто-нибудь реализовал что-то подобное? Кто-нибудь знает хорошие инструменты там?

РЕДАКТИРОВАТЬ: Я понимаю, что это больше типа вопроса «много способов обшарить этого кота», и поэтому я изменил его на вики сообщества.


+1, я знаю дюжину однонаправленных SMS-провайдеров API, но ни один из них не отправляет ответ, если ответ получен.
Тим Пост

Я добавил награду за этот вопрос в надежде улучшить ответы на этот вопрос.
artlung

jessegavin, Если вы хотите выбрать лучший ответ, не стесняйтесь - щедрость заканчивается завтра!
artlung

Ответы:


25

Мне пришлось несколько раз редактировать этот ответ, так как сервисы, которые я изначально рекомендовал, перестали работать. Я считаю, что новым лидером отрасли является Twilio , у них отличный API и доступные цены. Стоит рассмотреть некоторые альтернативы: Tropo , Plivo и Nexmo .

Я использовал IMified некоторое время, чтобы делать что-то похожее на это, и я нашел, что это работает хорошо. Он позволяет вам получать SMS (или сообщения Twitter и IM) в виде HTTP POST, и ответ вашего веб-сервера отправляется как ответ. Они также предлагают веб-сервис, который можно использовать для начала разговора и отправки сообщений .

Пока я искал другие варианты, я наткнулся на Zeep Mobile (примечание: Zeep Mobile больше не будет работать с 01.08.2013), у которого есть API для отправки и получения SMS. Это либо бесплатно и реклама поддерживается или доступны за ежемесячную плату. Я не пробовал, но выглядит довольно интересно.

Вы также можете использовать SMS-шлюз, как ClickATell .

Удачи!

РЕДАКТИРОВАТЬ: я нашел вопрос о StackOverflow, который имеет гораздо больше предложений, некоторые могут быть устаревшими.


Я также использую CLickATell, и я доволен их обслуживанием.
Алекс

Я собираюсь присоединиться к платному сервису Plivo, это очень хорошо. Мы использовали Twilio, который также выдающийся, но стоит дороже.
Фрэнк

15

У меня был друг, которому удалось реализовать это по электронной почте. Я считаю, что он сделал это точно так же, как этот сайт рекомендует :

T-Mobile: phonenumber @ tmomail.net
Virgin Mobile: phonenumber @ vmobl.com
Cingular: phonenumber @ cingularme.com
AT & T: phonenumber@txt.att.net
Спринт: phonenumber @ messaging.sprintpcs.com
Verizon: phonenumber @ vtext.com
Nextel : phonenumber @ messaging.nextel.com

где PhoneNumber = ваш 10 - значный номер телефона


1
Я только что проверил это, и мой оператор (AT & T) добавил FROM: [Имя отправителя], SUBJ: [Строка темы], MSG: [Содержимое сообщения] в начало текстового сообщения. - Таким образом, это (как минимум) 21 символ, который используется с этим методом. Я думаю, что (по крайней мере для меня) это было бы неприемлемо для большинства общедоступных веб-приложений.
jessegavin

3
@artlung en.wikipedia.org/wiki/List_of_carriers_providing_SMS_transitis довольно полный список.
Яэль

7
Вы имеете в виду en.wikipedia.org/wiki/List_of_SMS_gateways , но спасибо!
artlung

2
В моей стране (Аргентина) вы должны оплатить SMS, полученные по электронной почте (вашим клиентам может не понравиться)
Эдуардо Молтени

1
Как вы определяете, кто является перевозчиком?
Адам

9

Я использовал Twilio для голоса, и меня это впечатлило. Я уверен, что их система SMS не сильно отличается. Это позволит вам отправлять сообщения любому оператору, не зная адреса электронной почты для отправки (как я заметил, они со временем меняются).


Так вы используете их API? Как ты это используешь?
artlung

1
Я использую их голосовой API для звонков, запускаемых через PHP-скрипты. Я использую его для совершения звонков и использую его для передачи голоса в текст, а затем принимаю ответы от пользователя.
Дэррил Хейн


4

Два других варианта, которые я рассматривал в прошлом:

Skype API
Отправка и получение SMS с использованием нового Skype API. Я думаю, что Twilio дешевле, но Skype доступен в большем количестве стран (если вы хотите получать смс)

Подключите телефон к своему серверу.
Если вы живете в стране (например, в Аргентине), где компании SMS-шлюзов взимают большую плату, вам может оказаться дешевле купить телефон и подключить его к вашему серверу (конечно, в зависимости от среды вашего хостинга). Затем вы можете использовать программное обеспечение, как SMSToolkit для взаимодействия с телефоном.



2

Я написал такую ​​двухстороннюю систему SMS, используя Vidicom UK в качестве поставщика SMS (не уверен, что они все еще собираются). В основном они имеют API на основе HTTP, где вы можете отправлять и получать SMS-сообщения. Слишком сложно объяснить подробно, но по сути у меня было две таблицы базы данных, одна для входящих сообщений, полученных от шлюза, и другая для исходящих сообщений, которые ставятся в очередь и затем отправляются на шлюз.

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


2

Если вам нужен недорогой поставщик массовых SMS, с API разработчика вы можете использовать www.SourceSMS.com - они предлагают международное покрытие, и у них есть сценарии, которые вы можете просто загрузить и интегрировать в свой веб-сайт.


1

Другой вариант - использовать почтовую функцию PHP и список почтовых серверов оператора, например:

Создайте HTML-форму в файле PHP,

<select name="carrier" style="width: 130px" >
<option selected="" value="1">Verizon Wireless</option>
<option value="2">Alltel</option>
<option value="3">Boost Mobile</option>
<option value="4">Cingular</option>
<option value="5">Nextel</option>
<option value="6">Sprint</option>
<option value="7">T-Mobile</option>
<option value="8">Virgin Mobile</option>
<option value="9">AT&T</option>
</select>

Затем укажите, куда будет отправлено письмо:

if ($carrier == "1") {
    $email = "$to@vtext.com";
} elseif ($carrier == "2") {
    $email = "$to@message.alltel.com";
} elseif ($carrier == "3") {
    $email = "$to@myboostmobile.com";
} elseif ($carrier == "4") {
    $email = "$to@cingularme.com";
} elseif ($carrier == "5") {
    $email = "$to@messaging.nextel.com";
} elseif ($carrier == "6") {
    $email = "$to@messaging.sprintpcs.com";
} elseif ($carrier == "7") {
    $email = "$to@tmomail.net";
} elseif ($carrier == "8") {
    $email = "$to@vmobl.com";
} elseif ($carrier == "9") {
    $email = "$to@txt.att.net";
}

Отправьте письмо: ($ email, $ subject, $ msg, $ mailfrom должны быть определены и в правильном формате, рекомендуем также очистить входные данные)

if (mail($email, $subject, $msg, $mailfrom)) {
    echo "<h4>Your Text Was Successfully Sent.</h4>";
    echo "<br />";
    if ($backurl == "") {
        echo "<a href='javascript:history.back(1);'>Back</a>";
    } else {
        echo "<a href='" . $backurl . "'>Back</a>";
    }
    echo "</body></html>";
} else {
    echo "<h4><b>Error Sending Message</b></h4><br>Can't send txt to $to. <br> Contact the site Administrator.";
}

Убедитесь, что PHP имеет правильные настройки почты в php.ini. Если у вас есть какие-либо вопросы просто спросить.



0

Есть много производителей и поставщиков услуг. Я знаю Ozeki SMS Gateway. Следующие URL-адреса могут помочь вам, если вам нужно собственное решение с собственным gsm-модемом или SMPP / UCP / CMD или другим провайдером. Когда вы обманываете первый вопрос: сколько SMS вы хотите отправить или получить?

HTTP SMS API с примерами .

SMS API для разработчиков ASP / ASP.NET и примеры для разработчиков PHP о том, как настроить функциональные страницы SMS, могут предоставить вам полезную информацию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.