Page 1 sur 3 123 DernièreDernière
Affichage des résultats 1 à 10 sur 24

Discussion: Facilitées d'appels

  1. #1
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0

    Facilitées d'appels

    Bonjour,

    Je suis actuellement étudiant en reseau et télécomunnication à mont de marsan et donc actuellement j'éffectue un stage de 3mois dans une entreprise sur asterisk.
    Connaissant les bases principal du systeme je recherche à me perfectionné un peu plus.

    J'aimerais effectuer des "facilitées d'appel". Je m'explique:
    Je voudrais par exemple que

    -dès que je tape " *21 + numero de poste " mon poste en question se mette en occupe et renvoit les appels vers le numéro choisi.

    -" *22 + numero de poste " Renvoi de l'appel si je ne réponds pas.

    -" *23 + numero de poste " Renvoi de l'appel si je suis déja en communication.

    -" *25 " tout appels rentrant partent directement sur la messagerie.

    -" *27 " renvoi les appels si je suis entrant de consulter ma messagerie.

    -" 5 " Rappel automatique sur occupation.

    -" 8440 " Numéro rapide du 005565723.. par exemple.

    Je pense avoir fais le tour, je vous remercie d'avance pour votre aide qui me sera bien précieuse.

    Cordialement,
    Clepic

  2. #2
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Enfin un bon post avec des bonnes questions.

    --" *22 + numero de poste " Renvoi de l'appel si je ne réponds pas.

    -" *23 + numero de poste " Renvoi de l'appel si je suis déja en communication.

    -" *25 " tout appels rentrant partent directement sur la messagerie.

    -" *27 " renvoi les appels si je suis entrant de consulter ma messagerie.
    En manuel le plus simple c'est d’implémenter une série de données dans la bdd de l'asterisk astdb. Elle se présent comme suit:

    Family/Key=Valeur.

    Imaginons que nous avons une extension 300, chaque fois quand cette extension est appelé nous allons vérifier les données de ces clés et faire une action si nécessaire.(gotoif(DB/KEY/FAMILY)=X) Chaque clé peut prendre soit une valeur de 0 soit la valeur de numéro de renvoie.

    Nous allons définir les clés comme suit:

    300/renvoie_appel=0 OU numéro destination (Renvoie simple)
    300/renvoie_appel_mess=0 OU numéro destination (renvoie sur messagerie)
    300/renvoie_appel_comm=0 OU numéro destination(renvoie en communication)
    Donc il te suffit de créer un script de modification de ces valeurs dans l'astdb avec un menu interactif et de vérifier ces valeurs avant de contacter cette extension. Pour implémenter le renvoi en communication c'est pareil, il suffit de modifier une variable secondaire qui indiquera que tu es en communication pendant que 300 sort. (pas oublier de l’enlever après)

    Pour le renvoie sur occupé c'est la même chose,
    1: Appel arrive sur 300
    2: 300 envoie BUSY
    3: Goto 300-BUSY (ou ${CALLERID}-BUSY
    4: Check DB
    5: Exit

    Il faut que je te présente une méthode alternative pour vérifier si la personne est en ligne, asterisk possède les fonctions de GROUP() et GROUP_COUNT()

    C'est simple chaque fois que 300 appelle tu le place dans une groupe=300 et su tu as un client qui tente de contacter 300 tu peux faire un group_count se qui te rendra la quantité d'appels sortantes de 300.

    -" 8440 " Numéro rapide du 005565723.. par exemple.
    Ça passe par la bdd également.

    -" 5 " Rappel automatique sur occupation.
    Explique plus le scénario.

    Renseigne toi sur les fonctions / applications Gotoif DB Group et Group_count.

  3. #3
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0
    Je vais pas te cacher que j'ai pas tout tout compris dans ta réponse. Donc j'ai fouillé et je suis tombé sur un ancien poste ou tu avais répondu ça :

    Alors voila, imagine que tu es capable de modifier les valeurs de astdb, peu importe par quel moyen, (manager en telnet, script ..)

    Le but est en fonction de données dans l'astdb de forwarder l'appelant.

    Nous devons penser à 3 choses:

    1: Permettre au utilisateurs de modifier leur statut
    2: Répertorier l'ensemble de varialbles pour coder chaque etat
    3: Créer un script utilise pour l'ensemble d'utilisateurs qui route l'appel en fonctionne de leur état.

    Nous allons partir sur l'exemple ultra simple. On imagine que chaque utilisateur à le droit d'activer ou désactiver le renvois vers sa messagerie immédiatement.

    Pour ça il nous fait:
    1: Un mini script qui modifier cette variable pour les utilisateurs
    2: Une variable, avec l'état 0 (messagerie immédiate désactive) et 1 messagerie immédiate activé. Nous allons utiliser une clé simple, une pour chaque utilisateur.

    Le format de clé est le suivant:
    Family/key = VALEUR

    Nous avons utilisateur Toto et Tata, et pour eux les clé seront
    Toto/Messagerie = 0 Ou 1
    Tata/Messagerie = 0 Ou 1
    Je te le conseille de les nommer tous de cette maniere, c'est plus faciler a gérer quand tu as pas mal de clefs, on voit directement la liste plus humainement. (choix perso a toi de voir) Sache que on peur les regrouper par service également du type
    Messagerie/toto =0/1
    Messagerie/tata =0/1

    Nous allons prendre le premier. Les mini scripts que je vais te monter c'est pour asterisk 1.4, asterisk 1.6 à une manière différente de travailler avec les clefs, je te laisse adapter si tu es en 1.6.

    Script pour entrer la variable par utilisateur, nous allons dire a tata et titi les truc suivant:

    Votre préfixe pour activer la messagerie est 501
    Votre préfixe pour désactiver la messagerie est 500

    exten => _50[01],1,Set(DB(${CALLERID(name)}/messagerie)=${EXTEN:2})
    exten => _50[01],2,NoOp(La variable de messagerie est ${EXTEN:2})

    Il faut bien nommer toto et tata dans sip.conf avec le nom correct pour récupérer la variable. callerid=toto <7000> callerid=tata <7001>

    On imagine que la messagerie de toto est désactivé et de tata est activé, les variables sont:
    toto/messagerie=0
    tata/messagerie=1

    Dont avant appeler toto ou tata il nous faut vérifier cette variable.

    extensions.conf

    [bureau]
    exten => 7000,1,GotoIf($[${DB(toto/messagerie)}=1]?2:3)
    exten => 7000,2,Voicemailman()
    exten => 7000,3,Dial(Sip/toto)

    exten => 7001,1,GotoIf($[${DB(tata/messagerie)}=1]?2:3)
    exten => 7001,2,Voicemailman()
    exten => 7001,3,Dial(Sip/tata)

    Note que nous avons vérifié pour chaque utilisateur ses variables, c'est loin d'être parfait si tu as 36 options, le but est de créer un macro qui récupère le nom d'utilisateur de la personne qui est appelé est vérifier ces variables, et router l'appel en fonction de ses choix. Mais ça je te laisse de découvrir, c'est relativement simple.

    Autre chose, ce n'est pas un luxe de créer un menu interactif pour l'utilisateur vocal, avec les confirmation des ses choix.



    Citation:
    - Si l'usager est présent son statut est : Answer (Disponible)
    - Si l'usager est occupé son statut est : Busy (Occupé au téléphone ou réunion, du coup transfert vers boite vocale par exemple ou téléphone portable).
    - Si l'usager est absent de son poste son statut est : NoAnwser (indisponible, donc transfert vers son portable par exemple).
    Pour ton but il te faut pas plus de 3 variables.
    Courage.

    P.S Pour les plus amples informations je te conseille http://astbook.asteriskdocs.org/en/2...-6-SECT-6.html
    J'imagine que c'est ce qu'il faut faire. Je comprends mieu par contre tu dis que si on utilise la version 1.6 d'asterisk le script est different. Pourrais tu m'éclaisir ce point ou me donné un exemple pour cette version ?

    Merci
    Cordialement;

  4. #4
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Bonjour, un vieux post, oui. Pour savoir comment faire fonctionner l'ensemble des applications / fonctions il suffit dans l'asterisk CLI de taper:

    core show application Name
    core show function Name

    Ou name est le nom de la fonctions ou application, pour les voir tous il faut:
    core show applications
    core show functions

    De cette façon tu est a 100% certain d'avoir la bonne syntaxe.

    Teste avec core show application Dial()

    Reaper

  5. #5
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0
    Merci bien, je me plonge dedans et je vous tien au courant des avancées ;

  6. #6
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0
    Bonjour,

    Alors j'ai enfin reussi à envoyer un apel entrant directement sur la messagerie en l'activant ou le désactivant en fesant "901(act) & 900(desactiv)"
    A présent j'aimerais reussir à faire ça :

    -" *21 + numero de poste " mon poste en question se mette en occupe et renvoit les appels vers le numéro choisi.

    -" *22 + numero de poste " Renvoi de l'appel si je ne réponds pas.

    -" *23 + numero de poste " Renvoi de l'appel si je suis déja en communication.

    J'ai fais en fonction de se que tu m'as dit reaper mais je ne comprends pas tout, j'ai bien déclaré "renvoi_appel,renvoi_appel_mess et renvoie_appel_comm"
    Quand je fais un show database voilà ce que ça me donne:
    sdis-laptop*CLI> database show
    /SIP/Registry/patron : 192.168.1.6:5060:3600:patron:sip:patron@192.168.1. 6
    /SIP/Registry/standard : 192.168.1.9:5060:180:standard:sip:standard@192.168 .1.9:5060;transport=udp
    /SIP/Registry/technicien : 192.168.1.7:5060:180:technicien:sip:technicien@192 .168.1.7:5060;transport=udp
    /dundi/secret : rJDqS6TZWgEf2t0PP+p+Rg==;my99ML+CBRyydPYjACQ7OQ==
    /dundi/secretexpiry : 1303810808
    /standard/messagerie : 0
    /standard/renvoi_appel : 0/1
    /standard/renvoi_appel_comm : 0/1
    /standard/renvoi_appel_mess : 0/1
    /technicien/messagerie : 0
    /technicien/renvoi_appel : 0/1
    /technicien/renvoi_appel_comm : 0/1
    /technicien/renvoi_appel_mess : 0/1
    13 results found.
    Je pense que jusqu'a présent je suis bon mais c'est maintenant que je coince.
    Il faut faire des script de quel type ?
    Comment gère ton le statu du poste (ANSWER,BUSY,NO ANSWER) ?
    La gestion GROUP() et GROUP_COUNT() se fais dans extension.conf ?

    300/renvoie_appel=0 OU numéro destination (Renvoie simple)
    300/renvoie_appel_mess=0 OU numéro destination (renvoie sur messagerie)
    300/renvoie_appel_comm=0 OU numéro destination(renvoie en communication)
    Donc il te suffit de créer un script de modification de ces valeurs dans l'astdb avec un menu interactif et de vérifier ces valeurs avant de contacter cette extension. Pour implémenter le renvoi en communication c'est pareil, il suffit de modifier une variable secondaire qui indiquera que tu es en communication pendant que 300 sort. (pas oublier de l’enlever après)

    Pour le renvoie sur occupé c'est la même chose,
    1: Appel arrive sur 300
    2: 300 envoie BUSY
    3: Goto 300-BUSY (ou ${CALLERID}-BUSY
    4: Check DB
    5: Exit

    Il faut que je te présente une méthode alternative pour vérifier si la personne est en ligne, asterisk possède les fonctions de GROUP() et GROUP_COUNT()

    C'est simple chaque fois que 300 appelle tu le place dans une groupe=300 et su tu as un client qui tente de contacter 300 tu peux faire un group_count se qui te rendra la quantité d'appels sortantes de 300.

  7. #7
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    /technicien/renvoi_appel : 0/1
    Salut j'ai mis 0/1 c.a.d 0 Ou 1 pas deux valeurs ni slash en même temps.


    Il faut faire des script de quel type ?
    Les scripts de dialplan sont suffisants largement.


    Comment gère ton le statu du poste (ANSWER,BUSY,NO ANSWER) ?
    Avec le dialplan, exemple:
    exten => 300,1,Dial(Sip/300)
    exten => 300,n,Goto(${EXTEN}-${DIALSTATUS})
    exten => _XXX-BUSY,1, ICI check if la valeur DB Renvoie sur BUSY est 1, si oui renvoie > si non go to messagerie ou autre.

    Il y a des tonnes de façons, meilleures ou pires; moi je ferais un grand script qui en entrée prendra l'utilisateur concerné et testera ensemble des valeurs DB pour l'utilisateur avec Gotoif et DB.
    Ou Dialstatus sera ANSWER ou BUSY ou NOANSWER.
    Ou Exten sera 300

    La gestion GROUP() et GROUP_COUNT() se fais dans extension.conf ?
    Oui, regarde comment les utiliser avec Gotoif.

    core show application GotoIf
    core show function GROUP_COUNT
    core show function GROUP

  8. #8
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0
    Bonjour,

    Voilà ce que j'ai fais mais ça ne marche tourjours pas. Je pense etre sur la bonne voie.
    Je fouille partout mais je trouve rien d'interessant... Donc je tatonne
    Je pense qu'il manque quelque chose pour que ça mette BUSY à 1 dans la BD! Mais faut il faire un " database put technicien BUSY 0 " et " database put technicien BUSY 1 " dans la BD ?

    merci bien.

    [internal]

    include => PICKUP
    include => HINTS

    #exten => 100,Dial(SIP/secretaire)
    #exten => 200,Dial(SIP/patron)
    #exten => 300,Dial(SIP/technicien)
    #exten => 500,Dial(SIP/standard)

    exten => _XXX,1,Dial(SIP/${EXTEN})
    exten => _XXX,2,Goto(_XXX-${DIALSTATUS},1)
    exten => _XXX-BUSY,1,Goto(postes,888,1)
    exten => _XXX-NOANSWER,1,Goto(postes,888,1)
    exten => _XXX-ANSWER,1,Goto(postes,XXX,1)

    [postes]

    exten => 100,Dial(SIP/secretaire)
    exten => 200,Dial(SIP/patron)
    exten => 300,Dial(SIP/technicien)
    exten => 500,Dial(SIP/standard)

    exten => 100,1,Answer()
    exten => 100,2,DIAL(SIP/secretaire,20)
    exten => 100,3,voiceMail(1)
    exten => 100,4,HangUp()

    exten => 200,1,Answer()
    exten => 200,2,DIAL(SIP/patron,20)
    exten => 200,3,voiceMail(2)
    exten => 200,4,HangUp()

    exten => 300,1,Answer()
    exten => 300,2,GotoIf($[${DB(technicien/messagerie)}=1]?5:4)
    exten => 300,3,DIAL(SIP/technicien,20)
    exten => 300,5,voiceMail(3)
    exten => 300,6,HangUp()

    exten => 500,1,Answer()
    exten => 500,2,GotoIf($[${DB(standard/messagerie)}=1]?4:3)
    exten => 500,3,DIAL(SIP/standard,20)
    exten => 500,4,voiceMail(5)
    exten => 500,5,HangUp()


    exten => 888,1,voiceMailMain()

  9. #9
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Utilise Set + DB pour modifier la variable.

  10. #10
    Membre
    Date d'inscription
    avril 2011
    Localisation
    Bordeaux
    Messages
    42
    Downloads
    0
    Uploads
    0
    Oui mais à quel endroit ?
    Comme ça ?

    exten => _XXX,1,Dial(SIP/${EXTEN})
    exten => _XXX,2,Goto(_XXX-${DIALSTATUS},1)
    exten => _XXX-BUSY,1,Set(${CALLERID(name)}/renvoi_appel_comm)=${EXTEN)
    exten => _XXX-NOANSWER,1,Set(${CALLERID(name)}/renvoi_appel_comm)=${EXTEN)
    exten => _XXX-ANSWER,1,GotoSet(${CALLERID(name)}/renvoi_appel_comm)=${EXTEN)


    Je suis bien plus que noyé

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •