Система рассылки оповещений Guest Announcer Universal

 
Система рассылки оповещений Guest Announcer Universal предназначена для выполнения SMS и E-Mail рассылок, а также
для вызова функций программы Connecter, по произвольно формируемому списку адресатов на основе конфигурируемых критериев, с
использованием настраиваемых шаблонов рассылки и индивидуального графика рассылки для каждого шаблона.
 
Система рассылки состоит из:
 
- приложение GuestAnnouncerUniversal.exe
- настроечный файл приложения GuestAnnouncerUniversal.ini
- динамическая библиотека fastforms.dll для настроек шаблонов FastReport
- динамическая библиотека OpenSSL libeay32.dll
- динамическая библиотека OpenSSL Shared Library ssleay32.dll
- файл описания программы Система рассылки оповещений Guest Announcer.pdf
- папка Attachment для хранения вложений для рассылки по E-Mail.
- папка EXPORT. Тут находятся рабочие примеры рассылок.
- папка SMS_Template. Тут находятся настроечные файлы SMS-провайдеров.
- папка SQL. Тут находится sql-скрипт для создания таблиц и процедур приложения.
- папка LANGUAGES. Тут находятся языковые файлы программы.
- библиотека GuestAnnouncer.dll для передачи команд от сторонних приложений.
- настроечный файл библиотеки GuestAnnouncerDLL.ini
 
Приложение GuestAnnouncerUniversal.exe является серверной частью системы и предназначено для непосредственного
выполнения рассылок. Рабочая станция, на которой установлено приложение GuestAnnouncerUniversal.exe, должна иметь доступ к
интернету для связи с SMS-гейтом и иметь доступ к почтовому SMTP-серверу (корпоративному, либо внешнему). Помимо этого рабочая
станция должна иметь связь с БД FireBird 2.5 в которой хранятся данные для рассылки.
 

Принцип работы Guest Announcer Universal

 
Приложение GuestAnnouncerUniversal.exe должно быть постоянно запущено на определенной рабочей станции. Параметры
запуска GuestAnnouncerUniversal.exe из командной строки:
 
- /run: При запуске с ключем /run приложение непосредственно после запуска переходит в рабочий режим (см. ниже).
- Строка параметров: &AnnounceID=21&AutoClose=1&Param1=Val1&Param2=Val2&Attachment=111.txt&StartLogin=ADMIN,
 
где
AnnounceID – ID оповещения, которое нужно выполнить;
AutoClose – признак завершения приложения после выполнения оповещения (1 – завершить, 0 – не завершать);
Param1.. ParamN – список параметров и их значений, которые присутствуют в шаблоне оповещения. Имя параметра должно совпадать с именем параметра в шаблоне. При выполнении оповещения параметр будет заменен на его значение. В шаблоне параметры указываются в фигурных скобках - {Param1}. Параметры также могут использоваться в тексте SQL-запроса - :Param1;
Attachment – файл, который будет приложен к письму (только для E-Mail, должен находиться в папке Attachment);
StartLogin – для получения доступа к возможности редактирования шаблонов в Менеджере Отчетов.
Указанные параметры могут быть использованы для автоматического запуска приложения при старте Windows. Для настройки приложения служит файл конфигурации GuestAnnouncerUniversal.ini.
 
 
Кнопка «Запустить/Остановить» служит для запуска и остановки режима сканирования и рассылки.
Кнопка «Пауза» служит для приостановки работы программы во время выполнения рассылки сообщений. На вкладке «Лог» отображается лог работы программы.
На вкладке «Настройки» - параметры подключения к БД, почтового сервера, настройки СМС, языка программы и шаблонов оповещения.
Перечисленные параметры сохраняются в конфигурационном файле GuestAnnouncerUniversal.ini и используются при запуске приложения (кроме настроек шаблонов оповещения).
 
