Ръководство за  работа с библиотеката SendSMS

Функционалност

SendSMS  е библиотека за изпращане на SMS съобщения. Целта е да предоставим на разработчиците на софтуер за обслужване на медицинската практика (а и на всички, които се нуждаят от това) възможност да изпращат SMS съобщения от компютъра си до пациентите. Технологията  е ориентирана към българските условия и трябва да позволява поддръжка на максимално различни методи за изпращане - Интернет, GSM мрежи и др.
Използваме .NET технологията върху Windows или Linux.. Вече съществува реализация на подобни библиотеки на Java, но от нашата реализация трябва да позволява лесна интеграция с Windows приложения, тъй като наличните медицински приложения на пазара в България са Windows ориентирани. Изходният код на библиотеката се публикува под GPL лиценз с цел да направим продукта ни общодостъпен и подходящ за внедряване и доразработване. Тъй като сме далеч от мисълта, че бихме направили нещо съвършено, ще се погрижим да осигурим възможност на всеки ентусиаст да даде своя принос за усъвършенстването на нашият продукт. От друга страна това е проект с некомерсиална цел създаден в името на обществено полезното, и поради тази причина бихме искали разработените продукти на негова основа да останат общодостъпни и свободни.
Първата версия включва само изпращане на прости текстове съобщения. Мултимедийни съобщения евентуално могат да се добавят по-късно. Изпращането може да се извършва по различни начини. Всеки начин на изпращане на съобщение се представя като отделен изпращач, който се използва от библиотеката. Създаден е елементарен изпращач използващ услугата email2sms на Мтел, включен в библиотеката. Друг подобен изпращач може да се създаде на базата на web услугата на сайта http://sms.mtel.net. Добра идея е също създаването на изпращач изполващ GSM телефон свързан с компютъра посредстом подходящо устройство - например USB порт или BlueTooth. Понеже очакваме пазара на IT технологиите и особенно в GSM сферата в близките няколко години у нас да е особенно динамичен, ние целим лесен начин за промяна на използваните услуги. Това се постига чрез рефактиране на конфигурационните файлове и промяна на множеството от налични библиотеки. За информация отностно конфигурирането на изпращачите виж Конфигурация.
В общия случай различните изпращачи могат да изпращат съобщения до различни множества от получатели. Затова един изпращач може да откаже да изпрати конкретно съобщение. Библиотеката обхожда всички конфигурирани изпращачи по ред на приоритета, като ако един някой изпращач приеме да изпрати съобщението, няма да бъдат правени повече опити. Също така изпращането може да пропадне, без изпращача да разбере. За това изпращача не дава гаранция, че съобщението е получено, а само, че е изпратено.
С библиотеката SendSMS се разпространява и демонстационен пакет TestSendSMS, който съдържа примерна програмка използваща нашата библиотека. Всички примери по-долу са взети от нея.

Сдобиване

Актуална версия на библиотеката и наличните до момента изпращачи можете да потърсите на http://zlatko.ludost.net/sendsms/.

Инсталиране

Библиотеката се използва по следният начин:
Компилираният DLL файл се разполага в директорията за библиотеки на системата. За Линукс това са директориите описани в LD_LIBRARY_PATH променливата на средата, а за Windows - описаните в PATH променливата. В такава директория се разполагат също и библиотеките за различни изпращачи.
След това във .NET кода на вашата програма добавяте обръщение към метода send на класа SendSMS от областта SendSMS. На този метод се подават IAddress, който съдържа телефонен номер и ISMS, съдържащ текстовото съобщение. В случай, че съобщението не бъде изпратено по някаква причина методът ще вдигне NotSendException.
Тук ще приложим примерен код за работа с библиотеката. Програмката, от която е взет той се разпространява заедно с нашата библиотека.
        public static void send(string phone, string text)
        {
            SMS sms = new SMS();
            sms.Text = text;
            sms.Address = new Address(phone);
            SendSMS.SendSMS.getInstance().send(sms);
        }
Не пропускай главата Конфигуриране.

Конфигуриране

Конфигурирането на системата става чрез XML файлове. Това са .config файла за .NET приложението, файл за конфигуриране на нашата библиотека и евентуално конфигурационни файлове за различните изпращачи.
Ако нямате конфигурационен файл на .NET приложението създайте такъв и го разположете в същата директория, в която стартирате приложението.
В конфигурационния файл добавете следния ред:
<SendSMS> <add key="config" value="вашият-файл.xml" /> </SendSMS>
, където вашият-файл.xml е файла, който ще използвате за да конфигурирате SendSMS библиотеката.В този файл трябва да напишете:
<SendSMS>
    <Senders>
        <Sender priority="1" className="SendSMS.Email2SMSSender" config="Email2SMSSender.xml"/>
    </Senders>
</SendSMS>

Елементът <Sender ... /> трябва да се повтаря за всеки използван изпращач. Атрибутът priority описва приоритетът с който трябва да се извика изпращачът. Библиотеката подрежда доставчиците по приоритети, като тези с най-нисък приоритет са с предимство при изпращане на съобщение. Атрибутът className указва името на класа на изпращача. Атрибутът config служи за конфигуриране на изпращача. Стойностите на последните два атрибута са характерни за всеки изпращач.
В горният пример сме конфигурирали инстанция на email2sms изпращача. Класът на този изпращач е SendSMS.Email2SMSSender. Стойността на config атрибута сочи към конфигурационен файл за тази инстанция. Той съдържа следният текст, който дефинира параметрите на инстанцията чрез XML формат:
<Email2SMSSender>
   <!--SMTP сървър-->
   <server>dl.blue-edge.bg</server>
   <!--Домейн на поучателя на съощението-->
   <domain>sms.mtel.net</domain>
   <!--Адрес от който се изпраща съобщението-->
   <from>zlatko@fmi.uni-sofia.bg</from>
   <!--Регулярен израз за отчитане на телефонните номера на МТел-->
   <phone>35988\d+</phone>
</Email2SMSSender>

Поддръжка и обновяване

Обновяването на системата ще се извършва чрез елементарна подмяна на старите .DLL и конфигурационни файлове според изискванията на новата версия.