voip-click-to-call
v1.0.0
Published
Outil npm pour générer un système click-to-call VoIP compatible Asterisk et FreeSWITCH
Maintainers
Readme
voip-click-to-call
Outil npm pour générer un système click-to-call VoIP compatible avec Asterisk et FreeSWITCH.
Installation
npm install -g voip-click-to-callOu en local dans votre projet :
npm install voip-click-to-callUtilisation
1. Créer un fichier de configuration
Créez un fichier voip-config.yaml dans votre projet avec la configuration de votre serveur VoIP :
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:30012. Générer le frontend et backend
voip-click-to-call generateOu avec des options :
voip-click-to-call generate --framework react --config voip-config.yamlLe générateur vous demandera :
- Le framework frontend (React, Vue.js, ou Vanilla JS)
- Le répertoire de sortie
3. Installer les dépendances
cd voip-click-to-call
cd backend && npm install
cd ../frontend && npm install4. Démarrer les serveurs
Backend :
cd backend
npm startFrontend :
cd frontend
npm startFonctionnalité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 :
- Détection par regex : Analyse automatique du contenu texte de la page
- Attributs HTML : Utilisation de l'attribut
data-phonesur les éléments HTML
Exemple avec attribut :
<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
voip:
type: asterisk
host: localhost
port: 5038
username: admin
password: secret
protocol: amiAsterisk ARI
voip:
type: asterisk
host: localhost
port: 8088
username: asterisk
password: asterisk
protocol: ariFreeSWITCH ESL
voip:
type: freeswitch
host: localhost
port: 8021
password: ClueCon
protocol: eslAPI
POST /api/call
Initie un appel téléphonique.
Body :
{
"phoneNumber": "0123456789",
"fromNumber": "1000" // optionnel
}Response :
{
"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 :
{
"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 :
{
"type": "call_initiated",
"phoneNumber": "0123456789",
"fromNumber": "1000",
"callId": "1234567890.123",
"timestamp": "2024-01-01T12:00:00.000Z"
}{
"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.jsonPublication sur npm
Pour publier ce package sur npm :
- Créez un compte sur npmjs.com
- Connectez-vous via la CLI :
npm login - Vérifiez que le nom du package est disponible
- 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
