OxySMS - plate-forme d'envoi de SMS depuis Internet

Présentation de l'API

OxySMS fournit un accès direct au coeur de sa plate-forme d'envoi de données mobiles et sa passerelle SMS internationale par l'intermédiaire d'une API (Interfaces de Programmation). L'API de la passerelle SMS OxySMS permet aux développeurs d'utiliser des compétences génériques pour le développement, l'intégration et l'utilisation des solutions mobiles. L'API OxySMS supporte le protocole HTTP. Des instructions simples rendent toutes les caractéristiques de l'offre OxySMS disponibles aux développeurs de programmes et aux groupes TI des sociétés pour le développement de programmes SMS et l'intégration dans les systèmes patrimoniaux. Des documents de spécifications d'intégration complets sont fournis. L'API OxySMS offre aussi une série de classes transporteurs, tel que FlashSMS et rapport sur le statut du SMS, ce qui vous permet de l'ajouter à tout programme existant que vous possédez.

L'api peut également utiliser des appels https pour sécuriser les appels.

L'API en détail

Code source

<?
/**
 * Project: API
 * Author: PIERRE Olivier <olivier [AT] oxeron [DOT] com>
 * Date: 11/10/2005
 * File: api_sms.class.php
 * Version: 2.0
 */
 
class sms
{
    var 
$server "oxysms.com";
    var 
$port "80";
    var 
$script_receive "scripts/receive.php";
    var 
$script_query "scripts/query.php";
    var 
$project_login "demojeu";
    var 
$project_password "demojeu";
    var 
$flash 0;
    
    
/**
    * Function to send a message to a multiple list of recipient 
    */
    
function send($project_login="",$project_password="")
    {
        
        if (empty(
$project_login) || empty($project_password))
        {
            
$project_login=$this->project_login;
            
$project_password=$this->project_password;
        }
    
        
// Build and encode the URL.
        
$url "http://".
                        
$this->server.":".
                        
$this->port."/".
                        
$this->script_receive.
                        
"?project_login=".urlencode($project_login).
                        
"&project_password=".urlencode($project_password).
                        
"&from=".urlencode($this->from).
                        
"&to=".urlencode($this->to).
                        
"&flash=".urlencode($this->flash).
                        
"&text=".urlencode($this->text);

        
// Make the HTTP call whithout displaying the result to prevent errors
        
ob_start();
        
$result = @readfile($url);
        
$data ob_get_contents();
        
ob_end_clean();
        
        
// error connecting to the server
        
if ($result===FALSE)
            return -
1;
            
        
// explode the result with "\n" for each message 
        // (multiple recipients or cut message)
        
$sms_list=explode("\n",$data);
        
$return=array();
        foreach(
$sms_list as $k => $sms)
        {
            if (
trim($sms)!=""
            {
                
// then explode with "-" : 
                
$sms_info=explode("-",$sms);
                
// remove spaces
                
foreach($sms_info as $k2 => $info)
                {
                    
$sms_info[$k2]=trim($sms_info[$k2]);
                }
                
array_push($return,$sms_info);
            }
        }
        return 
$return;
    }        
    
    
/**
    * Function to query 
    */
    
function query($project_login="",$project_password="",$action="")
    {
        
        if (empty(
$project_login) || empty($project_password))
        {
            
$project_login=$this->project_login;
            
$project_password=$this->project_password;
        }
    
        
// Build and encode the URL.
        
$url "http://".
                        
$this->server.":".
                        
$this->port."/".
                        
$this->script_query.
                        
"?project_login=".urlencode($project_login).
                        
"&project_password=".urlencode($project_password).
                        
"&action=".urlencode($action);                        

        
// Make the HTTP call whithout displaying the result to prevent errors
        
ob_start();
        
$result = @readfile($url);
        
$data ob_get_contents();
        
ob_end_clean();
        
        
// error connecting to the server
        
if ($result===FALSE)
            return -
1;
                    
        
$sms_list=explode("\n",$data);
        
$return=array();
        foreach(
$sms_list as $k => $sms)
        {
            if (
trim($sms)!=""
            {
                
// then explode with "-" : 
                
$sms_info=explode("-",$sms);
                
// remove spaces
                
foreach($sms_info as $k2 => $info)
                {
                    
$sms_info[$k2]=trim($sms_info[$k2]);
                }
                
array_push($return,$sms_info);
            }
        }
        return 
$return;
    }
        
}
?>

Télécharger le fichier

Exemple d'utilisation

<?php
include "api_sms.class.php";
$sms = new sms;
$sms->from="oxeron";
$sms->to="+352243433,+334343242,+34534545";
$sms->flash=1;
$sms->text="Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
$sms->send("login","password");
?>

Fonctions send() et codes de retour

Exemple de retour pour un message envoyé à deux destinataires :

00 - message enregistre - dd188544157ad6b6ed796089fc534501

Le message a été correctement reçu par la plate-forme, dd188544157ad6b6ed796089fc534501 est l'ID du message sur la plate-forme

01 - champ project_login non alphanumerique

Le champ project_login n'a pas été renseigné ou ne correspond pas au format chiffres/lettres, au moins 1 caractère

02 - champ project_password non alphanumerique

Le champ project_password n'a pas été renseigné ou ne correspond pas au format chiffres/lettres, au moins 1 caractère

03 - champ to non conforme

Le champ to doit commencer par + et que des chiffres (extension - numero de telephone)

04 - champ from non alphanumerique

L'OADC doit être composé de chiffres et lettres et des cartactères . et _ (peut être vide)

05 - champ text non conforme

Le contenu du message n'est pas de type string

06 - IP xxx.xxx.xxx.xxx non autorisee

L'adresse IP du serveur qui essaie d'envoyer un SMS n'a pas été autorisé à le faire par un administrateur. Contactez un responsable en précisant l'adresse IP de votre serveur

07 - projet non actif

Le projet a été désactivé

08 - message trop long, non envoye

Le message que vous avez envoyé est trop long, il n'a pas été envoyé

09 - message trop long, coupe en xxx messages - dd188544157ad6b6ed796089fc534501

Le message que vous avez envoyé est trop long, il a été segmenté en xxx messages différents

10 - message trop long, tronque - dd188544157ad6b6ed796089fc534501

Le message que vous avez envoyé est trop long, il a été tronqué

11 - login/password incorrect

Le couple project_login/project_password est incorrect

12 - projet non enregistre

Le couple project_login/project_password ne correspond pas à un projet valide

13 - erreur d'insertion

Il y a eu une erreur sur la plate-forme

14 - message flash non autorise

Vous avez tenté d'envoyer un message Flash mais vous n'êtes pas autorisé à le faire

15 - parametre from(aodc) non autorise

Vous avez tenté d'envoyer un message en modifiant l'OADC mais vous n'êtes pas autorisé à le faire

16 - Erreur SQL

Il y a eu une erreur sur la plate-forme

17 - aucune route trouvee

Vous tentez d'envoyer un message à un destinataire ne se trouvant pas dans la liste des pays autorisés

20 - plus assez de credit sur votre compte prepaye

Votre compte ne contient plus assez de crédits pour envoyer le message. Contactez un responsable

21 - champ from trop long

Le champ from ne doit pas exceder 11 caractères alphanumériques ou 15 chiffres. Si vous tentez d'envoyer un message avec 12 caractères alphanumériques, il sera tronqué à 11.

Fonctions query() et codes de retour

$action = "stat_prepaid"


110 - xxxx

Renvoie les crédits disponibles sur le compte

$action = "pays"


119 - lu/be/fr

Renvoie la liste des pays autorisés pour le compte

Pour ouvrir un compte ou consulter les tarifs, contactez nous par email en cliquant ici