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"