- usbmodem и софт для отправки sms
- Sending & Receiving SMS on Linux
- Modem Selection
- SMS Tools
- Configuration File
- Modem Configuration
- Event Handler
- Sending Messages
- Receiving Messages
- Troubleshooting
- Modem Not Registered
- Write To Modem Error
- Cannot Open Serial Port
- Приём и обработка SMS-сообщений на Linux-машине
- Настройка сервера
- Неожиданный profit
usbmodem и софт для отправки sms
Посоветуйте плиз софт с веб-мордой для отправки sms через usb-модемы для linux/freebsd. Что то вроде playsms.
Только сегодня с этой темой разбирался.
Пусть меня не закидывают камнями за ересь. Кто-то тут писал, что оно много поколений, как мертво. Но все же:
yum install gnokii
Далее правим /etc/gnokiirc
Вот мой рабочий конфиг:
[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200
smsc_timeout = 5
Проверено на Huawei Technologies Co., Ltd. E620 USB Modem
sms ку слать так:
echo ‘Test message’ | gnokii —sendsms +79201234567
Можно засунуть в скрипт и дальше пользовать как душе угодно
Сразу скажу. smstools у меня с модемом работать отказались. Пробовал писать самопольную софтину на AT командах. В общем работало, пока не понадобилось слать русский текст. А gnokii хорошо дружит с ru_RU.UTF-8
А gnokii хорошо дружит с ru_RU.UTF-8
Во первых для отправки сообщений на русском нужно переключить режим с текстового на цифровой (AT+CMGF=0), а во вторых само сообщение должно быть отправлено в кодировке UCS2. И если с первым проблем минимум, то со вторым пришлось повозиться.
нужно с веб мордой. А сам smstools или что там еще уже прикручен и работает.
Мне кажется такого софта специально нет, его написать пару минут. Веб-форма и кнопка отправить.
Это все очень круто. Когда надо привинтить такую штуку, к мониторингу упсов на пример, вникать в это все несколько влом.
нужно переключить режим с текстового на цифровой (AT+CMGF=0)
В примере, который я привел выше — не нужно. Если есть желание при наличии достаточно простого и функционального решения замутить собственную софтину для отправки смс, и на это есть время — наверное имеет смысл.
Сделай скрипт, который будет принимать телефон и текст — это пара минут, а потом запускай его из php.
Мониторинг упсов (да и всего остального) нужно прикручивать к заббиксу, который искаробки умеет отправлять смс.
Источник
Sending & Receiving SMS on Linux
Apr 23, 2015 · 5 min read
tl;dr: Use an SMS gateway service. Unless you don’t have internet access because you’re in the middle of nowhere.
A little while ago I worked on a mixed media theatre production called If There Was A Colour Darker Than Black I’d Wear It. As part of this production I needed to build a system that could send and receive SMS messages from audience members. Today we’re looking at the technical aspects of how to do that using SMS Server Tools.
There are actually a couple of ways to obtain incoming text messages:
- Using an SMS gateway and software API
- Using a GSM modem plugged into the computer, and a prepaid SIM
The API r oute is the easiest way to go from a programming aspect. It costs money, but most gateways provide a nice API to interface with, and you’ll be able to send larger volumes of messages.
BLACK had a few specific requirements that made the gateway unsuitable.
- We were projecting out of a van in regional South Australia. We had terrible phone reception, and mobile data was really flakey.
- We were going to be sending text messages to audience members later, and needed to have the same phone number.
So, we got hold of a USB GSM modem and used a prepaid phone SIM. This allowed us to receive unlimited messages for free. However, we couldn’t send messages as quickly as we would have liked.
Modem Selection
There are quite a few GSM modems to choose from. You are looking for one with a USB interface and a removable SIM. GSM modems that use wifi to connect to computers won’t work. You need to be able to remove the SIM because most mobile data SIMs won’t allow you to send or receive SMS messages. The other big requirement is Linux drivers, and Google is really your friend here. The main thing to watch out for is manufacturers changing the chipsets in minor product revisions.
We ended up going with an old Vodafone modem using a Huawei chipset. The exact model I used is HUAWEi Mobile Connect Model E169 It shows up in Linux like this:
SMS Tools
SMS Tools is an open source software package for interfacing with GSM modems on Linux. It includes a daemon, SMSD, which receives messages. SMSD is configured to run your own scripts when messages are received, allowing you to do pretty much anything you want with them.
Installation is straight forward on Ubuntu et al:
Next you’ll need to configure the software for your modem and scripts.
Configuration File
The configuration file is a bit unwieldy, but thankfully it comes with some sane default settings. Edit the file in your favourite text editor:
Modem Configuration
First up you will need to configure your modem. The modem configuration is at the end of the config file, and the exact parameters will vary depending on what modem you have. Let’s have a look at what I needed:
device is where you specify the file descriptor for your modem. If you’re using a USB modem, this will almost allways be /dev/ttyUSB0.
init specifies AT commands needed for your modem. Some modems require initialisation commands before they start doing anything. There are two strategies here, either find the manual for your modem, or take advantage of the SMSTools Forums to find a working configuration from someone else.
incoming is there to tell SMSTools you want to use this device to receive messages.
baudrate is, well, the baud rate needed for talking to the device.
Like I said, there are many options to pick from, but this is the bare minimum I needed. Check the SMSTools website and forum for help!
Event Handler
The other big important part of the config file is the event handler. Here you can specify a script/program that is run every time a message is sent or received. From this script you can do any processing you need, and could even reply to incoming messages.
My script is some simple Bash which inserts a message into a database, but more on that in a moment.
Sending Messages
Sending SMS messages is super easy. Smsd looks in a folder, specified in the config file, for outgoing messages. Any files that appear in this folder get sent automatically. By default this folder is /var/spool/sms/outgoing.
An SMS file contains a phone number to send to (including country code, but with out the +) and the body of the message. For example:
To: 61412345678 This is a text message sent by smstools. Awesome!
This is a text message sent by smstools. Awesome!
Easy! Just put files that look like this into the folder and you’re sending messages.
Receiving Messages
Let’s have a better look at the event handler. Remember, this script is called every time a message is sent or received. The information about the message is given to your program as command line arguments:
- The event type. This will be either SENT, RECEIVED, FAILED, REPORT, or CALL. We’re only interested in RECEIVED here.
- The path to the SMS file. You read this file to do whatever you need with the message
You can use any programming language to work with the message. However, it is very easy to use formail and Bash. For example:
From there you can do whatever you want. I put the message into a MySQL database.
Troubleshooting
That’s all you need to write programs that can send and receive SMS messages on Linux. Once you have smsd actually talking to your modem it’s pretty easy. However, in practice it’s also fragile.
The smsd log file is incredibly useful here. It lives in /var/log/smstools/smsd.log
Here are some of the errors I encountered and what to do about them:
Modem Not Registered
You’ll see an error that looks like this:
This means the modem has lost reception, and is trying to re-establish a connection. Unfortunately there is nothing you can do here but wait or, using a USB extension cable, trying to find a spot with better reception.
Write To Modem Error
An error like this:
means the software can no longer communicate with the modem. This is usually caused by the modem being accidentally unplugged, the modem being plugged in after the system has powered up, or by an intermittent glitch in the USB driver. To fix this, do the following:
- Stop smsd (sudo service smstools stop)
- Unplug the modem
- Wait 10 seconds or so
- Plug the modem back in
- Start smsd (sudo service smstools start)
Cannot Open Serial Port
You may see this error:
This occurs if you started the computer (and therefore smsd) before plugging in the modem. Follow the steps above to fix it.
So there you have it. Follow these steps and you can send and receive SMS messages on Linux, using a cheap prepaid SIM and GSM modem.
In the next post we’ll be looking at exactly what I used this setup for.
Источник
Приём и обработка SMS-сообщений на Linux-машине
В одном из наших свежих проектов команде разработчиков была поставлена задача собрать максимально реальные контактные данные о пользователях нашего сайта. Жаркое обсуждение правильных и неправильных форм регистрации, одно- и двушаговые, дополнение информации по мере пользования сайтом… Казалось поток идей не остановится. Однако ни одна из них не гарантировала, что в результате мы не получим кучу никчемных данных. Валидировать? Можно, но разве все предусмотришь? Активация учетной записи через почтовый ящик для его валидации? Но куча сервисов типа 10 Minute Mail сводят на нет эффект. К тому же, специфика проекта не позволяла слишком растягивать процесс регистрации. Решено было, что пользователь должен зайти, сделать своё дело, а потом уже активировать или нет свою учетную запись. В конце концов прозвучала фраза «А давайте активировать по SMS!». Поиск провайдеров, изучение прайс-листов и отказ от идеи взвалить обработку SMS на стороннюю контору… Стало понятно, что принимать и обрабатывать их придется самим.
Скромный опыт работы с VOIP/Asterisk и подбора оборудования для VOIP-шлюза имелся. Полез по старым ссылкам к китайским братьям искать SMS-gateway. Но во-первых время поджимало, во-вторых по опыту работы с ними с первого раза редко что-то выходит, поэтому стало интересно, сможет ли обычный USB GSM-модем справиться. И, забегая вперед, скажу что это решение было правильным. По крайней мере на данном этапе.
Настройка сервера
Итак, ко мне в руки попал модемчик Huawei E1750 (HSPA USB Stick) с контрактом. Первое с чем столкнется человек взявшийся за подобную задачу, это то, что все свежие модели GSM-модемов, в угоду пользователям Windows, опознаются в системе сначала как устройство хранения данных (SCSI CD-ROM). С него запускается autorun, который установит драйвера и переключит модем в режим модема (о как!). Сразу как я узнал это, я решил «приехали». Однако еще полчаса, и была найдена утилита usb_modeswitch, которая выполняет переключение режимов модема. Только после этого модем заработает по его прямому назначению. Запускается и настраивается она просто, тут писать особо нечего.
Ну, с богом! Информации к этому моменту уже было нарыто не сказать чтоб много, но достаточно, чтобы копать в нужном направлении. Существующие решения были отфильтрованы по признаку «работает как демон», в итоге остался один кандидат — SMS Server Tools. Нужно отметить, что оригинальный пакет уже не развивается, но его продолжение SMS Server Tools 3 не только развивается, но и отлично поддерживается своим создателем Mr. Keijo «Keke» Kasvi.
К сожалению, в моей любимой Gentoo не нашлось ebuild-а для свежей версии, последняя имеющаяся версия 2.2.20. Но, недолго погуглив, я нашел уже готовый ebuild для 3-й версии, который и скомпилировал после небольшой его правки. На данный момент у меня установлена и стабильно работает версия 3.1.14.
Как оказалось, настройка smstools является настолько простой, что практически с начальным конфигом можно уже начинать принимать сообщения. Нет, ну конечно, если у вас симка закрыта пин-кодом, Вам его придется добавить в конфигурацию, но это делается очень просто.
Структура файла конфигурации тоже понятна до безобразия (viva unix-way!). В начале файла прописываем глобальные настройки демона, а затем в секциях описываем настройки наших устройств:
# Глобальные настройки демона
.
.
# Наш модем и его настройки
[Huawei E1750 ]
.
# И еще одно устройство, если оно у нас есть, со своими настройками
[AnotherModem]
.
Глобальные настройки
Самый важный параметр, это какие устройства демон будет опрашивать на предмет наличия новых сообщений. Если у вас всего одно устройство, как у меня, просто пропишите devices = HuaweiE1750 , если их у Вас несколько, перечислите их тут через запятую.
Еще два важных параметра — это user = smsd и group = sms . Людям, знакомым с линукс, объяснять их значение не надо, я же ограничусь лишь напоминанием о правильных правах на все ресурсы, к которым демон должен иметь доступ. Ну и упомяну про такие инструкции, как pidfile = /var/run/smsd/smsd.pid , logfile = /var/log/smsd/smsd.log , значение которых тоже должно быть понятно. Кстати, на момент отладки рекомендую вставить в конфигурацию также инструкцию loglevel = 7 , это позволит Вам отслеживать, что же происходит внутри демона. В дальнейшем я выставил loglevel = 5 .
Настройки модема
В принципе, тут тоже, как было обещано, все просто. Однако я столкнулся с некоторыми проблемами, из-за которых я собственно и решился поделиться с Вами информацией.
Одной проблемой стало жгучее желание модема все время соскочить на новое устройство. Один раз он определялся как /dev/ttyUSB0 , в другой раз под другим номером. Такое положение дел не устраивало меня. Поэтому, я стал искать как писать udev правила для устройств. Однако, когда я уже был готов внести свои изменения, обнаружилось, что ebuild usb_modeswitch уже сделал это за меня добавив в систему файл /lib64/udev/rules.d/40-usb_modeswitch.rules , согласно которому в системе появлялся симлинк на девайс по адресу /dev/gsmmodem . Его мы и пропишем в конфигурации.
Второй проблемой стало зависание модема время от времени. К сожалению, вычитывать матчасть времени уже не было, да и гугл выдал такое количество вариантов, что пробовать их все не имело смысла. Поэтому, не особо рассчитывая на помощь, я пополз на форум smstools3. Каковы же были мои удивление и радость, когда keke ответил на мой пост через жалких 2-3 часа. Нет, точного решения он не давал, однако две строки которые он рекомендовал добавить в конфиг раз и навсегда избавили меня от зависаний. Для меня до сих пор остаётся загадкой, где брать значения для них, я не нашел технической документации по модему:
check_memory_method = 1
memory_start = 0
Ну, и третьей проблемой, из-за которой затевался весь сыр-бор, стало написание обработчика SMS. Для этого в конфиг была добавлена инструкция eventhandler = /usr/local/scripts/activate , внутри которого происходила отправка на сервер проекта запроса на активацию учетной записи. Скрипт, получает два параметра — тип события и файл сообщения. Выдергивает из него нужные нам данные, и отсылает на сервер.
Итого, получили вот такой короткий конфиг:
devices = Huawei
loglevel = 5
user = smsd
group = sms
logfile = /var/log/smsd/smsd.log
infofile = /var/run/smsd/smsd.running
pidfile = /var/run/smsd/smsd.pid
alarmlevel = 7
alarmhandler = /usr/local/scripts/activate/smsd-alarm
[Huawei]
device = /dev/gsmmodem
baudrate = 115200
pin = 1111
incoming = high
cmgl_value = 0
check_memory_method = 1
memory_start = 0
eventhandler = /usr/local/scripts/activate
Неожиданный profit
Изначально форма регистрации содержала поле Мобильный телефон — это было в требованиях проекта. Пришедшее SMS должно было быть отправлено с указанного телефона, и учетная запись с этим телефоном активировалась. Однако, как оказалось, пользователи становятся в тупик, когда им в сообщении ничего не надо писать. Сначала после регистрации появилась инструкция «Отправьте на номер 12345678 сообщение с текстом «F»». Потом родилась другая, гениальная как сейчас кажется, идея: из формы было убрано поле Мобильный телефон, после короткой регистрации (Имя, Фамилия, E-mail/login, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.
Источник