SMS-оповещения от системы управления Crestron

Помнится, последний раз, когда мне приходилось делать 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);
}

  1. Павел

    Эльдар, спасибо за модуль!
    Как можно отправлять текст на кириллице?

    • Эльдар Аблаев

      Павел, здравствуйте!

      Пользуясь сервисом 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).

  2. Павел

    Эльдар, спасибо за информацию, очень выручили!

  3. Павел

    Эльдар, здравствуйте!

    Для отправки SMS в кодировке UTF-8 при помощи Вашего модуля, пришлось увеличить значение string http_request до 512 и в строке http запроса SMS-INFO заменить на Test - подпись, которая привязана к аккаунту на bytehand.com. И все заработало! 😛

  4. Роман

    Эльдар, спасибо. Пользую сервис. И искать не пришлось.

Написать ответ


[ Ctrl + Enter ]