Skip to Content
BibliothequesDartCampagnes SMS 📨

Gestion des Campagnes SMS

Les campagnes SMS vous permettent d’envoyer des messages personnalisés à vos contacts. Notre SDK Dart supporte les campagnes standards, programmées et récurrentes.

Types de campagnes

  1. SMS : Envoi immédiat
  2. SCHEDULED : Envoi à une date et heure précises
  3. RECURRING : Envoi récurrent selon un planning défini

Utilisation

Après avoir initialisé votre SDK, utilisez la propriété campaign pour gérer vos campagnes.

Création d’une campagne standard

lib/services/campaign_service.dart
import 'package:mon_sms_pro/mon_sms_pro.dart'; Future<void> createCampaign() async { try { final res = await sms.campaign.create( text: 'Bonjour @nom_complet, bon début de semaine !', senderId: 'MonShop', contacts: [ ContactModel(phone: '22500000000', name: 'John Doe'), ContactModel(phone: '22500000001', name: 'Jane Doe'), ], groupsIds: ['group_1', 'group_2'], ); if (res.success) { print('Campagne créée: ${res.data?.id}'); } } catch (error) { print('Erreur: $error'); } }

Campagne programmée

Future<void> createScheduledCampaign() async { final res = await sms.campaign.create( text: 'Rappel : Votre rendez-vous est demain à 10h.', senderId: 'MonShop', contacts: [ContactModel(phone: '22500000000', name: 'John')], type: SMSType.scheduled, scheduledDate: DateTime(2024, 3, 20, 10, 0), ); if (res.success) { print('Campagne programmée !'); } }
⚠️

Les dates programmées doivent être des multiples de 15 minutes. Exemple : 10:00, 10:15, 10:30, 10:45.

Campagne récurrente

Future<void> createRecurringCampaign() async { final res = await sms.campaign.create( text: 'Rappel hebdomadaire !', senderId: 'MonShop', contacts: [ContactModel(phone: '22500000000', name: 'John')], type: SMSType.recurring, recurring: CampaignRecurringDayModel( monday: DateTime(2024, 3, 18, 9, 0), wednesday: DateTime(2024, 3, 20, 9, 0), friday: DateTime(2024, 3, 22, 9, 0), ), ); if (res.success) { print('Campagne récurrente créée !'); } }

Liste des campagnes par entreprise

Future<void> listCampaigns() async { final res = await sms.campaign.listByCompany( page: 1, count: 20, ); if (res.success) { for (final campaign in res.data ?? []) { print('${campaign.text} - ${campaign.type}'); } } }

Détails d’une campagne

Future<void> getCampaignDetails(String id) async { final res = await sms.campaign.get(id: id); if (res.success) { final details = res.data; print('Nom: ${details?.name}'); print('Contacts: ${details?.contacts.length}'); print('Crédits utilisés: ${details?.creditUsed}'); } }

Activer/Désactiver une campagne

Future<void> toggleCampaign(String id) async { final res = await sms.campaign.toggleEnable(id: id); if (res.success) { print('Statut modifié: ${res.data?.isEnabled}'); } }

Le SDK fournit sept méthodes pour les campagnes : create, list, listByCompany, get, update, toggleEnable et getContacts.

Documentation de l’API

sms.campaign.create

Crée une nouvelle campagne SMS.

NomDescriptionTypeFacultatif
textContenu du messageStringNon
senderIdNom d’expéditeur affiché sur le SMS (ex: ‘MonShop’). Doit être enregistré et actif.StringNon
nameNom de la campagneString?Oui
contactsListe des contacts destinatairesList<ContactModel>?Oui
groupsIdsIdentifiants des groupesList<String>?Oui
typeType de campagneSMSType?Oui (défaut: SMS)
scheduledDateDate de programmationDateTime?Oui
recurringConfiguration des répétitionsCampaignRecurringDayModel?Oui
companyIdIdentifiant de l’entreprise (auto-injecté depuis la config SDK)String?Oui
⚠️

Le senderId est obligatoire. C’est le nom exact d’un expéditeur appartenant à l’entreprise et dont le statut est approuvé. Un nom inconnu, en attente d’approbation ou appartenant à une autre entreprise est rejeté avec l’erreur sender-not-found-or-not-approved : aucun expéditeur par défaut n’est substitué et aucun crédit n’est débité.

contacts et groupsIds sont facultatifs pris séparément, mais la campagne doit aboutir à au moins un destinataire — sinon l’appel échoue avec l’erreur no-contacts.

Si vous avez configuré companyId lors de l’initialisation du SDK, il sera automatiquement injecté dans les appels. Vous n’avez pas besoin de le passer manuellement.

Bonnes pratiques

  1. Longueur : Respectez les limites de caractères (160 GSM-7, 70 UCS-2)
  2. Personnalisation : Utilisez les variables @nom_complet, etc.
  3. Test : Testez vos messages avant envoi en masse
  4. Expéditeur : Utilisez le nom exact d’un expéditeur approuvé de l’entreprise
  5. Programmation : Utilisez des intervalles de 15 minutes
  6. Récurrence : Testez les campagnes récurrentes sur un petit groupe
Last updated on