UNPKG

voip-click-to-call

Version:

Outil npm pour générer un système click-to-call VoIP compatible Asterisk et FreeSWITCH

246 lines (184 loc) 4.35 kB
# voip-click-to-call Outil npm pour générer un système click-to-call VoIP compatible avec Asterisk et FreeSWITCH. ## Installation ```bash npm install -g voip-click-to-call ``` Ou en local dans votre projet : ```bash npm install voip-click-to-call ``` ## Utilisation ### 1. Créer un fichier de configuration Créez un fichier `voip-config.yaml` dans votre projet avec la configuration de votre serveur VoIP : ```yaml voip: type: asterisk # ou 'freeswitch' host: localhost port: 5038 username: admin password: secret protocol: ami # 'ami', 'ari' pour Asterisk, 'esl' pour FreeSWITCH backend: port: 3000 websocketPort: 3001 frontend: apiUrl: http://localhost:3000 wsUrl: ws://localhost:3001 ``` ### 2. Générer le frontend et backend ```bash voip-click-to-call generate ``` Ou avec des options : ```bash voip-click-to-call generate --framework react --config voip-config.yaml ``` Le générateur vous demandera : - Le framework frontend (React, Vue.js, ou Vanilla JS) - Le répertoire de sortie ### 3. Installer les dépendances ```bash cd voip-click-to-call cd backend && npm install cd ../frontend && npm install ``` ### 4. Démarrer les serveurs **Backend :** ```bash cd backend npm start ``` **Frontend :** ```bash cd frontend npm start ``` ## Fonctionnalités ### Détection automatique des numéros Le système détecte automatiquement tous les numéros de téléphone sur votre page web et les transforme en liens cliquables. Deux méthodes sont supportées : 1. **Détection par regex** : Analyse automatique du contenu texte de la page 2. **Attributs HTML** : Utilisation de l'attribut `data-phone` sur les éléments HTML Exemple avec attribut : ```html <span data-phone="0123456789">Contactez-nous</span> ``` ### Support des serveurs VoIP - **Asterisk** : Support AMI (Asterisk Manager Interface) et ARI (Asterisk REST Interface) - **FreeSWITCH** : Support ESL (Event Socket Library) ### Frameworks frontend supportés - React - Vue.js - Vanilla JavaScript ## Configuration ### Asterisk AMI ```yaml voip: type: asterisk host: localhost port: 5038 username: admin password: secret protocol: ami ``` ### Asterisk ARI ```yaml voip: type: asterisk host: localhost port: 8088 username: asterisk password: asterisk protocol: ari ``` ### FreeSWITCH ESL ```yaml voip: type: freeswitch host: localhost port: 8021 password: ClueCon protocol: esl ``` ## API ### POST /api/call Initie un appel téléphonique. **Body :** ```json { "phoneNumber": "0123456789", "fromNumber": "1000" // optionnel } ``` **Response :** ```json { "success": true, "message": "Appel initié de 1000 vers 0123456789", "callId": "1234567890.123", "phoneNumber": "0123456789", "fromNumber": "1000" } ``` ### GET /api/health Vérifie l'état du serveur et de la connexion VoIP. **Response :** ```json { "status": "ok", "voipConnected": true } ``` ### GET /api/config Retourne la configuration pour le frontend. ## WebSocket Le serveur WebSocket envoie des événements en temps réel : ```javascript { "type": "call_initiated", "phoneNumber": "0123456789", "fromNumber": "1000", "callId": "1234567890.123", "timestamp": "2024-01-01T12:00:00.000Z" } ``` ```javascript { "type": "call_status", "phoneNumber": "0123456789", "status": "completed", // ou "failed" "timestamp": "2024-01-01T12:00:05.000Z" } ``` ## Développement ### Structure du projet généré ``` voip-click-to-call/ ├── backend/ ├── src/ ├── server.js └── connectors/ ├── asterisk.js └── freeswitch.js ├── voip-config.yaml └── package.json └── frontend/ ├── src/ ├── App.js (ou App.vue, app.js) ├── config.js └── phone-detector.js └── package.json ``` ## Publication sur npm Pour publier ce package sur npm : 1. Créez un compte sur [npmjs.com](https://www.npmjs.com/) 2. Connectez-vous via la CLI : `npm login` 3. Vérifiez que le nom du package est disponible 4. Publiez : `npm publish` Le package inclut automatiquement : - Tous les fichiers dans `src/` - Tous les templates dans `templates/` - Le fichier `config.example.yaml` - Le `README.md` ## Licence MIT