Содержимое конфигурационного файла GuestAnnouncerUniversal.ini:
[Application]
; Управляет режимом автоматического старта сканирования после запуска приложения
AutoStart=0
; Начинать сканирование сразу (1) или ждать время интервала сканирования (0)
ImmediatePoll=0
; Режим работы
; 0 - рассылка
; 1 - работа с CONNECTER
; 2 - работа с разовыми сообщениями
AppMode=2
[Settings]
; Путь к БД
DBName=localhost/3060:C:\Work\Projects\OLD\UCS\DB\SHELTER.FDB
; Пользователь для соединения с БД
User=ucs
; Пароль для соединения с БД
Password=ucs
; Роль пользователя в БД
DBRole=
; Кодировка
DBCharSet=WIN1251
; Интервал сканирования БД (сек)
PollInterval=5
; Путь к папке для формирования временных файлов
CachePath = C:\Work\Projects\OLD\UCS\Guest_Announcer\Cache\
; Количество строк лога на экране (0 - на экран лог не выводится)
LinesAmount=500
; Header по умолчанию (для SMS)
DefaultHeader=UCS
; ID гостиницы
HotelID=1
[LANGUAGE]
; Языковой файл программы (должен лежать в папке LANGUAGES)
LngFile=Russian.lng
[SMTP]
; Тип аутентификации на SMTP сервере
SMTPAuthenticationType = 1
; Адрес SMTP сервера
SMTPHost = smtp.google.com
; Логин на SMTP сервер
SMTPUserName = mymail@gmail.com
; Пароль на SMTP сервер
SMTPPassword = mypass
; Порт SMTP сервера
SMTPPort = 25
; Адрес для подстановки в поле “От:” в письме. Некоторые почтовые сервера требуют, чтоб этот
; параметр обязательно совпадал с SMTPUserName.
SMTPFromAddress = mymail@gmail.com
; Таймаут соединения с SMTP сервером (мс)
SMTPConnectionTimeOut = 60000
; Количество попыток установить соединение с SMTP сервером. Этот и предыдущий параметры
; применяются при попытке отсылки каждого письма.
SMTPConnectRetryCount = 3
; Использовать SSL при соединении с почтовым сервером (0 - не использовать, 1 - использовать)
SMTPSSL=1
; Метод SSL
; 1 - SSLv2
; 2 - SSLv23
; 3 - SSLv3
; 4 - TLSv1
SSLMethod=4
[SMS]
; Порт для связи с SMS гейтом

3
SMSPort = 8997
; Таймаут на получение ответа от SMS гейта при посылке команды
SMSReplyTimeOut = 20000
; Таймаут на получение данных от SMS гейта
SMSReadTimeOut = 1000
; Таймаут при подключении к SMS гейту
SMSServerConnectTimeout = 40000
; Настроечный ini-файл провайдера СМС (должен лежать в папке SMS_Template)
SMSTemplateIni=MOBI\SettingsMOBI.ini
[Log]
; Уровень логгирования
LogLevel=10
[CONNECTER]
; Адрес программы CONNECTER
URL=http://198.154.196.199:7780
; Кодировка отправляемых сообщений (0 - ANSI; 1 - UTF-8)
EncodingOut=1
; Кодировка получаемых сообщений (0 - ANSI; 1 - UTF-8)
EncodingIn=0
[EXTCONNECTER]
; Порт для общения с GuestAnnouncer.dll
Port=4141
[LOCK.SERVER]
; Настройка адреса соединения с менеджером лицензий
TCPHost=localhost
; Настройка порта соединения с менеджером лицензий
TCPPort=1111
В запущенном режиме приложение GuestAnnouncerUniversal.exe через заданный интервал времени производит обращение к БД для поиска оповещений, подлежащих рассылке в данный момент на основе указанных в оповещении настроек.
 
При обнаружении таких рассылок, выполняются следующие действия:
 
- По каждой рассылке выполняется выборка адресатов;
- Для каждого адресата в определенной рассылке формируется набор файлов для рассылки по E-Mail и SMS. Данные файлы помещаются в кэш-папку, указанную в настройках.
 
