chora permet d'envoyer des messages SMS à travers sa file d'envoi. Les messages SMS se distinguent des messages Email par un numéro de téléphone mobile valide (ou une liste de numéros) comme destinataire.
Paramètres
Dans le cas d'un message SMS, en plus du champ
destinataire (
To), seul le champ
Message est pris en compte : il doit contenir le message qui sera envoyé.
Les autres options (et paramètres d'envoi) propres aux SMS doivent être définis pour l'application dans le fichier config/site.php
Il existe deux manières d'envoyer les SMS : soit via une passerelle Email2SMS, soit via l'API d'un agent de transport des messages SMS. La configuration doit être effectuée pour au moins une des deux. Lorsque les deux sont paramétrées, l'agent de transport de messages Sms sera utilisé de préférence.
Passerelle Email2SMS
Le principe de fonctionnement d'une telle passerelle est de reconnaître un en-tête particulier de message Email pour le transformer en SMS. La seule passerelle Email2SMS actuellement autorisée est celle d'Ovh.
Voici les paramètres à définir pour qu'elle fonctionne :
/* Email to SMS Gateway parameters (used for events confirmation) */
/* CHANGE THIS */ define('EMAILTOSMSADDRESS','email2sms@ovh.net'); /* Email to SMS gateway email address */
/* CHANGE THIS */ define('EMAILTOSMSACCOUNT','sms-xx0000-0'); /* OVH account */
/* CHANGE THIS */ define('EMAILTOSMSUSER','username'); /* Email to SMS login */
/* CHANGE THIS */ define('EMAILTOSMSPASSWORD','<password>'); /* Email to SMS user password */
/* CHANGE THIS */ define('EMAILTOSMSSENDER','+33600000000'); /* SMS sender: +33600000000 */
/* CHANGE THIS */ define('EMAILTOSMSRECIPIENT','+33600000000'); /* SMS recipient (bcc): +33600000000 */
/* CHANGE THIS */ define('EMAILTOSMSLABEL','AE Support'); /* SMS sender name (text) (unused) */
Agent de transport des messages SMS
Un agent de transport des messages SMS (
SMSTRANSPORT) doit être défini dans votre fichier de configuration de l'application.
Pour l'instant, seul "ovh" est supporté.
Voici les paramètres à définir pour pouvoir utiliser l'API d'OVH :
/* Sms Transport Provider API */
/* CHANGE THIS */ define('SMSTRANSPORT','ovh'); //This requires a <SMSTRANSPORT>_send_sms() function in helpers/sms_helper.php
/* CHANGE THIS */ define('SMSAPPKEY',''); //This is the API Key
/* CHANGE THIS */ define('SMSAPPSECRET',''); //If required, this is your password
/* CHANGE THIS */ define('SMSCONSUMERKEY',''); //If required, this is your identifier
/* CHANGE THIS */ define('SMSENDPOINT','ovh-eu'); //If required, this is the API endpoint
Les paramètres suivants ne sont pas toujours pris en compte, mais ils doivent être définis :
/* CHANGE THIS */ define('SMSSENDER','+33600000000'); //Default mobile number of sender (optional)
/* CHANGE THIS */ define('SMSSENDERLABEL','SendersName'); //Default label of sender (optional)
Notez que dans le cas d'Ovh, l'obtention de vos clés d'API se fait à l'adresse suivante : https://api.ovh.com/createToken/
Ajout d'autres agents de transport
Il est possible d'étendre l'application en lui ajoutant de nouveaux agents de transport de messages Sms.
A chaque agent de transport doivent correspondre deux fonctions nommées comme suit dans le fichier helpers/sms_helper.php :
— une fonction <SMSTRANSPORT>_send_sms() (ex. ovh_send_sms()) ;
cette fonction, appelée à partir de la file d'envoi, devra accepter les paramètres suivants (les valeurs par défaut attendues sont indiquées entre parenthèses) :
$sender : (requis) numéro de l'expéditeur
$target : (requis) liste de numéros destinataires du message entre guillemets droits et séparés par des virgules : "+33600000000", "+33600000000"...
$message : (requis) contenu du message SMS à envoyer encodé en UTF-8 ou 7bit (pour GSM 03.38)
$coding : (optionnel, défaut : '7bit') encodage du message
$noStopClause (optionnel, défaut : false) true si le message doit contenir la mention STOP AU ***** (SMS commerciaux)
— une fonction <SMSTRANSPORT>_status_sms() (ex. ovh_status_sms()) ;
cette fonction accepte un paramètre qui est le numéro/identifiant du message SMS dont on veut connaître le statut.
Elle renvoie une chaîne de caractères : "sent" si le message a été envoyé avec succès, "sent (no response)" si aucun statut n'est renvoyé par l'appel à l'API, "delivered" s'il a été lu et "failed" si l'envoi n'a pu aboutir.
Longueur des messages et encodage des caractères
Les messages texte de type SMS doivent être encodés en UTF-8 pour leurs paramètres et en GSM 03.38 ou UTF-8 pour le contenu du message lui-même (options disponibles selon l'agent de transport).
Jeux de caractères autorisés
Encodage GSM 03.38
The standard SMS mobile-phone character set is used universally to send text messages. You can send a longer text message by using only GSM 03.38 characters. The standard character set allows up to 160 characters, and includes the Latin alphabet and the most common accented forms, certain special characters, and the Greek alphabet.
Les caractères suivants sont autorisés :
@ Δ SP 0 ¡ P ¿ p
£ _ ! 1 A Q a q
$ Φ " 2 B R b r
¥ Γ # 3 C S c s
è Λ ¤ 4 D T d t
é Ω % 5 E U e u
ù Π & 6 F V f v
ì Ψ ' 7 G W g w
ò Σ ( 8 H X h x
Ç Θ ) 9 I Y i y
LF Ξ * : J Z j z
Ø ESC + ; K Ä k ä
ø Æ , < L Ö l ö
Unicode
Lorsqu'un message contient des caractères non GSM 03.38, SMS le transmet comme message Unicode. Cela permet d'envoyer des messages écrits en Arabe, Kanji, Cyrillique, Mandarin, etc.
Le texte des messages est strictement limité à 160 caractères, incluant les espaces. Cependant, jusqu'à 6 messages peuvent être liés pour contenir un seul texte d'une longueur supérieure.
Chaque message ainsi concaténé est limité à 153 caractères plutôt que 160 à cause de la présence d'informations spéciales UDH (user-data header). Ceci ne s'applique qu'aux messages encodés avec le jeu de caractères GSM 03.38.
L'encodage Unicode impose une longueur maximale de 70 caractères pour le texte des messages.Cependant, certains fournisseurs proposent également la concaténation de plusieur messages Unicode via leur API.