Guide d’intégration JavaScript
Ce guide vous accompagne dans l’intégration du SDK JavaScript Mon SMS PRO dans vos applications. Notre SDK est compatible avec Node.js, Next.js et la plupart des frameworks JavaScript modernes.
Installation
Pour commencer, installez le package via npm :
npm i @monsmspro/sdkVous pouvez également utiliser yarn (yarn add @monsmspro/sdk) ou
pnpm (pnpm add @monsmspro/sdk) selon votre préférence.
Configuration de la sécurité
Pour une meilleure sécurité, nous recommandons d’utiliser des variables d’environnement pour gérer votre clé API. La plupart des frameworks modernes comme Next.js intègrent déjà le support des fichiers .env.
Configuration des variables d’environnement
- Créez un fichier
.envà la racine de votre projet :
touch .env- Ajoutez votre clé API au fichier
.env:
MONSMS_API_KEY="your_api_key"
MONSMS_COMPANY_ID="your_company_id"N’oubliez pas d’ajouter .env à votre .gitignore pour éviter de committer
accidentellement votre clé API.
Initialisation du SDK
Créez une instance du SDK dans un fichier dédié pour une meilleure organisation de votre code :
import { MonSMSPRO } from "@monsmspro/sdk";
export const sms = new MonSMSPRO({
apiKey: process.env["MONSMS_API_KEY"] ?? "",
companyId: process.env["MONSMS_COMPANY_ID"] ?? "",
});Le SDK utilise fetch natif et n’a aucune dépendance externe. Pour Node.js
< 18, vous pouvez fournir une implémentation fetch personnalisée via
l’option fetchFn.
Le companyId fourni lors de l’initialisation est automatiquement injecté
dans tous les appels liés à l’entreprise (contacts, groupes, campagnes,
sender, etc.). Vous n’avez pas besoin de le passer manuellement à chaque
appel de méthode.
Bonnes pratiques
- Sécurité : Utilisez toujours des variables d’environnement pour la clé API
- Organisation : Centralisez l’instance du SDK dans un fichier dédié
- TypeScript : Le SDK est entièrement typé pour une meilleure expérience de développement
- Réutilisation : Importez l’instance
smslà où vous en avez besoin
Exemple d’utilisation
import { sms } from "./libs/sms";
// Envoyer un OTP
async function sendOTP() {
const response = await sms.otp.get({
phoneNumber: "0701020304",
});
if (response.success) {
console.log("OTP envoyé, token:", response.data?.token);
} else {
console.error("Erreur:", response.error);
}
}
// Créer un contact
async function createContact() {
const response = await sms.contact.createSingle({
phone: "0701020304",
name: "John Doe",
});
if (response.success) {
console.log("Contact créé:", response.data);
}
}
// Envoyer une campagne SMS
async function sendCampaign() {
const response = await sms.campaign.create({
text: "Bonjour {name}, votre commande est prête !",
senderId: "MonShop",
contacts: ["contact_id_1", "contact_id_2"],
});
if (response.success) {
console.log("Campagne créée:", response.data);
}
}Format de réponse
Toutes les méthodes retournent un objet ApiResponse<T> :
interface ApiResponse<T> {
success: boolean; // Indique si la requête a réussi
data?: T; // Les données retournées
error?: string; // Message d'erreur en cas d'échec
isZodError?: boolean; // Erreur de validation
}Modules disponibles
| Module | Description |
|---|---|
sms.auth | Authentification et vérification API |
sms.otp | Envoi et vérification OTP |
sms.user | Gestion des utilisateurs |
sms.company | Gestion des entreprises |
sms.campaign | Envoi de campagnes SMS |
sms.contact | Gestion des contacts |
sms.group | Gestion des groupes de contacts |
sms.sender | Gestion des Sender IDs |
sms.senderTransfer | Transfert de Sender IDs |
sms.transaction | Transactions et paiements |
sms.offer | Offres de crédits |
sms.device | Gestion des appareils |
sms.ai | Optimisation de messages par IA |
sms.challenges | Challenges (gamification) |
sms.dailyTasks | Tâches quotidiennes (gamification) |
sms.follower | Le Rezo (abonnés) |
Support des frameworks
Notre SDK est compatible avec :
- Node.js : Applications backend et scripts
- Next.js : Applications full-stack
- React : Applications frontend (côté serveur uniquement)
- Express : Applications API
- NestJS : Applications enterprise
- TypeScript : Support natif des types
Prochaines étapes
Explorez les guides détaillés pour chaque module :