В случае E-Mail рассылки эти файлы являются – html-файлом для включения в тело письма и набор jpg-файлов для оформления письма.
В случае SMS рассылки – текстовый файл с содержимым SMS.
 
- При необходимости выполняется попытка отсылки E-Mail по списку E-Mail адресов выбранного адресата;
- При необходимости выполняется попытка отсылки SMS по списку телефонных номеров выбранного адресата;
 
Результат рассылки сохраняется в БД.
При неудачной попытке отсылки сохраняется информация о шаблоне рассылки, идентификатор для выбора адресата, тип (emai/sms), дата/время события, признак ошибки, содержание ошибки, список адресатов.
При удачной попытке отсылки поле содержание ошибки пусто, признак ошибки отсутствует, однако сохраняется заполненный шаблон, на основе которого было сформировано письмо или SMS.
Перед попыткой отсылки SMS проверяется баланс SMS (если это поддерживается провайдером). Если оставшееся количество SMS на балансе не больше указанного в настройках, то в таблицу истории и результатов рассылки помещается запись со специальным признаком уведомления и текстом, содержащим время события и количество оставшихся на балансе SMS.
При посылке SMS сообщений, для каждого выбранного адресата оповещения формируется пакет для отсылки. Независимо от того, сколько телефонных указано у данного адресата, в историю рассылки попадает по меньшей мере 2 записи – одна запись для всего пакета сообщений по всем телефонным номерам адресата и по одной записи для каждого из телефонных номеров (у данных записей отсутствует признак пакета).
 

Настройка шаблонов и рассылок

Окно настроек вызывается при нажатии на кнопку «Настройка расписания и шаблонов оповещения» в приложении GuestAnnouncerUniversal.exe (при этом сканирование БД на наличие новой задачи по оповещению приостанавливается).
Окно управления оповещениями:
 
В левой верхней части окна содержится список существующих шаблонов оповещений. При доступной опции управления шаблонами существует возможность добавления, редактирования и удаления указанных шаблонов.
 
 
При создании или редактировании шаблона указывается название, описание и нажатием на кнопку «Редактировать запрос» вызывается редактор шаблона.
Редактор шаблона выглядит следующим образом:
 
 
В левой части находится SQL редактор для формирования SQL запроса на получение списка адресатов оповещения и дополнительной информации, необходимой для формирования оповещения. Результирующие поля запроса ОБЯЗАТЕЛЬНО должны содержать следующие имена:
Для рассылки по E-Mail:
mail_to – список E-Mail-адресов получателя, разделяются «;»
subject – тема письма
Ref – ID записи из произвольной таблицы БД – ключ, по которому определяется адресат для данного шаблона оповещения. Например, это может быть идентификатор гостя в таблице гостей, идентификатор организации из таблицы организаций и т.п. Однако естественно, что в рамках одного шаблона это поле будет иметь один и тот же смысл для любого оповещения, созданного на основе этого шаблона. Далее при формировании оповещения на основе шаблона этот идентификатор может быть использован для получения и отображения дополнительной информации, связанной с конкретной записью с этим идентификатором в выбранной таблице.
 
Для рассылки по SMS:
phone_num – перечень телефонных номеров адресата, разделенных знаком «#»
header – отправитель SMS – отображается в поле «От» в доставленном сообщении
Ref – ID записи из произвольной таблицы БД.
 
При создании нового шаблона текст SQL запроса выглядит следующим образом:
 
select G.ID as REF
from GUESTS G
join GUEST_ANNOUNCEMENTS_TPL t on t.id=#ID_TEMPLATE#
join GUEST_ANNOUNCEMENTS a on a.id=#ID_ANNOUNCEMENT#
where #CUSTOM_WHERE#
 
