Asterisk – Conférences

Les conférences téléphoniques peuvent être utiles pour réaliser des appels à plus de deux personnes.

La mise en place est très simple, et l’utilisation l’est tout autant.

Voyons ensemble comment Asterisk permet la réalisation de conférences téléphoniques.

 

1) Fonctionnement

 

Les conférences téléphoniques fonctionnent par salle.

Quand un utilisateur veut rejoindre une conférence, il appelle le numéro de la salle, afin d’y entrer.

Tous les utilisateurs ayant fait de même se retrouveront ensemble dans ladite salle.

Les utilisateurs peuvent alors dialoguer, quitter et rejoindre la salle à leur convenance, etc…

 

Anciennement, le module qui gérait les conférences dans Asterisk s’appelait MeetMe. Aujourd’hui, il est deprecated et ConfBridge a prit le relais.

Nous verrons les deux dans cet article, même si il est recommandé d’utiliser ConfBridge. Néanmoins, je vous recommande de lire la partie sur MeetMe dans tous les cas, afin de profiter des explications.

 

2) MeetMe

 

Installation

MeetMe a besoin de DAHDI pour fonctionner.

 

Si vous ne l’avez pas déjà installé, je vous renvoie à l’article traitant de l’installation d’Asterisk.

 

Quant à MeetMe, il est à activer (si ce n’est pas déjà fait) dans Asterisk.

Il faut pour cela aller dans Menuselect.

cd /usr/src/asterisk/asterisk-12.0.0/
make menuselect

 

Asterisk menuselect Meetme

 

Si et seulement si vous avez eu à activer MeetMe, il vous faut refaire la compilation et l’installation d’Asterisk :

make
make install

 

Pour ce qui est de la configuration de MeetMe, elle est très simple.

 

Les fichiers qui entrent en jeux ici sont meetme.conf et extensions.conf.

 

Configuration

Dans le fichier meetme.conf, la configuration est la suivante :

[rooms]
conf => N° salle, MDP, MDP admin

 

Le numéro de salle peut être au choix :

  • Le numéro utilisé pour entrer dans la salle
  • Un numéro arbitraire

En effet, le numéro à composer pour entrer dans la salle sera défini dans le DialPlan.

La bonne pratique veut que l’on utilise le même numéro dans extensions.conf que dans meetme.conf.

 

Nous allons créer trois salles :

  • 910 : une salle ouverte
  • 920 : une salle avec un mot de passe
  • 930 : une salle avec un mot de passe et un mot de passe administrateur

 

La configuration sera alors la suivante :

[rooms]
conf => 910
conf => 920,123
conf => 930,123,9876  

 

Dans extensions.conf, il faudra ajouter la partie suivante :

exten => 910,1,MeetMe(910)
exten => 920,1,MeetMe(920)
exten => 930,1,MeetMe(930)

 

Pour que les salles de conférence soient accessibles par tout le monde, le mieux est de créer un contexte global, qui sera inclus dans les autres contextes.

Comme ceci :

[global]
exten => 910,1,MeetMe(910)
exten => 920,1,MeetMe(920)
exten => 930,1,MeetMe(930)

[dept_1]
include => global
[dept_2]
include => global

 

Il est possible d’ajouter des options pour l’accès aux conférences.

Voici certaines d’entre elles :

  • s : permet d’accéder au menu de la conférence avec la touche « * » (mode mute, augmenter / réduire volume, etc…)
  • M : permet de jouer une musique d’attente quand l’utilisateur est seul dans la conférence
  • c : permet d’annoncer le nombre de participant actuel quand l’utilisateur rejoint la conférence
  • a : rend l’utilisateur administrateur de la conférence

 

Au moment de rejoindre la conférence, si l’utilisateur est administrateur, et qu’un mot de passe admin a été configuré, l’utilisateur devra entrer ce dernier.

Un fois dans la conférence, l’utilisateur aura accès à des options avancées à l’aide du menu.

Il est donc indispensable que le menu soit activé (option « »).

 

Ces options sont à configurer dans extensions.conf.

 

Nous pouvons par exemple utiliser la configuration suivante :

