Une passerelle SMS opensource avec nodeJS

Bonjour,

Il y a peu de temps je me suis mis dans un projet personnel, celui d’écrire une plateforme SMS open source que l’ont peu couplée avec Kannel( kannel.org ) ou un serveur SMPP V3.4 et V5.0.
Cette plateforme est open source et pour l’instant en phase alpha. elle est disponible ici badlee/scriptbox.
Je suis à la recherche de testeurs, de contributeurs et surtout de sponsors pour soutenir le projet.

Je ne suis pas un bon parleur donc je vais aller à l’essentiel.

C’est une passerelle SMS ( voir wikipedia SMS GATEWAY ) que l’ont peu couplée avec Kannel (J’ai porté le protocole ipc de kannel pour nodejs il est disponible ici) ou avec un serveur SMPP V3.4 et V5.0(Ex. SMS center des opérateurs).
Elle s’installe partout où nodejs peut s’installer (Linux, Mac OS, Windows, BSD), la portabilité étant un point important pour moi. Perso je l’ai testé avec Win 7, Debian et Ubuntu.

Merci de votre attention, et si ça vous intéresse de m’aider, je suis vous en serez très reconnaissant.

Quelques instruction pour installer tester l’application.

Comment installer et tester

$ git clone [email protected]:badlee/scriptbox.git
$ cd scriptbox
$ npm i .
$ mv settings.conf.dist settings.json
$ node . & # pour demarer ca en tache de fond
$ # Aller dans le navigateur et tape l'url suivante http://127.0.0.1:13014 

Tester la passerelle SMS
Pour pouvoir tester il vous faut configurer d’abord configurer les éléments suivants :

  • Un connecteur (Pour se connecter à un serveur Kannel ou à un serveur SMPP)
    dans le menu de gauche : Connecteur > Ajouter
  • Un script (un code javascript)
    dans le menu de gauche : Script > Ajouter
  • Un Mot clé (le mot cle que l’utilisateur enverra pas SMS et qui sera lié au script)
    dans le menu de gauche : Mots Cles > Ajouter
  • Démarrer un connecteur (si ce n’est pas déjà fait)
    dans le menu de gauche : clique sur Connector > Liste, ensuite choisit ton connecteur et clique sur ‘Start server’

Demarre kannel pour les test

$ bearerbox  /path/to/kannel.conf -v 0
$ cd /pah/to/kannel/test/
$ ./fakesmsc -i .1 -m 1 "0000 8080 text echo juste an sms"

Quelques Exemple de script, et ma configuration de kannel

** Un script qui renvoie le SMS envoyé au client**

/* Echo sms service */
new MSG(sms).sendSMS();

Un script qui permet de faire un vote par SMS
Pour Voter, il suffit d’envoyer “[Mot cle] [votre choix]”, les choix possibles sont A, B, C, D.
Pour avoir les résultats, il suffit d’envoyer “[Mot Cle]”.
La base de données utilisée est mongodb, donc il faut taper npm i mongoose, si le driver n’est pas déjà installé.

/* 
	LIST OF SMS FORMAT
		* Vote for a team
			KEYWORD[ ]VOTE_FOR
		* Obtain the result
			KEYWORD
 */
var mongoose = require('mongodb'),
	texto = sms.msgdata.split(' '),
	match = "",
	msg = new MSG(sms),
	team = ["a","b","c","d"];
