смс с сайта скрипт
Создай свой скрипт отправки смс с сайта через API
Как создать свой скрипт отправки смс с сайта?
Вы можете настроить скрипт отправки смс таким образом, чтобы отправка смс через api происходила по тем правилам, которые вы создаете сами.
Пройдя регистрацию на сайте Вы получаете 10 руб. для тестирования абсолютно бесплатно и можете проверить работоспособность нашего API смс Вы сможете воспользоваться готовым скриптом для бесплатной отправки смс в тестовом режиме.
Одним из основных преимуществ использования API, является возможность организовать не только смс уведомления, но и смс рассылки, наладив простой скрипт смс рассылки, который напрямую получает информацию из вашей базы данных с клиентами. Вам не придется выгружать базы клиентов в формате *.csv и настраивать смс рассылки вручную при помощи программы SMS AIR Snder или Web кабинета. Один раз наладив интеграцию через API Вы также освободите себя от рутинных проблем по организации массовых смс рассылок. Для организации масштабных смс рассылок мы предлагаем использовать наш расширенный API, который позволяет отослать одним запросом до 200 смс сообщений, таким образом, вы сможете обеспечить максимальную скорость рассылки, рассылая 500 000 смс в течение часа.
PHP скрипт отправки SMS
PHP является самым распространенным языком веб программирования. На PHP сделано боле 90% сайтов Интернета, поэтому отправкой sms сообщений через php пользуются чаще всего. Специально для Вас мы разработали оптимальный sms php скрипт. Используя данный скрипт и наши API Вы сможете с легкостью интегрировать наш смс сервис в ваши бизнес процессы. Мы всегда идем навстречу клиенту и готовы помочь разработать скрипты для отправки смс на таких языках как: 1C, ASP, Python, Perl.
С Уважением,
Команда SMSfeedback
Отправка SMS при помощи PHP
В наше время SMS широко применяются в веб-технологиях. Их используют для того, чтобы сообщить клиентам о свежих новостях, событиях и продуктах. Именно поэтому растёт рост разработчиков, которые интересуются данным инструментом. В этом уроке мы рассмотрим фундаментальные основы отправки текстовых сообщений при помощи PHP.
Вступление
Для того, чтобы отправить SMS через PHP не нужно много трудиться. Ниже вы можете увидеть схему, которая показывает весь процесс отправки текстового сообщения с веб-приложения на беспроводное устройство.
Большинство беспроводных сетей имеют в наличии инструмент, который преобразовывает email сообщения в SMS. Для разработчиков это является бесплатным, а для конечных получателей не всегда, т.к. им может прийти счёт за не сетевое сообщение.
Email в SMS
Для того, чтобы превратить email сообщение в SMS, вам понадобятся 2 вещи:
Оно может выглядеть приблизительно так: phoneNumber@domainName.com
Для того, чтобы отправить SMS мистеру Example, вам необходимо в графе получателя в вашем почтовом клиенте написать 3855550168@vtext.com и отправить письмо. Оно будет доставлено на номер +1 (385) 555-0168 через беспроводную сеть Verizon.
К примеру, я пошлю сообщение самому себе через Gmail:
Когда я получу сообщение оно будет выглядеть следующим образом:
Функция mail()
Давайте двигаться дальше. Для отправки SMS сообщений мы можем использовать всеми известную функцию mail(), которая имеет следующую сигнатуру:
Тут вы можете узнать о ней больше.
Переделаем наш пример:
Тестируем
Давайте же проведём тест и убедимся, что через функцию mail() можно отправлять SMS сообщения. Используем следующий код:
Сообщение, которое пришло на мой мобильный телефон выглядит так:
Как вы видите, сообщение пришло через систему Gmail. Это произошло из-за того, что я выставил соответствующие настройки для отправки сообщений с локальной машины.
Добавляем Юзабилити
Теперь я хочу предложить вам создать небольшую форму для отправки SMS с сайта. Она имеет следующую структуру:
Стиль
Давайте немного её оформим:
Вот что у нас получилось:
Пишем скрипт
Это сама сложная часть данного урока. Прошу внимания:
Финальный код
Проблемы, которые могли у вас возникнуть
Ошибки на локальном хосте
Для того, чтобы пользоваться функцией mail у вас должен быть настроен локальный почтовый сервер. Если он у вас есть, то отправка сообщения произойдёт успешно. Если нет, то вы получите сообщение типа этого:
Warning: mail() [function.mail]: Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set() in C:\wamp\www\sms\mail-test.php
… для того, чтобы всё заработало, вам необходимо поставить mail сервер, но это не входит в рамки данного урока. Если у вас на локальной машине установлен XAMPP http://www.apachefriends.org/en/xampp.html, то вы с лёгкостью исправите ситуацию. Если же у вас WAMP, MAMP, LAMP, SAMP или OAMP, попробуйте установить Mercury Mail
PHPMailer
Для того, чтобы не возиться с локальным почтовым сервером, я предлагаю воспользоваться PHPMailer-ом http://phpmailer.worxware.com/. Ниже я приведу пример подключения PHPMailer-а к Gmail SMTP серверу, через который вы сможете отправлять сообщения.
Данный код надо просто заинклудить в ваш скрипт:
Данный код должен вывести что-то подобное:
В вашем случае может быть придётся поиграться с настройками. Если вы планируете использовать Gmail, то эта информация будет вам полезна.
Вывод
Конечно, существуют и другие техники отправки текстовых сообщений. Этот способ подойдёт тем, кто будет отправлять не больше 1000 SMS в месяц. Альтернативы данной системы:
Я надеюсь у меня получилось осветить тему отправки SMS сообщений через PHP. Надеюсь урок вам понравился. Спасибо за внимание.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com/tutorials/php/how-to-send-text-messages-with-php/
Перевел: Станислав Протасевич
Урок создан: 23 Февраля 2011
Просмотров: 149090
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Отправка SMS на сайте
Иногда необходимо пользователям на сайте отправлять SMS на их мобильные телефоны. Например, это может быть нужно для подтверждения важной операции (например, смена пароля). Или, например, для сообщения важной информации (например, что оплаченный товар пришёл в почтовое отделение). Так же можно делать авторизацию с логином и кодом по SMS, а не обычным паролем. Таким образом, отправлять SMS на сайте приходится относительно часто, и в этой статье я расскажу, как это можно делать.
О том, как разобраться с API и как его использовать, я рассказывал в предудыщей статье: как работать с API.
Так же есть плохой, но зато бесплатный способ. Но тут потребуется узнавать, какой оператор у Вашего посетителя. То есть придётся либо просить его самого указать оператора, либо по коду в телефонном номере пытаться его определить.
После определения оператора можно с помощью того же cURL отправить запрос по данным из формы соответствующего оператора. Например, для Beeline: https://www.beeline.ru/sms/index.wbp. Безусловно, пользователю надо будет ещё подгрузить их капчу, чтобы он смог её ввести.
И подобный механизм надо сделать для всех операторов, которыми пользуются Ваши посетители. Мучительная работа, зато бесплатно. И, более того, частенько придётся править свои скрипты, ведь параметры формы могут быть изменены, и Вы об этом узнаете не сразу. В результате, скрипт станет нерабочим, пока Вы его не исправите.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 5 ):
Здравствуйте Михаил, мне нужно на сайте в админ панели сделать СМС рассылку регистрированным пользователям. Можете посоветовать какой-нибудь хороший сервис для рассылки.Я преподаю английский язык студентам собираюсь проводить несколько онлайн семинар, несколько раз в месяц никак не могу найти скрипт, чтобы установить на сайт можете в добавок и на этот вопросик ответить. Спасибо!
Спасибо Александр! А насчёт проведения семинаров на сайте можете что-нибудь посоветовать
Для рассылок посмотрите уже упомянутый SMS Aero: http://smsaero.ru/ У них есть разные возможности для рассылок плюс редактируемая форма подписки, которую можно установить на сайт и собирать контакты посетителей.
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
Свой личный SMS-шлюз. Часть 2 – создаём API и форму отправки
Представляю вам вторую часть из серии статей по созданию своего шлюза.
В первой части мы настроили Gammu, рассмотрели особо интересные параметры и успешно произвели отправку SMS сообщения. Сейчас нам предстоит задача посложнее – создать некую программную прослойку (API), для того, чтобы можно было работать со шлюзом путем отправки запросов на этот API. В первую очередь это комфорт, во вторую – большое количество дополнительных возможностей.
Постановка задачи
Первое, что нужно для себя понять, какими свойствами и возможностями должен обладать наш код, что мы хотим от него получить и как с ним взаимодействовать. Для этого я поставил для себя пару вопросов и постарался максимально на них ответить.
На чем будем писать backend
Тут все просто, что умеем, на том и пишем, поэтому в моем случае – PHP
Авторизация
Конечно. Сервис будет смотреть в интернет, поэтому авторизация обязательна.
Один пользователь – одна sim-карта?
Конечно нет. У нас сервис для личного пользования и мы хотим иметь один логин, но при этом отправлять с нескольких номеров. Но если появится необходимость выделить один шлюз под конкретный сервис, мы должны иметь возможность добавления пользователей.
Один запрос – один адресат?
Нет. В одном запросе с одним текстовым сообщением должна быть возможность указать несколько адресатов. Суть этого понятна. Например я отслеживаю наличие ЭЭ на даче и в случае отключения хочу получить уведомление на все свои телефоны, а может даже телефон супруги… почему бы и нет, ведь уведомление важное.
История отправленных сообщений
Конечно, история это наша важная составляющая жизни, поэтому ее мы всегда храним
Балансировка нагрузки на карты
Да. Мы обладаем чувством меры и будем отправлять с одной карты не более какого-то числа сообщений, а значит их нужно считать и перед выбором шлюза проверять на исчерпание лимита.
Задача на разработку поставлена, цель ясна, итак приступим
Первое что мы сделаем, определим структуру база данных. Без нее, при наших потребностях никак. Использовать будем MySQL.
Дальше нужно будет написать пару классов, к которым мы были обращаться.
Приступим к созданию БД и создание таблиц
Я буду использовать несколько таблиц для:
Стоит подробнее остановиться на таблице с данными шлюза и используемых полей – smsc_gateway. Здесь мы используем:
В итоге мы получаем такую последовательность действий.
Пользователь отправляет запрос с параметрами:
Значения flash и replacemessages мы рассматривали в прошлой статье. В можно указать несколько номеров телефонов через «,». + в номере телефона указывать не нужно, но обязательно указывать номер в международном формате (для России это 7…). Так же в стоку можно добавить еще один параметр – &attempts= – количество попыток внутри одной отправки, то есть, если можем при отправке вернул ошибку, пытаться ли отправить тут же еще раз?
Вот, что происходит под капотом smsc.php
Первым делом мы подключаем файл с настройками – config.php:
делаем небольшую проверку на XSS, а далее проверяем авторизацию, вызывая метод класса Users_Auth::do($PDO):
Если получили false – авторизация не удалась, возвращаем код и описание ошибки в json, если необходимо.
Если авторизация успешная вызываем $sms_handle->save(), проверяем переданы ли обязательные параметры – телефон и текст сообщения, проверяем в БД статус пользователя, разбираем строку запроса и приводим в нужный нам вид, удаляем пробелы и «+» из номера телефона, а также разделяем их по запятой. Таким образом получаем массив номеров телефонов и текста сообщения, которое нужно на них отправить. Делаем из этого json и сохраняем в таблицу очереди на отправку. Проверка на наличие телефона обязательна. Если попытаться отправлять сообщения без указания номера телефона, возникнет ошибка в Gammu, и шлюз будет занят на несколько секунд. Когда шлюз освободится возникнет аналогичная повторная ситуация, что в свою очередь создаст так называемую «пробку» и последующие сообщения из очереди просто не смогут уйти.
Дальше мы используем простой скрипт, который поставим в cron и будем вызывать раз в 5-10 секунд (по вкусу) – send_queue.php
Он будет обращаться к методу класса обработчика сообщений SMS_data_handle->send(). Здесь уже начинается самое интересное.
Мы получаем сообщение за последние 10 минут без тегов статуса. Если нашли такое, ставим на него тег — process и берём в работу.
Извлекаем из тела json uuid пользователя, обращаемся к таблице и получаем список активных шлюзов. Идем в таблицу со счётчиком и проверяем, не превышен ли лимит на отправку. Если мы получили активный шлюз и счётчик не превышен, ставим на него тег — lock, чтобы никакой другой процесс уже не смог параллельно к нему обратиться. Все вызовы происходит внутри метода send(), но логика раскидана по другим методам класса. По указанному выше описанию работы метода эти обращения легко видны.
Далее мы создаем объект класса $send_proc = new Gammu_SMS($param) с параметрами и обращаемся к методу $send_proc->send($attr) с атрибутами
Весь код метода send():
Если объект вернул true, то переносим сообщение в архив и увеличиваем счётчик отправленных сообщений. Иначе снимаем тег proccess и через некоторое время будет повторная попытка отправки по cron.
Особо внимательные заметили, что мы вызываем метод с дефолтным параметром равным одному – send($с = 1). Параметр $c заложен «на перспективу» и позволяет нам, в случае необходимости получать пачку сообщений из базы данных и обрабатывать их отправку в цикле. Для этого в файле, вызываемом в cron нужно в вызове метода указать число сообщений для выборки их БД – $sms_handle->send(<число>);
Обратим внимание еще на один момент. В файле smsc.php есть возможность отправлять сообщения сразу после того, как оно было добавлено в БД. Для этого нужно раскомментировать следующую строку:
Это позволит нам отказаться от cron, но есть один нюанс – желательно использовать этот метод, если вы отправляете сообщения только на один номер и запросы к шлюзу не могут быть чаще чем раз в 30 секунд. Иначе возможны ошибки связанные с наложением запросов и если шлюз занят, то сообщение не отправится.
Теперь наш шлюз работает через API и умеет отправлять сообщения.
Ну и бонусом мы сделаем простую форму для отправки сообщений с сайта. Ее код не нуждается в пояснении, она просто принимает от вас тест и отправляет POST-запрос на указанный нами скрипт. Единственное в блоке отправки ajax нужно заменить url: «/ » на адрес вашего скрипта smsc.php
Итак подведем итоги проделанной работы. Мы создали аппаратную платформу, научились отправлять сообщения через терминал и расширили возможности системы собственным API для легкого доступа к шлюзу устройств способных отправлять GET/POST-запросы. Хранить историю и балансировать нагрузку между картами и прочее. Все это сильно упрощает работу со шлюзом и позволяет хранить все в одном сервисе.
Внимание, я не претендую на великолепную красоту кода и буду рад любой объективной критике для понимания своих ошибок (в случае наличия) и совершенствования навыков.
Бесплатная отправка SMS от своего мегафоновского номера с помощью python-скрипта
Для чего это нужно?
Обычное применение
Необычное применение
Выбор сервиса для отправки
Сразу спешу предупредить, что изначально всё делалось для себя, поэтому решение привязано к московскому мегафону, но для других регионов у мегафона тоже есть подобные сервисы, надеюсь и для других операторов.
Очевидно, что для бытового использования крайне необходимо отправлять сообщения со своего же номера и без рекламы, поэтому сервис sendsms.megafon.ru не подходит, тем более надо вводить капчу, да и как показывать её в консоли? А если вы так же любите фреймбуфер, как люблю его я? А если учесть недавний инцидент с проиндесированными смс-ками?
К счастью, у мегафона есть система самообслуживания абонентов «Сервис-Гид», которой я довольно давно пользовался именно для этих целей, да и другие полезные функции там есть, а защищённость https внушает некоторое доверие.
Относительно недавно при входе в сервис-гид перестали предлагать ввести капчу, что заставило меня задуматься о использовании этого сайта в своих «грязных» целях.
Анализ сайта Сервис-Гида
Переходим к анализу формы входа на сайт. Я пользуюсь Mozilla Firefox и Firebug, в Google Chrome есть свой инструментарий для этих целей.
Открываем вкладку «Консоль», включаем отображение AJAX-запросов, нажимаем кнопку «Не очищать» (чтобы при перенаправлении страницы не затёрлись эти самые запросы) и пытаемся зайти на сайт.
POST-запрос:
www.serviceguide.megafonmoscow.ru/ps/scc/php/check.php?CHANNEL=WWW&LOGIN=ваш_логин&PASSWORD=ваш_пароль
Ответ:
AAAAkljkLFJ9JKJk3fowmcoOW3fds
1
U
Вроде всё понятно, легко получаем SESSION_ID.
Написание скрипта
…
Особого желания разбирать этот формат у меня не было, поэтому я воспользовался уже знакомыми мне xpath и python-lxml (вот неплохой пример использования).
Допустим, получим данные о балансе на счету:
Код намеренно написан без проверок на корректность выполнения, чтобы не загромождать пост кучей try-except.
Теперь переходим непосредственно к отправке смс:
# это продолжение предыдущего куска говнокода
Ну и было бы неплохо выполнить выход из системы:
Несложно написать скрипты, которые будут отправлять вам (или кому-то ещё) смс с нужной вам информацией: твиттер-лента, rss, прогноз погоды и прочее. Привязать это к расписании или каким-либо событиям тоже не составит особого труда.
Подведение итогов
Безусловно, многие приёмы, использованные в фрагментах скрипта, не являются примерами хорошего кода. Возможно, стоит использовать ssl-соединение вместо простого urllib.urlopen(). Возможно, что не стоит полностью переводить страницу в объект etree, а попробовать разобраться с xmlns:xalan. Но одна из целей статьи — показать, что есть удобный способ отправлять смс, не набирая его на клавиатуре телефона, а также предоставить инструмент для автоматических смс-сообщений с рассылочной информацией.
В планах написать статью про скрипт для консольного просмотра количества билетов на поезда с сайта РЖД. В принципе, легко можно осуществить связь этих двух скриптов: присылать смс-уведомление о том, что появились нужные вам билеты.