Project

General

Profile

Dissocier appel externe/interne

Added by Séb Séb over 2 years ago

Bonjour à tous,

Je recherche une façon de procéder afin de dissocier les appels Externe/Interne pour l'utilisation de groupe.

Par exemple, lors d'un appel externe (01XXXXXX00) si l'utilisateur ne répond pas je bascule sur un groupe au bout de X secondes. Par contre sur un appel interne (101) je ne souhaite pas faire cette bascule, Est-ce possible ?

Merci pour votre aide


Replies (19)

RE: Dissocier appel externe/interne - Added by Dominique Da Fonseca over 2 years ago

Bonjour,
pourquoi ne pas simplement utiliser 2 groupes disctincts

RE: Dissocier appel externe/interne - Added by Séb Séb over 2 years ago

Bonjour Dominique,

C'est-à-dire "2 groupes distincts", je ne vois pas comment faire ?

Merci

RE: Dissocier appel externe/interne - Added by guillaume lapouge over 2 years ago

Il faut utiliser des sous routines pour disssocier appels internes et externes.
J'utilise ceci pour renvoyer les appels externes vers le standard sur non réponse et racrocher sur non réponse en interne

Sur l’utilisateur onglet non réponse utiliser une destination personnalisée et mettre : goto(nomroutine,s,1)

Créer un fichier de configuration avec la sous routine

[nomroutine]