Данный текст содержит три макроса, в которые автоматически при формировании оповещения подставляются конкретные данные.
На место макроса #ID_TEMPLATE# подставляется конкретный идентификатор шаблона оповещения
На место макроса #ID_ANNOUNCEMENT# подставляется конкретный идентификатор оповещения по данному шаблону.
(Эти данные могут быть использованы в SQL-запросе, например, для получения информации по истории рассылки по указанному шаблону и оповещению для выбранного адресата).
На место макроса #CUSTOM_WHERE# подставляется сформированное условие фильтрации запроса в конкретном оповещении, созданном на основе данного шаблона (см. ниже).
В правой части экрана находится таблица для указания списка полей из сформированного SQL запроса, которые в дальнейшем могут быть использованы в качестве настраиваемых пользователем фильтров в конкретном оповещении, созданном на основе данного шаблона.
Эти поля и наложенные на них в фильтре ограничения в дальнейшем будут автоматически преобразованы в SQL выражение, которое будет подставлено на место макроса #CUSTOM_WHERE# в результирующем SQL запросе для формирования списка рассылки по конкретному оповещению.
 
Значение столбцов в списке полей для настройки запроса:
 
«Фрагмент текста SQL запроса» – в данном столбце указывается некоторое поле запроса или допустимое SQL выражение с использованием полей исходного SQL запроса, на которое впоследствии предполагается накладывать настраиваемые ограничения. Т.е. значение данного поля будет скомбинировано с установленным в последствии ограничением и подставлено как часть макроса #CUSTOM_WHERE# в условие WHERE исходного SQL запроса в шаблоне.
Поясним данное на примере:
Допустим, исходный запрос содержит обращение к таблице Guests (гости), которая в свою очередь содержит поля Name (имя гостя) и поле BirthDate (дата рождения). Таким образом SQL запросе будет иметь след. вид:
 
Select…..
From gusets g
…..
Where ….. and #CUSTOM_WHERE# and ….
 
Тогда значением поля «Фрагмент текста SQL запроса» может быть следующий текст:
 
‘g.Name’ или, например, ‘(CURRENT_DATE - cast(g.BirthDate as Date))’ - данное выражение даст нам текущий возраст гостя.
Поле «Уникальное имя» - в данном столбце необходимо задать некий уникальный в рамках данной таблицы для данного шаблона текстовый идентификатор, который гарантированно не совпадет ни с каким фрагментом текста SQL запроса.
Поле «Имя для отображения в фильтре» – в данном столбце необходимо задать некое понятное текстовое название, которое будет в дальнейшем отображаться пользователю при настройке фильтров в оповещениях по данному шаблону.
Поле «Редактор фильтра» – в данном столбце необходимо выбрать из списка одни из доступных редакторов, который будет предлагаться при настройке фильтра по данному полю.
Поле «SQL запрос для списка значений» – если в поле «Редактор фильтра» был выбран редактор LookupCombobox, то в данном поле необходимо указать sql-запрос для формирования выпадающего списка.
 

Настройка оповещений по шаблону

 
В правой верхней части окна настройки расположена таблица, в которой отображается список существующих оповещений по выбранному слева шаблону.
 
 
Вверху расположена панель с кнопками добавления, редактирования, удаления, копирования оповещений по шаблону, а так же для отображения сформированного по данному настроенному шаблону SQL запроса, который будет выполняться в момент срабатывания оповещения для выбора адресатов для рассылки. Данный SQL запрос формируется уже с учетом настроенных фильтров для выбранного оповещения и может быть использован для проверки правильности построения фильтров (кнопка «Просмотр SQL кода»).
 
Редактор оповещения расположен в нижней части окна:
 
 
В левой части редактора задается название оповещения и его описание. Далее задается интервал времени в течение суток, в котором данное оповещение должно срабатывать (с учетом интервала сканирования GuestAnnouncerUniversal.exe) и соответственно должен выполняться SQL запрос на поиск адресатов оповещения. После этого указывается интервал повтора оповещения.
Например, если задан интервал оповещения с 13:00 по 19:00, повтор задан в 60 мин, а интервал сканирования GuestAnnouncerUniversal.exe выставлен, скажем в полчаса, то данное оповещение сработает в интервале 13:00-13:30. Далее следующее сканирование произойдет через пол часа, но т.к. с момента последнего выполнения оповещения час еще не прошел, оно будет проигнорировано. При следующем сканировании пройдет уже более часа с последнего выполнения оповещения и, следовательно, оно опять будет выполнено. И так далее до 19:00. После этого момента и до 13:00 следующего дня оповещение в выборку при сканировании на сервере попадать не будет.
Если повтор выставлен в 0 мин, то оповещение будет выполняться раз в сутки при первом сканировании на сервере в указанном интервале времени.
Оповещение можно временно включить и отключить указанием признака «Активно» либо нажатием кнопки «Активировать/Деактивировать».
 
