В ПО Абонемент реализована возможность отправлять разовые СМС гостям непосредственно пользователем из основного модуля программы с помощью плагинов.

Алгоритм работы следующий:

  • ПО Абонемент вызывает плагин
  • Плагин инициализирует библиотеку smsc.dll и вызывает функцию создания оповещения для гостя
  • Библиотека создает задание в БД для модуля СМС и EMAIL рассылки
  • GuestAnnouncer анализирует БД и отправляет все новые сообщения

 

Необходимо для работы:

  • smsc.dll и smsc.ini в папке exe
  • В smsc.ini необходимо настроить связь с БД:
    [database]
      dbname=127.0.0.1/3080:C:\_UCS\_FITNESS\IBDATA\FITNESS.FDB
      dbUser=ucs
      dbPassword=ucs
  • В папке frf должны быть файлы (.fr3 и .ini) плагина, который осуществляет отправку смс.
  • В frf.ini необходимо настроить секцию [PLUGINS_MAIN] пример:
    [PLUGINS_MAIN]
    SingleSMS=Отправить сообщение
  • В GuestAnnouncer должен быть создан шаблон рассылки, анализирующий и отправляющий разовые сообщения. Запрос для шаблона:
    select 
      PHONE as phone_num ,
      id as Ref,
      'HEADER' as header,
    SENT_MESSAGE as smstext,
    1
    from GUEST_ANNOUNCEMENTS_SINGLE S
    where 1=1
    and not exists
      ( select ah.id from announcements_hist ah
        where ah.ref = s.id and ah.failed=0
        and ah.guest_announcement = #ID_ANNOUNCEMENT#)

    smstext - текст сообщения, который используется в шаблоне сообщения. Шаблон рассылки присутствует в поставке GuestAnnouncer начиная с версии ПО Абонемент 1.128.

В плагине можно реализовать различные шаблоны сообщений, подстановку обращений и т.д. Плагины разрабатываются аналогично печатным формам.

Пример кода отвечающего за создание нового задания на отправку сообщения:

  ...
  lib := loadLibrary('smsc.dll');
  if lib < 1 then Exit;      
  try                
  CALL_LIBRARY_FUNCTION(lib,'InitializationSMSC',2,['.\smsc.ini','SMSC']);  // инициализация библиотеки с указанием конфигурационного файла
  CALL_LIBRARY_FUNCTION(lib,'SendSMS2',5,[memoSMS.Lines.Text,'',1,strtoint(vartostr(<qGuest."id">))]); //Вызыв функции создания оповещения
  res:=CALL_LIBRARY_FUNCTION(lib,'GetLastError',0,nil); // Получение последней ошибки
  finally                
  CALL_LIBRARY_FUNCTION(lib,'Done',0,nil);  // Завершение рбаоты с библиотекой
  FreeLibrary(lib);  // Освобождение памяти
  if vartostr(res)='0' then begin  // Если ошибки не возникло
     showmessage('Сообщение отправлено');
     dialogpage1.modalresult:=mrCancel;
  end
  else // Если ошибка
       showmessage('Ошибка: '+vartostr(res));
  end;
  ...

Необходимые модули в ключе защиты:

  • ПО Абонемент
  • Модуль SMS и E-Mail рассылки

В поставке, начиная со 128 версии, в папке exe\frf присутствует пример плагина для отправки разовых произвольных сообщений: SingleSMS.fr3.