;Ligne à ne pas supprimer elle sert à annoncer le contexte du programme
exten => s,1,NoOP(### nomfichier.conf ###)

;Postes utilisateurs
;varXXXX XXX est le SDA et SIP/YYY est le compte SIP de l'utilisateur
;exemple pour rediriger un appel interne vers l’accueil en cas de non réponse
;exten => s,n,Set(ARRAY=SIP/loginsip)

;Salle de reunion bas
exten => s,n,Set(ARRAY=SIP/login)

exten => s,n,NoOP(${var${XIVO_BASE_EXTEN}})
;Le lien avec le téléphone cible dans la base est fait
;Appel du téléphone
exten => s,n,Answer
;Appel du téléphone cible pendant 10 secondes
exten => s,n,Dial(${var${XIVO_BASE_EXTEN}},10

;On téléphone au groupe du standard pendant 30s (le groupe du standard a le numéro 101)
exten => s,n,dial(local/101,30)

Ne pas oublier d'ajouter dans [xivo-extrafeatures.conf

[xivo-extrafeatures]
include = nomroutine

RE: Dissocier appel externe/interne - Added by Dominique Da Fonseca over 2 years ago

tu créé un groupe standard_ext avec un débordement spécifique et un temps de sonnerie spécifique et tu redirige ta SDA dessus
puis un groupe standard_int avec les meme user et un débordement et temps de sonnerie différent ...

EDIT : bon par contre j'ai cru comprendre que c’était dans le cas de groupes, apres il est clair que faire ça pour tous les utilisateurs c'est fastidieux

RE: Dissocier appel externe/interne - Added by Séb Séb over 2 years ago

@ guillaume lapouge

Merci, cependant j'ai pas tous compris...

J'utilise ceci pour renvoyer les appels externes vers le standard sur non réponse et racrocher sur non réponse en interne

Comment gères-tu dans ta routine le fait de raccrocher lors d'un appel interne, cela est automatique ? Configures-tu quelque chose dans Appels entrants > SDA User_X ?

Admettons que j'ai plusieurs SDA :

0100000000 => Standard (SIP/8683s5wn)
0100000001 => User_1 (SIP/8vfj94zq)
0100000002 => User_2 (SIP/u3f45z38)
0100000003 => User_3 (SIP/itjvx6o2)

Exemple : Lors d'un appel sur la SDA des User 1 à 3, si personne ne répond au bout de 10s je bascule l'appel sur le standard pendant 30s.
Est-il possible de mettre plusieurs utilisateurs dans le fichier de configuration "nomroutine" ?

[nomroutine]

;Ligne à ne pas supprimer elle sert à annoncer le contexte du programme
exten => s,1,NoOP(### nomroutine.conf ###)

;User_1 
;exten => s,n,Set(ARRAY=SIP/8vfj94zq)
;User_2
exten => s,n,Set(ARRAY=SIP/u3f45z38)
;User_3
exten => s,n,Set(ARRAY=SIP/itjvx6o2)

exten => s,n,NoOP(${var${XIVO_BASE_EXTEN}})
;Le lien avec le téléphone cible dans la base est fait

;Appel du téléphone 
exten => s,n,Answer
;Appel du téléphone cible pendant 10 secondes
exten => s,n,Dial(${var${XIVO_BASE_EXTEN}},10

;On téléphone au standard pendant 30s
exten => s,n,dial(SIP/8683s5wn,30)


Est-ce que la configuration ci-dessus est correct ?

RE: Dissocier appel externe/interne - Added by Séb Séb over 2 years ago

Re,

Est-il possible de basculer d'un groupe à un autre avec la méthode de Guillaume par exemple si groupe 101 ne répond pas au bout de 30s on bascule sur le groupe 102 pendant 30s ?

;On téléphone au groupe du standard pendant 30s (le groupe du standard a le numéro 101)
exten => s,n,dial(local/101,30)
;On téléphone au groupe du standard pendant 30s (le groupe du standard a le numéro 102)
exten => s,n,dial(local/102,30)

Merci

RE: Dissocier appel externe/interne - Added by Séb Séb over 2 years ago

Le dialplan donné par Guillaume ne fonctionne pas. A quoi correspond le var ?

J'ai aussi l'erreur :

WARNING[22462][C-0000185c]: app_dial.c:2186 dial_exec_full: Dial requires an argument (technology/resource)

RE: Dissocier appel externe/interne - Added by Dominique Da Fonseca over 2 years ago

bonsoir,
j'ai beau éplucher ce dialplan je ne comprends pas comment celui-ci peu différencier des appels externe et internes ?

pour ma part il faut tester la variable XIVO_CALLORIGIN qui prends extern ou intern

RE: Dissocier appel externe/interne - Added by Speederyoyo . over 2 years ago

Salut,

Moi je fais comme ceci, ta cas suivre ma procédure :)

Bye

RE: Dissocier appel externe/interne - Added by Phil A over 2 years ago

Bonsoir,

Je déterre ce post ;-) et oui je cherche également à dissocier les appels internes et externes... l’idée est de pouvoir faire un débordement vers une société extérieure pour les appels externes arrivant sur certains utilisateurs ou groupes en excluant les SDA internes mais également quelques SDA externes non déclarées sur Wazo.

Avez-vous reussi avec la sous routine a faire le distinguo ?

Merci

RE: Dissocier appel externe/interne - Added by Sébastien Duthil over 2 years ago

Une sous-routine comme celle-là permet de faire la différence (non-testé):

[user-switch-callorigin]
exten = s,1,NoOp(Special treatment of incoming external calls)
same  =   n,Goto(${XIVO_CALLORIGIN})
same  =   n(intern),NoOp(This is an internal call)
same  =   n,Return
same  =   n(extern),NoOp(This is an external call)
same  =   n,Return

RE: Dissocier appel externe/interne - Added by Phil A over 2 years ago

Merci pour l'aide j'y vois un peu plus clair mais j'ai encore quelques difficultés en effet les appels en provenance de l’extérieur sont identifiés et renvoyés vers la SDA callcenter cependant si un utilisateur utilise le numéro long (SDA) pour faire un appel vers un autre utilisateur ce dernier passe dans la boucle externe ce qui est normal mais est-il possible de faire un appel a un fichier de configuration contenant la liste des SDA a considérer comme interne ou exclure du renvoi ? Est-il également possible de faire en sorte que les appels internes n'execute pas de commande (le telephone sonne comme si aucun parametre de renvoi n'était actif).

[renvoi_callcenter]
exten = s,1,NoOp(Special treatment of incoming external calls)
same = n,Goto(${XIVO_CALLORIGIN})
same = n(intern),NoOp()
same = n,Return
same = n(extern),Goto(default,002xxxxxxxx,1)
same = n,Return

Merci,

RE: Dissocier appel externe/interne - Added by Sébastien Duthil over 2 years ago

Phil A wrote:

est-il possible de faire un appel a un fichier de configuration contenant la liste des SDA a considérer comme interne ou exclure du renvoi ?

Quelque chose comme ça, à mettre dans le bloc extern:

same  =   n,GotoIf($[${XIVO_DSTNUM} = 0123456789]?intern:)

Si tu veux d'autres fonctionnalités, je te conseille vivement d'en apprendre plus sur le dialplan, ça te permettra de faire tout ce que tu veux avec les appels: voir le Asterisk Book, notamment les chapitres 2 et 3

Est-il également possible de faire en sorte que les appels internes n'execute pas de commande (le telephone sonne comme si aucun parametre de renvoi n'était actif).

C'est ce que ces lignes-là font, non?

same  =   n(intern),NoOp()
same  =   n,Return

RE: Dissocier appel externe/interne - Added by Phil A over 2 years ago

En effet merci pour le retour voici donc le résultat qui fonctionne:

[renvoi_callcenter]
exten = s,1,NoOp(Special treatment of incoming external calls)
same = n,Goto(${XIVO_CALLORIGIN})
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 02xxxxxxxx]?intern:)
same = n(extern),Goto(default,06xxxxxxxx,1)
same = n,Return
same = n(intern),NoOp()
same = n,Return