/* check the syntax */
if(!(match = sms.msgdata.match(/^[a-z0-9]+([ ]+([abcd]))?$/i))){
	msg.sendSMS("For Vote send : "+texto[0].toUpperCase()+" YOUR CHOICE\nPossible choice are :"+(team.join(', ').toUpperCase()));
}else{
	sms.msgdata = new Buffer(sms.msgdata).toString();
	// connect to vote database
	var db = mongoose('mongodb://localhost/'+texto[0]);

	db.on('error',function(){
		msg.sendSMS('Error when vote retry later!');
	});
	db.once('open',function(){
		/* create vote schema */
		var Vote = db.model('votes',{
			phone_number : String,
			voted_for : String
		});
		switch(typeof match[2]){
			case 'string': // it's a vote
				new Vote({
					phone_number : new Buffer(sms.sender).toString(),
					voted_for : match[2].toUpperCase()
				}).save(function(err){
					db.close(); // !important you must close connection
					msg.sendSMS(err ? 'Error when vote retry!' : 'Votre registred vote again for your team...');
				});
				break;
			default : //obtain the result
				var result = {};
				team.map(function(e){ result[e.toUpperCase()] = 0; });
				Vote.find({},function(err,res){
					db.close();// !important you must close connection
					res.map(function(e){ result[e.voted_for] += 1; });
					res = [];
					for(var i in result) res.push({_id:i,value : result[i]});
					var ret = [];
					res.sort(function(a,b){ return a.value < b.value}).map(function(a){ ret.push("  "+a._id+" : "+a.value);  })
					msg.sendSMS("Vote result : "+ret.join(", "));
				})
		}
	})
}

Ma configuration de test pour kannel.

group = core
admin-port = 14000
smsbox-port = 14001
admin-password = bar
log-level = 0
log-file = /tmp/kannel.log

group = smsbox
bearerbox-host = "127.0.0.1"
sendsms-port = 14014
global-sender = 14014
log-file = smsbox.log
smsbox-id = LoveIsMyReligion

group = smsc
smsc = fake
smsc-id = fakesmsc
host = localhost
port = 10000

group = smsbox-route
smsbox-id = LoveIsMyReligion
smsc-id = fakesmsc

group = sendsms-user
username = tester
password = foobar

group = sms-service
keyword = default
text = "No service specified"
4 « J'aime »

Bonjour, ça a l’air sympa mais c’est quoi le bût ultime ? Pouvoir envoyer gratuitement des SMS depuis son site web ?

1 « J'aime »

Bonjour Axel,

C’est pour les opérateurs de services à valeur ajouté. Un service à valeur ajouté c’est en gros quand dans ton émission on te demande de voter par SMS c’est un serveur SMS qui reçois et valide les votes, bon c’est sommaire comme explication mais bon j’ai pas mieux.

Ancienement en france on disais kiosque SMS ou SMS+, c’est juste une application couplé à un modem ou pour le SMS+ à un operateur de téléphonie(FREE, ORANGE, SFR…); qui reçois des requêtes (pour le SMS+ via un numero court 5 chiffres) et qui répond par un SMS ou une autre action, les SMS envoyés sont en faite des requêtes à des services, (Ex. SMS to Mail, VOTE par SMS, QUIZZ, TOMBOLA etc…).

Maintenant rien ne t’empêche depuis un site web d’envoyer des SMS via l’API REST du serveur SMS, qui est faite pour l’intercation avec les requettes HTTP.

Cdt.

@oshimin : question, Kannel, tu le branches à quel type de hardware ? quel type de téléphone ? en USB ? J’aimerais bien faire le test.

Bonsoir tout le monde.
Belle initiative, mais est-ce possible d’envoyer de sms personnalisé avec kannel (expéditeur personnalisé)
Merci et bonsoir

Bonjour Oshimin,

Nous avons un projet super génial dans lequel nous avons besoin de semi-automatiser des envois et des réceptions de SMS et MMS (cad avoir un back office de contrôle et d’enrichissement des sms). Est-ce que tu serais capable de nous aider à la mettre en place ? Que proposerais-tu ou quelles questions me poserais-tu pour préciser mon besoin ? merci !

Desole pour la reponse tardive. je reste disponible en inbox

Bonjour,

Nous pourrons bien tester votre plateforme.
Nous avons un compte SMPP chez un opérateur et nous souhaitons recevoir du traffic.

Mon email est : [email protected]

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s