Asterisk Avancé
Voici une dernnière étape qui propose de s’interfacer avec des bases de données et d’exploiter l’API d’Asterisk, de procéder aux sauvegardes et à la mise à jour d’Asterisk. Enfin, le propos s’intéresse au “Text-to-speech”.
The Definitive Guide, 4th Edition :
- -16. Relational Database Integration
- -18. External Services
- -20. Asterisk Manager Interface (AMI)
- -21. Asterisk Gateway Interface (AGI)
- -22. Clustering
- -24. System Monitoring and Logging
- -26. Security
1. Base de données
- The Definitive Guide, 4th Edition : 16. Relational Database Integration, pp. 417-478.
- Getting Asterisk Connected to MySQL via ODBC
- Realtime Database Configuration
- SIP Realtime MySQL table structure
2. AGI / AMI
- AMI ARI AGI
- Interfaces
- Bases de données et connectivité “Realtime”
- AGI : sorte de CGI Apache pour Asterisk : permet de s’interfacer entre le dialplan Asterisk et un programme externe.
- AMI : permet de gérer Asterisk dans un modèle client/serveur : contrôler le PBX, placer des appels, vérifier des mailbox, surveiller des channels et des queues en tant que commandes Asterisk.
- ARI : asynchronous API REST permettant de créer sa propre application voicemail.
2.1. Frameworks et librairies AGI
Name | Language | Website | Protocols |
---|---|---|---|
Adhearsion | Ruby | https://www.adhearsion.com/ | AMI/FastAGI |
Asterisk-Java | Java | https://blogs.reucon.com/asterisk-java/ | AMI/FastAGI |
PAGI | PHP | https://github.com/marcelog/PAGI | AGI |
PHPAGI | PHP | http://phpagi.sourceforge.net/ | AGI |
Panoramisk | Python+AsyncIO | https://github.com/gawel/panoramisk | AMI/FastAGI |
Pyst2 | Python | https://github.com/rdegges/pyst2 | AMI/AGI |
StarPy | Python+Twisted | https://github.com/asterisk/starpy | AMI/FastAGI |
Nanoagi | C++ | https://sourceforge.net/projects/nanoagi/ | AGI |
AsterNET | .NET (C#/VB.net) | https://github.com/skrusty/AsterNET | AMI/FastAGI |
Ding-dong | node.js | https://www.npmjs.com/package/ding-dong | AGI |
2.2. Exemple AGI en bash
The Definitive Guide, 4th Edition, pages 583-584.
Création d’un fichier /var/lib/asterisk/agi-bin/hello-world.sh
#!/bin/bash
# Consume all variables sent by Asterisk
while read VAR && [ -n ${VAR} ] ; do : ; done
# Answer the call.
echo "ANSWER"
read RESPONSE
# Say the letters of "Hello World"
echo 'SAY ALPHA "Hello World" ""'
read RESPONSE
exit 0
Attribuer des permissions d’exécution sur le script :
chmod +x /var/lib/asterisk/agi-bin/hello-world.sh
Ajout d’un extension qui appelle le script dans dialplan (extensions.conf
) :
include=>hello-world
[hello-world]
exten => 500,1,AGI(hello-world.sh)
Dans la console d’Asterisk :
dialplan reload
2.3. Exemple AGI en node.js
2.4. ARI
ARI : asynchronous API REST permettant de créer sa propre application voicemail.
- https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=29395573
- https://github.com/asterisk/ari-examples
3. Backups d’Asterisk
- Asterisk Backups
- Par exemple : Asterisk Backup Shell Script
Cibles :
- Fichiers compilés et installés
- Dump des bases de données
- Fichiers de logs
En format d’archive compressée avec une planification Cron
4. Mise-à-jour d’Asterisk
Re-compilation des sources.
5. Haute Disponibilté / Clustering
- Système
- Logiciel Asterisk
- Bases de données
- Etat des périphériques
- Lignes
5.1. The Definitive Guide
The Definitive Guide, 4th Edition :
- Asterisk and Database Integration p. 606
- Single Database p. 606
- Replicated Databases p. 608
- Asterisk and Distributed Device States p. 609
- Distributing Device States over a LAN p. 610
- Distributing Device States over a WAN p. 611
- Multiple Queues, Multiple Sites p. 613
voir Asterisk Cluster on CentOS
5.2. Solutions HA
Source : https://www.freepbx.org/high-availability/
6. Text-to-speech / Speech recognition
- Text to speech : comment utiliser festival, eSpeak et GoogleTTS avec asterisk, solution de téléphonie open source
- GoogleTTS text to speech script for asterisk
- Text translation using Google Translate API for Asterisk
- Speech recognition script for Asterisk that uses Cloud Speech API by Google
- Speech synthesis using Microsoft Translator API for Asterisk
- Asterisk Flite text to speech module
- Asterisk e-Speak text to speech module