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
- SMS : Envoi immédiat
- SCHEDULED : Envoi à une date et heure précises
- 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(
companyId: 'company_id',
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.
| Nom | Description | Type | Facultatif |
|---|---|---|---|
| text | Contenu du message | String | Non |
| senderId | Nom d’expéditeur affiché sur le SMS (ex: ‘MonShop’). Doit être enregistré et actif. | String | Non |
| name | Nom de la campagne | String? | Oui |
| contacts | Liste des contacts destinataires | List<ContactModel>? | Oui |
| groupsIds | Identifiants des groupes | List<String>? | Oui |
| type | Type de campagne | SMSType? | Oui (défaut: SMS) |
| scheduledDate | Date de programmation | DateTime? | Oui |
| recurring | Configuration des répétitions | CampaignRecurringDayModel? | Oui |
| companyId | Identifiant de l’entreprise | String? | Oui |
Bonnes pratiques
- Longueur : Respectez les limites de caractères (160 GSM-7, 70 UCS-2)
- Personnalisation : Utilisez les variables
@nom_complet, etc. - Test : Testez vos messages avant envoi en masse
- Programmation : Utilisez des intervalles de 15 minutes
- Récurrence : Testez les campagnes récurrentes sur un petit groupe
Last updated on