Далее задаются используемые способы рассылки для данного оповещения:
 
- По E-Mail
- По SMS
- Connecter
- Сервер сообщений
 
И, наконец, для каждого способа рассылки настраивается непосредственно шаблон E-Mail или (и) SMS оповещения:
 
 
Назначение кнопок: Загрузка FastReport шаблона из файла, редактирование FastReport шаблона, сохранение FastReport шаблона в файл и очистка шаблона для данного оповещения. Для оповещения по E-Mail имеется возможность указать файл, который будет приложен к письму. Файл должен находиться в папке Attachment.
Для настройки FastReport шаблона рассылки используется библиотека fastforms.dll.
Данная библиотека позволяет работать с FastReport шаблонами используя текущее подключение к БД, загружать, сохранять шаблоны, а так же формировать готовые формы на основе шаблонов в различных форматах. В данном случае при формировании шаблона в FastReport весь набор результирующих полей SQL запроса в качестве параметров FastReport отчета.
Далее в шаблоне отчета можно, воспользовавшись переданным подключением к БД, а так же некоторыми подготовленными заранее ключевыми параметрами, получить из базы дополнительные выборки и включить их в результирующую форму, которая уже будет отослана адресату. Например, как в приведенном выше варианте запроса, по полю Ref (которому установлено значение guests.id) дополнительным запросов в FastReport выбрать прочую недостающую информацию по гостю или данным с ним связанным и включить их в формируемую форму рассылки в виде полей или таблиц.
 
Шаблоны для рассылки так же возможно создавать с помощью Менеджера отчетов. Затем необходимо привязать созданный отчет к шаблону оповещения:
 
 
В этом случае при рассылке оповещения SQL-запрос, созданный в редакторе запросов, шаблон FastReport и фильтр будут игнорироваться.

Настройка фильтров оповещения

 
В нижней части окна находится область для формирования фильтров по текущему выбранному оповещению – данные фильтры позволяют, создав по одному шаблону несколько оповещений, не только настроить время, интервал и внешний вид отправляемого оповещения, но и для каждого оповещения произвести фильтрацию выборки конечных адресатов.
Фильтры строятся на основе перечня доступных полей, указанных в настройках шаблона оповещения.
В данном окне существует возможность добавления и редактирования произвольного количества условий и их комбинаций, накладываемых на доступные к фильтрации поля. В качестве имен полей указывается заданные ранее при настройке шаблона имена для отображения, а в качестве редакторов условий – указанные там же ранее редакторы.
После формирования фильтра, полученный SQL запрос можно просмотреть, нажав расположенную выше кнопку «Просмотр SQL кода». В результате будет показано SQL выражение, которое формируется на основе SQL выражения в шаблоне оповещения с учетом заданных фильтров. Данное выражение будет использовано приложением GuestAnnouncerUniversal.exe при формировании списка адресатов для данной рассылки, а результирующие поля этого выражения будут использованы при формировании содержимого отсылаемого сообщения на основе FastReport шаблона.
 

Настройка СМС

Настройка передачи СМС производится на основе данных от провайдера. Настроечная информация хранится в файле Settings<имя_провайдера>.ini. Шаблоны посылаемых СМС-гейту и получаемых от СМС-гейта сообщений хранятся в xml-файлах:
 
