Bonjour à tous !

J'ai mis en place un solution Asterisk compilée avec les sources pour faire des conférences il y a plus d'un an pour un organisme publique. Je n'ai pas remis la tête dans la configuration Asterisk car tout fonctionne bien depuis le temps et j'ai pas mal perdu de mes compétences...

En effet j'ai un nouveau besoin et je dois changer mon dialplan et depuis le temps j'ai perdu mes réflexes alors je viens vers vous pour des conseils.

L'infrastructure sortante dans un premier temps :
  • 2 lignes SIP OVH avec illimités sur les portables (non encore implémentée)
  • 1 Trunk chez un provider qui lui fait payer les portables en hors forfait...
  • Les users OVH sont configurés dans sip.conf



Le but en pseudo-dialplan :
  1. Le numéro commence par 06 on essaye de passer par une ligne des deux lignes OVH sinon on passe par le trunk
  2. Le numéro commence par 06 et aucune des lignes SIP OVH sont libres on sort par le trunk
  3. Le numéro commence par 06 et la première ligne SIP est libre on sors par la sinon on essaye la deuxième
  4. Le numéro commence par 06 et la deuxième ligne SIP est libre on sors par la


Le code Asterisk du dialplan que j'ai adapté:
Code:
[appels-sortants-anonymes]
; on set l'anonymat
exten => _9.,1,Set(CALLERID(all)="Anonymous" <Anonymous>)

; si les deux lignes SIP OVH sont occupées on va vers le Dial TRUNK
exten => _9.,2,GotoIf($["${DEVICE_STATE(forfait-ovh-1)}"="BUSY" & "${DEVICE_STATE(forfait-ovh-2)}"="BUSY"]?7);

; Si les deux lignes SIP sont pas occupées une des deux est libre alors on regarde si "forfait-ovh-1" est busy on utilisera alors "forfait-ovh-2" Dial avec sur numéro d'extension 5
exten => _9.,3,GotoIf($["${DEVICE_STATE(forfait-ovh-1)}"="BUSY"]?5);

; Si "forfait-ovh-2" est busy on utilisera alors "forfait-ovh-1" Dial avec numéro d'extension 6
exten => _9.,4,GotoIf($["${DEVICE_STATE(forfait-ovh-2)}"="BUSY"]?6);

exten => _9.,5,Dial(SIP/forfait-ovh-2/${EXTEN:1},,tTxk);
exten => _9.,6,Dial(SIP/forfait-ovh-1/${EXTEN:1},,tTxk);

; Si les deux lignes OVH sont occupées on sort par le Trunk classique 
exten => _9.,7,Dial(SIP/trunk-provider-out/${EXTEN:1},,tTxk) ; quand on compose un numero qui commence par 9, on utilise le trunk SIP "trunk-provider-out" du user et on passe le numero au peer en ôtant le premier digit.
exten => _9.,n,Hangup();
Voilà, dans un premier temps j'aurai apprécié qu'on valide mon dialplan sortant avec les spécificités des2 comptes SIP + Trunk, ou que l'on me dirige vers une manière de faire plus professionnelle ou juste plus logique/simple.

Et j'ai tout de même une deuxième question; comment détecter que le numéro appelé commence par 06 ? ça doit pas être bien compliqué (je fais des choses similaires dans mon dialplan mais pas totalement reportable facilement) mais je cherche encore alors un petit coup de code/main serait pas de refus si c'est pas abusé ! En plus ça risque de me faire complètement revoir mon Dialplan de sortie pour implémenter ce "check 06"...

Merci à tous de m'avoir lu, j'espère que je n'abuse pas trop de votre temps/gentilesse car j'avoue que je n'ai pas cherché très longtemps (2 heures) mais je sèche...

Je reviens ajouter des infos/code sur ce post dès que j'avance sur ce sujet (je désespère pas de trouver mais je bosse "offline" j'ai pas trop le droit de me pointer avec un fichier tout pourri sur site... ).

Bon dialplan à tous ! Cordialement !