[global]
exten => 910,1,MeetMe(910,cMs)
exten => 920,1,MeetMe(920,cMS)
exten => 930,1,MeetMe(930,cMs)

[dept_1]
include => global
exten => 930,1,MeetMe(930,acMs)

[dept_2]
include => global

 

De cette manière, nous aurons une salle de conférence 910, qui sera publique, avec les options suivantes :

  • Menu basique accessible
  • Musique d’attente lors-ce que l’utilisateur est tout seul
  • Annonce du nombre de participant

Nous aurons ensuite une salle 920, pareille que la salle 910 mais avec un mot de passe.

 

Quant à la salle 930, les utilisateurs du contexte dept_1 y accèdent en mode admin, alors que les utilisateurs du contexte dept_2 y accèdent en mode utilisateur.

Par conséquent, ils ne fourniront pas le même mot de passe à l’entrée.

 

Par ailleurs, si un utilisateur accède à une conférence en mode admin, et que celle-ci n’a pas de mot de passe admin de configuré, l’utilisateur devra fournir le mot de passe classique.

 

Si vous avez gardé un range pour les numéros spéciaux dans la numérotation de vos départements, vous pouvez fournir une à plusieurs salles de conférence spécifiques à chaque département.

Par exemple en réservant les 10 derniers numéros :

Dept_1 :

  • Numéro 190 : salle 190, sans MDP
  • Numéro 191 : salle 191, avec MDP

Dept_2 :

  • Numéro 290 : salle 290, sans MDP
  • Numéro 291 : salle 291, avec MDP

 

3) Confbridge

 

La configuration de ConfBridge repose sur deux fichiers :

  • extensions.conf
  • confbridge.conf

 

Voici un exemple de configuration pour confbridge.conf

[User_NoAuth]
type=user
admin=no
music_on_hold_when_empty=yes
announce_user_count=yes

[User_Auth]
type=user
admin=no
music_on_hold_when_empty=yes
announce_user_count=yes
pin=1234

[User_Admin]
type=user
admin=yes
music_on_hold_when_empty=yes
announce_user_count=yes
pin=5678

[ConfRoom_1]
type=bridge
max_members=10

[ConfRoom_2]
type=bridge
max_members=100

 

Nous retrouvons la définition de trois profils d’utilisateurs.

Le premier permet d’entrer dans une salle de conférence sans authentification, le deuxième nécessite d’entrer un mot de passe et le troisième permet d’entrer en tant qu’admin.

Dans les trois cas, une musique d’attente est jouée si la salle est vide. De plus, le nombre d’utilisateurs présents dans la salle est annoncé lors de la connexion.

 

Ensuite, deux salles sont définies. L’une peut accueillir 10 utilisateurs et l’autre 100.

 

Voici à présent en exemple de configuration pour le fichier extensions.conf

exten => 900,1,ConfBridge(Room_1,ConfRoom_1,User_NoAuth)
exten => 901,1,ConfBridge(Room_1,ConfRoom_1,User_Admin)

exten => 903,1,ConfBridge(Room_2,ConfRoom_2,User_Auth)
exten => 904,1,ConfBridge(Room_2,ConfRoom_2,User_Admin)

 

Les paramètres de Confbridge en parenthèse fonctionnent comme suit :

1er paramètre : nom de la salle. Ne fait pas référence au contenu de Confbridge.conf.

2e paramètre : salle à rejoindre lors ce que l’on compose le numéro

3e paramètre : profil d’utilisateur

 

Ainsi, si quelqu’un compose le 900, il pourra entrer dans la salle ConfRoom1 avec le profil User_NoAuth.

Si quelqu’un compose le 903, il pourra entrer dans la salle ConfRoom2 avec le profil User_Auth (un code pin lui sera alors demandé).

 

 

