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

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

NameLanguageWebsiteProtocols
AdhearsionRubyhttps://www.adhearsion.com/AMI/FastAGI
Asterisk-JavaJavahttps://blogs.reucon.com/asterisk-java/AMI/FastAGI
PAGIPHPhttps://github.com/marcelog/PAGIAGI
PHPAGIPHPhttp://phpagi.sourceforge.net/AGI
PanoramiskPython+AsyncIOhttps://github.com/gawel/panoramiskAMI/FastAGI
Pyst2Pythonhttps://github.com/rdegges/pyst2AMI/AGI
StarPyPython+Twistedhttps://github.com/asterisk/starpyAMI/FastAGI
NanoagiC++https://sourceforge.net/projects/nanoagi/AGI
AsterNET.NET (C#/VB.net)https://github.com/skrusty/AsterNETAMI/FastAGI
Ding-dongnode.jshttps://www.npmjs.com/package/ding-dongAGI

Source

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.

3. Backups d’Asterisk

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

Solutions HA

Source de l’image

Source : https://www.freepbx.org/high-availability/

6. Text-to-speech / Speech recognition