02 51 76 0 34

Accès client :  mot de passe oublié   inscription

       (oubli)
AccueilDéveloppeurs / API › Dolibarr

Module SMS pour Dolibarr ERP/CRM

Mis à jour le 22 juillet 2026

Dolibarr gère vos clients, vos factures et vos interventions : ce module y ajoute l'envoi de SMS — une page d'envoi dans le menu Outils, et surtout une classe Sms123Api réutilisable en une ligne dans vos triggers et crons (relance de facture, commande prête, rappel d'intervention).

1La classe d'envoi (extrait du module)

<?php
/* Classe d'appel de l'API 123-SMS.net - licence MIT
 * Reutilisable dans vos triggers, crons et scripts Dolibarr :
 *   require_once DOL_DOCUMENT_ROOT.'/custom/sms123/class/sms123api.class.php';
 *   $code = Sms123Api::envoyer('0601020304', 'Votre commande est prete.');
 */
require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';

class Sms123Api
{
	/**
	 * Envoie un SMS. Renvoie le code retour API (80 = envoye) ou 'ERR:...'
	 *
	 * @param string $numero  destinataire (0601020304 ou 33601020304,
	 *                        plusieurs numeros separes par des tirets)
	 * @param string $message texte du SMS (160 caracteres GSM par SMS)
	 * @return string
	 */
	public static function envoyer($numero, $message)
	{
		global $conf;

		$identifiant = getDolGlobalString('SMS123_IDENTIFIANT');
		$cleapi = getDolGlobalString('SMS123_CLEAPI');
		if (empty($identifiant) || empty($cleapi)) {
			return 'ERR: module non configure (menu Configuration > Modules > 123-SMS)';
		}

		$champs = array(
			'email' => $identifiant, // nom du parametre historique de l'API
			'pass' => $cleapi,
			'numero' => self::normaliser($numero),
			'message' => $message,
		);
		$sender = getDolGlobalString('SMS123_SENDER');
		if (!empty($sender)) {
			$champs['sender'] = $sender;
		}

		// Appel HTTPS via le client Dolibarr (proxy de l'instance respecte)
		$res = getURLContent('https://www.123-sms.net/http.php', 'POST', http_build_query($champs));
		if (empty($res['http_code']) || $res['http_code'] != 200) {
			dol_syslog('Sms123Api::envoyer echec HTTP '.(empty($res['http_code']) ? '?' : $res['http_code']), LOG_WARNING);
			return 'ERR: appel API impossible (HTTP '.(empty($res['http_code']) ? '?' : $res['http_code']).')';
		}
		$code = trim($res['content']);
		dol_syslog('Sms123Api::envoyer -> code '.$code, LOG_INFO);
		return $code;
	}

	/** Normalise un numero francais : 06/07 -> 336/337, sans espaces. */
	public static function normaliser($numero)
	{
		$parts = array();
		foreach (explode('-', (string) $numero) as $n) {
			$n = preg_replace('/[^0-9+]/', '', $n);
			if (strpos($n, '+') === 0) {
				$n = substr($n, 1);
			}
			if (strpos($n, '00') === 0) {
				$n = substr($n, 2);
			}
			if (strlen($n) == 10 && $n[0] == '0') {
				$n = '33'.substr($n, 1);
			}
			if ($n !== '') {
				$parts[] = $n;
			}
		}
		return implode('-', $parts);
	}

	/** Libelle d'un code retour API. */
	public static function libelle($code)
	{
		$libelles = array(
			'80' => 'Le message a ete envoye.',
			'81' => 'Enregistre pour un envoi en differe.',
			'82' => 'Identifiant et/ou cle API invalides.',
			'83' => 'Credit insuffisant : rechargez votre compte.',
			'84' => 'Numero de mobile invalide.',
			'91' => 'Doublon : meme message deja envoye a ce numero sous 24 h.',
			'97' => 'Sender-ID invalide ou non declare.',
		);
		return isset($libelles[$code]) ? $libelles[$code] : 'Code retour : '.$code;
	}
}

2Installation et utilisation

  • Téléchargez l'archive et décompressez-la dans htdocs/custom/ (vous obtenez htdocs/custom/sms123/).
  • Accueil › Configuration › Modules/Applications : activez « SMS 123-SMS.net » (famille Interfaces).
  • Configurez le module : identifiant et clé API (transmis à l'inscription), Sender-ID optionnel.
  • Donnez la permission « Envoyer des SMS » aux utilisateurs concernés.
  • Menu Outils › SMS 123-SMS : envoyez un SMS de test — la réponse s'affiche en clair (80 = envoyé).
L'identifiant et la clé API sont transmis par e-mail à l'inscription, et lors de chaque régénération de clé (espace client › API). Les codes réponse et le retour des accusés de réception par HTTP sont détaillés dans la documentation technique.

Questions fréquentes

Avec quelles versions de Dolibarr le module est-il compatible ?

Le module suit le squelette standard des modules Dolibarr et est développé pour Dolibarr 14 et plus (PHP 7+), multi-entités supporté (configuration par entité). Comme pour tout module, testez d'abord sur votre instance de pré-production.

Comment envoyer des SMS automatiques (relance de facture, commande prête) ?

La classe Sms123Api s'appelle en une ligne depuis vos triggers, crons ou scripts Dolibarr : Sms123Api::envoyer($numero, $message). Et si vous préférez déléguer, 123-SMS développe gratuitement des adaptations spécifiques — contactez-nous.

Où trouver l'identifiant et la clé API ?

Ils sont transmis par e-mail à l'inscription sur 123-SMS.net, et lors de chaque régénération de la clé (espace client › API). La clé se régénère en un clic en cas de doute.

Les numéros doivent-ils être au format international ?

Non : le module normalise automatiquement les numéros français (0601020304 devient 33601020304) et accepte plusieurs destinataires séparés par des tirets. Espaces et points sont retirés.

Combien coûte le module ?

Le module est gratuit (licence MIT, code source ouvert). Seuls les SMS envoyés sont débités de vos crédits 123-SMS prépayés — sans abonnement ni date d'expiration, prix dégressifs de 0,23 à 0,075 € HT.

Téléchargement

Module Dolibarr (.zip)

Licence MIT — libre et gratuit.

L'essentiel

  • API HTTPS en un appel : identifiant, clé API, numéro, message.
  • Code réponse immédiat + accusés de réception par HTTP.
  • Crédits prépayés sans abonnement ni expiration.
  • Adaptations spécifiques développées gratuitement.