Tagués avec : ,
Publié dans Fonctionnalités
7 commentaires pour “Asterisk – Conférences
  1. babar dit :

    Bonsoir,

    Très bon article ! Sauriez-vous répondre à ma question ?

    Comment créer des Room dynamiquement ?

    • Valentin Weber dit :

      Bonjour,

      A ma connaissance cela n’est pas possible.

      • babar dit :

        Je vous expose mon cas ou peut être qu’effectivement je n’ai pas besoin de Room Dynamique. Peut être sauriez-vous m’aider. Voici le cas en question:

        J’ai une ligne SIP chez ovh, un serveur Asterisk d’installé sur lequel un trunk dans mon sip.conf que j’ai nommé ‘vers-ovh’ dans lequel j’ai déclaré le context ‘depuis-ovh’. (J’ai suivis un des tutos facilement trouvable sur le net.)

        J’ai créé une plateforme externe sur un autre serveur avec une api rest et totalement utilisable. Je peux y ajouter des utilisateurs avec leur numéro de téléphone fixe ainsi que des informations les concernant. Un utilisateur dispose d’un code à trois chiffres et je peux également voir les stats de ses appels. Il dispose également d’un fichier son personnalisé.

        J’aimerais réussir à connecter cette plateforme avec le serveur asterisk.

        Par exemple une personne qui appel le numéro de la ligne sip et tombe sur le serveur asterisk. Dois pouvoir composer un numéro à trois chiffres (qui correspond à un utilisateur de ma plateforme), qui sera vérifié via mon API, afin d’être mis en relation avec l’utilisateur.

        Je compte me servir de l’AGI pour communiquer avec ma plateforme via mon API perso.

        Si l’utilisateur souhaite quitter l’appel mais composer un autre numéro, j’aimerais par exemple qu’il puisse taper sur # pour mettre fin à l’appel et ensuite à ce moment qu’il ai la possibilité de composer cet autre numéro ou bien mettre complètement fin à l’appel. De plus, durant la phase de composition j’aimerais mettre un son d’attente en fonction de chaque utilisateur. Ces sons sont envoyé par la plateforme sur le serveur où se trouve Asterisk. Je sais comment les récupérer mais pas comment les jouer dans une telle configuration.

        Je sais qu’une telle chose est partiellement possible avec la commande Transfer mais premièrement je ne sais pas si cette commande bloque toute la ligne ou non. Et deuxième même un background pour jouer le son sera joué avant le Transfer et pas durant le Transfer.

        Et enfin, ma plateforme gère des statistiques afin d’effectuer des calculs avancés sur ceux-ci. J’aimerais donc pouvoir notifier mon API de chaque début d’appel et de fin d’appel.

        C’est pour cela que je comptais utiliser des Room Dynamique afin de mettre un son à l’intérieur puis de programmer une touche de retour et comme je peux avoir autant de Room que d’utilisateur, finalement je pensais que c’était approprié.

        Je sais qu’il existe un moyen puisque je connais une personne travaillant sur une telle configuration mais ne l’a pas créée elle-même donc n’est pas capable de m’aider, malheureusement.

        Merci d’avoir pris le temps de lire ceci. Et en espérant que serez en mesure de m’éclairer sur ces difficultés que je rencontre.

        • babar dit :

          Bonjour,
          J’ai trouvé la solution à mon problème et je partage l’information avec vous 🙂

          Pour ceux qui se poseraient la question des Room dynamiques avec MeetMe pour Asterisk.

          exten => 1337, MeetMe(42, d)

          1337 est l’extension exemple
          42 est un numéro de Room qui sera créée dynamiquement.

          Voir la documentation MeetMe.
          http://www.voip-info.org/wiki/view/Asterisk+cmd+MeetMe

          ‘d’ — dynamically add conference
          ‘D’ — dynamically add conference, prompting for a PIN
          At the pin prompt, if the user does NOT want a pin assigned to the conference, they should hit the # key.

          En ce qui concerne les accès API j’utilise AGI depuis extensions.conf
          Et dans les scripts lancés j’utilise PAGI et PAMI

          http://marcelog.github.io/

          • Valentin Weber dit :

            Bonjour,
            Merci pour les informations sur votre problématique. C’est bon de savoir qu’il est possible de créer des salles dynamiquement avec MeetMe. J’en prends bonne note.

  2. monik dit :

    Merci pour ses informations ça m’a beaucoup aidée, avec une nouvelle option pour faire la conférence Confbridge. Que Dieu soit avec vous.

  3. Dieng dit :

    Merci Beaucoup pour ces explications qui m’ont aidé à comprendre cette fonctionnalité d’Asterisk : le ConfBridge

Répondre à babar Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.