SendSMS developers manual

Preface

For information and other staff related to the curent system, see http://zlatko.ludost.net/sendsms/. For contacts - Zlatko Kostadinov.
You may want to take a look at the user manual to get more familiar with the system purpose and usage. We do not intend to discuss those subjects in the current document.

Introduction

This document is oriented to potential developers of the SendSMS library. Those developers are expected to change/improve the library module or to create new sender implementations.
Basically the system consists of three parts - some interfaces to define the functionality of the system from developers point of view, SendSMS core that manages the senders and sender implementations. The idea behind this division is that every sender implementation will implement different sending approach for a different set of receivers. The core will be configured to use some specifiec senders that may be found in the library path. Thus when the user wants to change the approach use (for example if a service is no more available or if a better service occured), he will need to add/delete some library files and to change configuration files without need to recompile the program. This is because of the current state in BG IT, that we suppose will be subject of frequent changes in teh next few years.
Here is a diagram of all classes followed by description of the three parts:

Interfaces

The framework defines three interfaces to describe the functionality:

SendSMS

SendSMS is a singleton class. One may send SMS message calling the send method on it's single instance. The SendSMS class uses the System.Configuration, System.Xml and System.Xml.XPath namespaces to initialize it's state and the System.Reflection to create the senders. Every instance ( still there is only one instance :-) ) keeps it's own senders collection order by priority. The senders along with their priority are defined in the configuration file.
The send method raises NotSendException if  the message may not be send. There is no way defined to know if the messge have not been received.

Sender implementations

Email2SMSSender is a simple ISender implementation. Its work consists of sending an email message to email formatted like <phone-number>@sms.mtel.net. This is done using the System.Web.Mail namespace. Some configuration parameters like SMTP server, sender email, etc. are provided using a XML file.

Building a binary distribution

  1. Checkout the SendSMS module from the CVS repository. You may also want to checkout the TestSendSMS module to see an example of SendSMS client. Alternative way of the cvs checkout is to download the developer package from the web server.
  2. Your files obtained should look like that (some may be skipped):
  3. Go to SendSMS dir and edit the makefile.conf file. You should set some proerties like compiler location, path to additional dll files, etc. All those properties should be defined and described in the file - you may need to change their values.
  4. Type make in to build the distribution files. Thos files will be created in the DIST_DIR specified in the previous step.

Further works

The first thing that should be implemented is a sender that uses a phone connected to the PC using a USB port, or some similar decision. This will allow us to find better frames for the framework - what IS possible to be done in a regular sender and what IS NOT and to define some functionality like "this sender can do this this and this can not". If you are interested in participating this stage development (or any other stage :-)), please contact Zlatko Kostadinov.

Thanks for all your attention!

SendSMS developers team