- Авторизация - Authentication<имя_провайдера>.xml
- Ответ на авторизацию - AuthenticationReply<имя_провайдера>.xml
- Завершение сессии с СМС-гейтом - Disconnect<имя_провайдера>.xml
- Ответ СМС-гейта с сообщением об ошибке - ErrorReply<имя_провайдера>.xml
- Отправка СМС - SendSms<имя_провайдера>.xml
- Ответ на отправку СМС - SendSmsReply<имя_провайдера>.xml
- Запрос статуса СМС - StatusSms<имя_провайдера>.xml
- Ответ на запрос статуса СМС - StatusSmsReply<имя_провайдера>.xml
- Статусы сообщений и коды ошибок СМС-гейта - Status<имя_провайдера>.ini
 
Пример файла SettingsMLS.ini:
;#######################################################################
; для провайдера MLS IT Systems (http://www.mlsit.ru/)
;#######################################################################
[Main]
; как шифровать пароль (если не надо - оставить пустым)
PassCorrection=MD5
; писать сообщения о остатке СМС на балансе при малом остатке
; 0 - не писать
; 1 - писать
WriteBalanceAlert=1
; Признак завершения сообщения
XMLEndString=*END*
; Писать в лог запросы\ответы
; 0 - не писать
; 1 - писать
UseDetailedLog=1
; файл со статусами сообщений и описаниями ошибок (указываются от папки ..\SMS_Template)
SMSStatusIni=MLS\StatusMLS.ini
; тип SMSGate
; 0 - через сокеты
; 1 - по протоколу HTTPS методом POST
; 2 - по протоколу HTTPS методом GET
; 3 - по протоколу HTTP методом GET
SMSType = 0
; количество СМС на балансе, при котором начнется информирование об окончании СМС
SMSBalanceAlert = 10
; адрес СМС-гейта
SMSHost = ftp.mlsit.ru
; логин
SMSGateIDKey =
; пароль
SMSGatePass =
; символ, которым будут заменены пробелы в тексте СМС (если заменять не надо, то написать слово Blank)
BlankTo=Blank
; признак нормального выполнения команды
ReplyOK=
; признак выполнения команды с ошибкой (без пробелов)
ReplyErr=
; для России первую 8 в номере меняем на +7
; 0 - не меняем
; 1 - меняем
DropCountryCode=0
[Nodes]
;---------------------------------------------------------------------
; Ноды ответа сервера на отправку СМС (Doc.DocumentElement.имя_ноды или Doc.DocumentElement.имя_ноды1\имя_ноды):
; <?xml version="1.0" encoding="UTF-8"?>
; <SendSms>
; <Count>1</Count>
; <oneRec id="162847">+79031234567</oneRec>
; </SendSms>
;---------------------------------------------------------------------
; Нода, в которой возвращается ID СМС и другая информация
NodeListNode=oneRec
;---------------------------------------------------------------------
; Ноды ответа сервера на запрос статуса СМС (Doc.DocumentElement.имя_ноды или Doc.DocumentElement.имя_ноды1\имя_ноды):
; <?xml version="1.0" encoding="UTF-8"?>
; <StatusSms>
; <oneRec id="162847">
; <Status>1</Status>
; <DateStatus>05.04.11 13:04</DateStatus>
; <StatusMessage>Отправлено</StatusMessage>
; </oneRec>
; </StatusSms>
;---------------------------------------------------------------------
; Нода, в которой возвращается ID СМС и другая информация
StatusListNode=oneRec
; Пути к шаблонам СМС (указываются от папки ..\SMS_Template)
[Authentication]
; шаблон для аутентификации на сервере (если нужно)
Template=MLS\AuthenticationMLS.xml
; шаблон ответа сервера
Reply=MLS\AuthenticationReplyMLS.xml
[SendSms]
; шаблон отправляемого СМС (обязательно)
Template=MLS\SendSmsMLS.xml
; шаблон ответа сервера
Reply=MLS\SendSmsReplyMLS.xml
[StatusSms]
; шаблон получения статуса СМС (обязательно)
Template=MLS\StatusSmsMLS.xml
; шаблон ответа сервера
Reply=MLS\StatusSmsReplyMLS.xml
[Disconnect]
; шаблон для закрытия соединения (если нужно)
; шаблон ответа сервера не предусмотрен
Template=MLS\DisconnectMLS.xml
[Error]
; шаблон ошибки в ответ на посылаемый XML
Template=MLS\ErrorReplyMLS.xml
 
 
В файлах шаблонов сообщений для общения с СМС-гейтом используются следующие параметры:
 
 
Параметр Вид параметра в XML-документе Название параметра ConstAccountName {%AccountName%} наименование аккаунта
ConstIDSession
{%idSession%}
идентификатор сессии ConstBalance {%Balance%} количество СМС на балансе
ConstHeadSMS
{%HeadSms%}
список доступных заголовков ConstIDKey {%IdKey%} логин
ConstPassword
{%Password%}
пароль ConstHead {%Head%} заголовок сообщения
ConstPhone
{%Phone%}
список телефонов ConstTextSms {%TextSms%} текст сообщения
ConstSendSMSCount
{%SendSMSCount%}
количество отправленных СМС ConstSMSID {%SMSID%} уникальный идентификатор СМС
ConstIDList
{%idList%}
список идентификаторов СМС ConstCodeStatus {%CodeStatus%} код статуса СМС
ConstMessStatus
{%MessStatus%}
текст статуса СМС ConstLastErrorCode {%LastErrorCode%} код ошибки
ConstLastErrorMessage
{%LastErrorMessage%}
описание ошибки ConstMD5Begin {%MD5B%} начало секции, зашифрованной MD5
ConstMD5End
{%MD5E%}
конец секции, зашифрованной MD5 ConstSHA1Begin {%SHA1B%} начало секции, зашифрованной SHA1
ConstSHA1End
{%SHA1E%}
конец секции, зашифрованной SHA1
 
Пример файла SendSmsMLS.xml:
<?xml version="1.0" encoding="UTF-8"?>
<SendSms>
<idSession>{%idSession%}</idSession>
<Head>{%Head%}</Head
<TextSms>{%TextSms%}</TextSms>
<Phone>{%Phone%}</Phone>
</SendSms>
Алгоритм отправки одного СМС-сообщения:
 
 
№ Операция Отправляем СМС-гейту Получаем от СМС-гейта 1 Авторизация (Authentication) на сервере (если нужно) ConstIDKey ConstPassword ConstAccountName ConstIDSession ConstBalance ConstHeadSMS
Отправка СМС (SendSms)
ConstIDKey
ConstPassword
ConstIDSession
ConstHead
ConstPhone
ConstTextSms
ConstSendSMSCount
ConstSMSID
ConstPhone 3 Проверка статуса СМС (TestStatus) ConstIDKey ConstPassword ConstIDSession ConstIDList ConstSMSID ConstCodeStatus ConstMessStatus
Отсоединение (Disconnect) от сервера (если нужно)
ConstIDKey
ConstPassword
ConstIDSession
Ошибки ConstLastErrorCode ConstLastErrorMessage
Работа с программой CONNECTER
 
Шаблоны для отправки сообщений программе CONNECTER хранятся в папке SMS_Template\CONNECTER. В запросе оповещения должны обязательно присутствовать поля REF (ID гостя) и CONNECTER_TPL (имя шаблона из папки SMS_Template\CONNECTER).
Замена ключевых слов в шаблоне - ключевые слова меняются на значения соответствующих полей из запроса. Например: ключевое слово {%GUEST_ID%} будет заменено на значение поля GUEST_ID из запроса.
 
Пример файла RegistrPayment.xml:
<?xml version="1.0" encoding="windows-1251"?>
<REQUEST>
<FUNCNAME>FOLIO_PAYMENT</FUNCNAME>
<PARAMETERS>
<GUEST>{%GUEST_ID%}</GUEST>
<COST>{%GUEST_COST%}</COST>
</PARAMETERS>
</REQUEST>
 
В данном примере в узле <FUNCNAME> хранится имя функции из программы Connecter, а в узле <PARAMETERS> - параметры, которые будут заменены на соответствующие поля запроса.
Работа в режиме сервера сообщений
В этом режиме программа постоянно опрашивает таблицу с сообщениями и выполняет рассылку вновь появившихся. Все остальные рассылки игнорируются. Обмен данными сторонней программы с GuestAnnouncerUniversal происходит при помощи библиотеки GuestAnnouncer.dll.
 
Пример файла GuestAnnouncerDLL.ini:
[ANNOUNCER]
; Адрес, где запущен GuestAnnouncerUniversal
TCPHost=127.0.0.1
; Порт
TCPPort=4141
; Таймаут чтения
TCPTimeOut=5000
[LOG]
; Путь к логам
LogPath=c:\Work\Guest_Announcer\DLL\Logs
; Максимальный размер лога
MaxLogSize=5242880
 
GuestAnnouncer.dll экспортирует следующие функции:
 
1. InitAnnouncerDLL – инициализация библиотеки
 
2. DoneAnnouncerDLL – завершение работы библиотеки
 
3. SendMessageToAnnouncer – оправка сообщения клиенту. Входные параметры – строка вида:
&GUEST=1057&USER=1&PHONE=+79991234567&EMAIL=mymail@mail.ru&MSG=Текст сообщения&TITLE=Заголовок сообщения
GUEST – ID гостя
USER – ID отправившего сообщение
PHONE – телефон для отправки СМС
EMAIL – почтовый адрес для отправки письма
MSG – текст сообщения
TITLE – заголовок сообщения
Возвращает строку: &ERROR=0&ID=22
ERROR – код ошибки
ID – идентификатор нового сообщения
Коды ошибок:
1 – ошибка соединения с GuestAnnouncerUniversal
2 – команда не опознана в GuestAnnouncerUniversal
3 – не удалось сгенерировать новый ID сообщения
4 – не удалось записать новое сообщение в БД
0 – завершено успешно
 
4. GetAnnouncerStatus – запрос состояния GuestAnnouncerUniversal. Возвращает строку: &ERROR=0&STATUS=1&APPMODE=2
ERROR – код ошибки
STATUS – код состояния
APPMODE – режим работы GuestAnnouncerUniversal
Коды ошибок:
1 – ошибка соединения с GuestAnnouncerUniversal
2 – команда не опознана в GuestAnnouncerUniversal
0 – завершено успешно
Коды статусов:
1 – работает
0 – не работает
Режимы работы:
0 – E-Mail и СМС рассылка
1 – работа с Connecter
2 – работа с разовыми сообщениями
 
5. SetAnnouncerStatus – запуск/остановка GuestAnnouncerUniversal. Входные параметры – строка вида: &STATUS=1
Возвращает строку: &ERROR=0&STATUS=1
ERROR – код ошибки
STATUS – код нового состояния
Коды ошибок:
1 – ошибка соединения с GuestAnnouncerUniversal
2 – команда не опознана в GuestAnnouncerUniversal
3 – статус не опознан в GuestAnnouncerUniversal
0 – завершено успешно
Коды статусов:
1 – работает
0 – не работает
 
6. GetAnnouncerTimer – интервал сканирования БД (в мс). Возвращает строку: &ERROR=0&VALUE=5000
ERROR – код ошибки
VALUE – значение интервала сканирования (в мс.)
Коды ошибок:
1 – ошибка соединения с GuestAnnouncerUniversal
2 – команда не опознана в GuestAnnouncerUniversal
0 – завершено успешно
 
7. GetMessageStatus – получение статуса сообщения по его ID. Входные параметры – строка вида: &MSGID=12
Возвращает строку: &ERROR=0&EMAIL=1&SMS=0
ERROR – код ошибки
EMAIL – статус отправки сообщения по почте
SMS – статус отправки сообщения по СМС
Коды ошибок:
1 – ошибка соединения с GuestAnnouncerUniversal
2 – команда не опознана в GuestAnnouncerUniversal
3 – сообщение не найдено
0 – завершено успешно
Коды статусов:
1 – отправлено
0 – не отправлено