Помнится, последний раз, когда мне приходилось делать SMS-оповещения, это было реализовано аппаратно. Некая коробочка позволяла вставить в себя SIM-карту, номер получателя и тексты заранее оговоренных SMS располагались на той же SIM-карте в определенных позициях, а сама отправка сводилась к замыканию контактов с помощью слаботочного реле. С тех пор ушло много времени и сейчас отправка SMS настолько упростилась, что никакие коробочки уже не нужны, а протестировать сервисы можно буквально в два клика. Ну и переложить на плечи контроллера еще за 3 клика : )
Мой выбор пал на сервис bytehand . В отличие от конкурентов они сразу же предложили цену 0.4р/SMS. Ну а если вы вдруг решите продать автомобиль и положить все деньги на счет, то получите 0.1р/SMS . Кстати, хочу отметить большим плюсиком их сайт. Он простой, удобный и красивый, побольше бы таких!
Возвращаемся к теме. Итак, заходим на сайт, регистрируемся, заходим в личный кабинет, жмем кнопочку "получить бонус" (это 10р., т.е. хватит на 25 пробных SMS), идем в настройки, переписываем свой ID и ключ, открываем новое окно браузера и вводим в адресную строку что-то типа:
http://bytehand.com:3800/send?id=1&key=2&from=SMS-INFO&to=3&text=Hello%20World!
где заменяем 1 на свой ID, 2 - на свой ключ, 3 - на свой номер (номер пишется в виде сплошного потока цифр начиная с кода страны, т.е. для России получится что-то вроде 79261111111).
Если нигде не ошиблись, сразу же получаем SMS:
Кстати, поле from можно заменить на номер своего мобильного (нужно зарегистрировать в личном кабинете) или строку до 11 символов (допускаются английские буквы, цифры, тире и точка), если эта строка пройдет модерацию. Я, например, только что подал на модерацию строку aes.name : )
Осталось только отправить этот запрос силами контроллера. Ниже приведен код Simpl+ файла "ByteHand SMS Service.usp" для контроллера Crestron, но аналогичный можно написать и для контроллера AMX. Файл можно скачать по ссылке ByteHand SMS Service.usp
P.S. Не забудьте добавить адрес DNS-сервера в настройках контроллера.
/* Programmer: Eldar S. Ablaev */ #ENABLE_TRACE #DEFAULT_VOLATILE string_parameter _skip_; string_parameter ID[16]; string_parameter key[32]; string_parameter phone[16]; buffer_input sms_text[256]; string_output sms_status; tcp_client client[65534]; change sms_text { socketconnectclient(client, "bytehand.com", 3800, 0); } socketconnect client { string http_request[256]; http_request=""; makestring(http_request, "%sGET /send?id=%s&key=%s&from=SMS-INFO&to=%s&text=%s HTTP/1.1\n", http_request, ID, key, phone, sms_text); makestring(http_request, "%sHost: bytehand.com\n", http_request); makestring(http_request, "%sUser-Agent: Crestron\n", http_request); makestring(http_request, "%sConnection: close\n", http_request); makestring(http_request, "%s\n", http_request); clearbuffer(sms_text); clearbuffer(client.socketrxbuf); socketsend(client, http_request); } socketdisconnect client { string rx[1024], t[1024]; rx=client.socketrxbuf; t=gather("\n\n", rx); sms_status=rx; clearbuffer(client.socketrxbuf); }
Эльдар, спасибо за модуль!
Как можно отправлять текст на кириллице?
Павел, здравствуйте!
Пользуясь сервисом ByteHand, текст на кириллице можно отправлять в кодировке UTF-8 в представлении URLEncode. Например, чтобы отправить фразу "Привет, Мир", поле text HTTP-запроса должно содержать значение "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C+%D0%9C%D0%B8%D1%80%21". Эту же строку можно вписать в соответствующее поле модуля Serial I/O в SimplWindows (модуль S-8 на скриншоте).
P.S. В процессе написания ответа нашел в интернете подходящий онлайн-перекодировщик! Исходный текст вписывается в большое поле слева, результат берется из самого верхнего поля справа (закодированный текст в кодировке UTF-8).
Эльдар, спасибо за информацию, очень выручили!
Эльдар, здравствуйте!
Для отправки SMS в кодировке UTF-8 при помощи Вашего модуля, пришлось увеличить значение string http_request до 512 и в строке http запроса SMS-INFO заменить на Test - подпись, которая привязана к аккаунту на bytehand.com. И все заработало! 😛
Эльдар, спасибо. Пользую сервис. И искать не пришлось.