Cependant est-il possible de lister les SDA ou faire un appel a un fichier pour les lignes que je ne souhaite pas renvoyer vers le callcenter ? Par exemple notre flotte de mobile etc...

Merci

RE: Dissocier appel externe/interne - Added by Phil A over 2 years ago

Bon finalement j'ai quand même un probleme.... en effet si je telephone avec une SDA externe mon appel est bien transféré vers le numero de renvoi cependant je ne peux converser du coup j'ai fait ce test:

Appel exterieur ---> Non réponse ---> Renvoi vers numéro interne - le téléphone sonne et la conversation est possible

Appel exterieur ---> Non réponse ---> Renvoi vers SDA correspondant au numero interne utilisé juste avant - le téléphone sonne mais pas de conversation si je raccroche l'autre telephone passe également bien en fin de conversation.

Je rencontre bien evidemment le même problème avec un renvoi sur une SDA extérieure mobile....

J'ai essayé d'utiliser le Answer pour decrocher le canal avant renvoi comme vu dans ce forum mais pas mieux auriez-vous une idée

Merci

Voici le fichier de configuration:

[renvoi_callcenter]
exten = s,1,NoOp(Special treatment of incoming external calls)
same = n,Goto(${XIVO_CALLORIGIN})
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 028xxxxxxx]?intern:)
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 029xxxxxxx]?intern:)
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 025xxxxxxx]?intern:)
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 023xxxxxxx]?intern:)
same = n(extern),Goto(default,00211xxxxxx,1)
same = n,Return
same = n(intern),NoOp()
same = n,Return

RE: Dissocier appel externe/interne - Added by Dominique Da Fonseca over 2 years ago

j'ai déjà été confronté plusieurs fois a ce soucis, si le canal a pas été décroché le son n'est pas transmis (et ça le fait avec 98% des trunks sip que j'ai utilisé) il faut intercaler un playback avec un fichier son (pour ma part j'ai un fichier blanc d'1s) avant de renvoyer l'appel (juste avant le goto) et ça marche.

RE: Dissocier appel externe/interne - Added by Phil A over 2 years ago

GENIAL !!! un grand merci a toi j'ai donc créé un fichier son blanc d'un seconde comme toi uploaé dans le dossier que j'ai créé nommé "tools" et j'ai enfin une configuration qui fonctionne et la voici:

[renvoi_callcenter]
exten = s,1,NoOp(Special treatment of incoming external calls)
same = n,Set(GV_DIRECTORY_SOUNDS=/var/lib/xivo/sounds/tools)
same = n,Goto(${XIVO_CALLORIGIN})
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 02xxxxxxxx]?intern:)
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 02xxxxxxxx]?intern:)
same = n(extern),Playback(${GV_DIRECTORY_SOUNDS}/blanc)
same = n(extern),Goto(default,006xxxxxxxx,1)
same = n,Return
same = n(intern),NoOp()
same = n,Return

Le seul truc que je trouve dommage est la creation d'une ligne par SDA que je veux considerer comme interne (au total 80...)

Encore merci !

RE: Dissocier appel externe/interne - Added by Sébastien Duthil over 2 years ago

Deux remarques:
  • il ne faut qu'un seul label n(extern), les autres seront n tout seul
  • pour automatiser la liste de SDA internes, il existe une application Asterisk System qui permet de rouler un script

RE: Dissocier appel externe/interne - Added by Sébastien Le Moal over 2 years ago

et avec un peu d'optimisation :p

[renvoi_callcenter]
exten = s,1,NoOp(Special treatment of incoming external calls)
same = n,Set(GV_DIRECTORY_SOUNDS=/var/lib/xivo/sounds/tools)
same = n,Goto(${XIVO_CALLORIGIN})
same = n(extern),GotoIf($[${XIVO_SRCNUM} = 02xxxxxxxx]?intern:)
same = n,Goto(default,006xxxxxxxx,1)
same = n(intern),Return
    (1-19/19)