AGI Rappel de Rendez Vous

Discussion in 'Général' started by f5exo, Dec 2, 2010.

  1. f5exo

    Joined:
    Nov 15, 2007
    Messages:
    43
    Likes Received:
    0
    Bonjour,

    Voici un package pour réaliser un rappel de rendez-Vous.

    Voici le lien du package:f5exo.free.fr/elastix/agi/agi_rdv.tgz

    Voici le Lisez moi

    Bonne manip.

    Erick
    ------------------------------------------------------------------------

    /* */
    /* F5EXO */
    /* */
    /* Erick LINE */
    /* */
    /* */
    /* AGI Rappel de RDV pour Asterisk & Elastix */
    /* */
    /*--------------------------------------------------------------------*/
    /* */
    /* author: Erick Liné (f5exo@free.fr) */
    /* */
    /* */
    /* Lisez moi */
    /*--------------------------------------------------------------------*/

    Descriptif
    ----------

    Cette application composé de 2 modules permet de mettre en place un
    service de rappel de rendez-vous.

    L'utilisateur appel un Numero pour fixer l'heure de rappel de son rdv.
    Une synthèse vocale l'invite à composer l'heure de rappel sous la forme:
    HH.MM.
    On test les bornes 23 & 59 avec branchement vers un message d'erreur.
    Puis l'utilisateur raccroche.

    A l'heure et minute précise, le poste de l'utilisateur est appelé,
    l'identifiant est [RendezVous] une synthese vocale lui annonce l'heure
    de son RDV.

    Plusieurs postes peuvent être rappelé à la même heure minute.
    Les fichiers source C sont disponibles.

    Fonctionement
    -------------

    Lors de l'appel de l'utilisateur on recupère son CallerID ainsi que les
    données HH MM entrées au clavier.
    On créé un fichier HHMM.rdv dans /tmp
    Dans ce fichier figure la liste des CallerID ayant déclenché un rdv à
    HH.MM.
    Le fichier peut empiler plusieurs CallerID à rappeler.


    Le fichier exec_listrdv récupère l'Heure Minute courante , ouvre le
    fichier HHMM.rdv s'il existe, et construit les fichiers CallerID.call
    dans /tmp.
    Il lui positionne les droits asterisk et fait un move dans outgoing.
    Et ainsi de suite pour tous les CallerID de la liste du même fichier
    HHMM.rdv. Ensuite le fichier est effacé.

    Pour lancer exec_listrdv toutes les minutes, une ligne est rajoutée dans
    le fichier cron asterisk figurant dans /var/spool/cron.

    Les syntheses vocales correspondant à cet AGI sont à déposer dans:
    /var/lib/asterisk/sounds/custom/


    Fichiers du package:

    extensions_custom.conf -> dans /etc/asterisk/

    rdv_list -> dans /var/lib/asterisk/agi/
    exec_listrdv -> dans /var/lib/asterisk/bin/

    activation_rdv.wav -> dans /var/lib/asterisk/sounds/custom/
    rappel_rdv.wav -> dans /var/lib/asterisk/sounds/custom/

    Fichier

    rdv_list.c -> dans /usr/local/src/agi_rdv/
    exec_listrdv -> dans /usr/local/src/agi_rdv/

    asterisk -> dans var/spool/cron/

    Ne pas oublier de relancer le cron :
    /etc/rc.d/init.d/crond restart



    12/2010
     
  2. danardf

    Joined:
    Dec 3, 2007
    Messages:
    8,069
    Likes Received:
    12
    Salut f5exo.
    Ca fait un bail dit donc.

    La fonction réveil existe sur FreePBX.
    Je m'étais fait un dialplan pour cette fonction hors qu'elle existait déjà.
    Pas grave, c'est un bon exercice. :)

    Code:
    [reveil]
    exten => s,1,Answer()
    exten => s,n,playback(wakeup-call)
    exten => s,n,Wait(1)
    exten => s,n(start),background(press-1&for-a-daily-wakeup-call&press-2&to-cancel-wakeup&press-star-cancel|m)
    exten => s,n,Read(choice,,1)
    exten => s,n,GotoIf($["${choice}" = "1"]?wakeup)
    exten => s,n,GotoIf($["${choice}" = "2"]?Delete)
    exten => s,n,GotoIf($["${choice}" = "*"]?End)
    exten => s,n,playback(bad)
    exten => s,n,playback(service)
    exten => s,n,Gosub(start)
    exten => s,n(wakeup),playback(wakeup-for-one-time&enter-a-time)
    exten => s,n,Read(hour,,2)
    exten => s,n,Read(minutes,,2)
    exten => s,n,playback(you-entered) 
    exten => s,n,SayNumber(${hour},c)
    exten => s,n,playback(hours)
    exten => s,n,SayNumber(${minutes},c)
    exten => s,n,playback(minutes)
    exten => s,n,system(/bin/reveil ${hour}${minutes} ${CALLERID(num)})
    exten => s,n,playback(hours&recorded)
    exten => s,n,Gosub(End)
    exten => s,n(Delete),system(/bin/rm -f /var/spool/asterisk/outgoing/wakeup*)
    exten => s,n,playback(wakeup-call-cancelled)
    exten => s,n,Gosub(End)
    exten => s,n(End),playback(thank-you-for-calling)
    exten => s,n,Hangup()
    /bin/reveil:
    Code:
    rm -f /var/spool/asterisk/tmp/wakeup-*
    rm -f /var/spool/asterisk/outgoing/wakeup-*
    wakeup=`date +%m%d`
    echo "Channel: Local/$2@from-internal" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "CallerID: wakeup <$2>" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "MaxRetries: 2" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "RetryTime: 60" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "WaitTime: 30" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "Context: calendar-event" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "Extension: *7899" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "Priority: 1" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    echo "Set: FILE_CALL=custom/$2/wakeup.gsm" >> /var/spool/asterisk/tmp/wakeup-$1-
    $2
    echo "Set: ID_EVENT_CALL=3" >> /var/spool/asterisk/tmp/wakeup-$1-$2
    /bin/touch -t $wakeup$1 /var/spool/asterisk/tmp/wakeup-$1-$2
    mv /var/spool/asterisk/tmp/wakeup-$1-$2 /var/spool/asterisk/outgoing/
    chgrp asterisk /var/spool/asterisk/outgoing/wakeup-$1-$2
    chown asterisk /var/spool/asterisk/outgoing/wakeup-$1-$2
    C'était juste un premier jet.
    J'ai arrêté de le trifouillé. (Quelque truc à améliorer et débugger comme l'effacement des rappels programmés). :laugh:
     
  3. f5exo

    Joined:
    Nov 15, 2007
    Messages:
    43
    Likes Received:
    0
    Bonjour Franck

    Oui cela faisait longtemps , faute de temps...

    J'avais pas trouvé la fonction en question , ceci dit je n'avais pas cherché plus que cela, et du coup je me suis lancé dans un petit truc simple.
    Là aussi j'ai pas prévu l'effacement ....
    Je vais essayer la tienne.

    Bonne journée.

    Erick
     
  4. danardf

    Joined:
    Dec 3, 2007
    Messages:
    8,069
    Likes Received:
    12
    Salut.

    Truc pas modifié, c'est la capacité de composer l'heure pendant le message.
    Pour ma part tu es obligé d'attente la fin des messages.
    Mais bon...ce que j'en fait. ;)
    Dès que j'ai l'occasion, j'essaye la tienne.

    Ceci dit pour ton script, pourquoi ne pas utiliser les prompt d'origine!?
     
  5. f5exo

    Joined:
    Nov 15, 2007
    Messages:
    43
    Likes Received:
    0
    Re:AGI Rappel de Rendez Vous suite ..

    Voici la suite concernant le service Rendez Vous
    Largement inspiré des tes manip Franck.

    Un menu avec 3 choix:

    1 -> RDV ponctuel
    2 -> Annulation d'un RDV
    3 -> RDV quotidien

    Plusieurs RDV ponctuels et ou quotidien sont possible sur le même poste.
    Et plusieurs RDV de postes différents à la même hhmm.

    Un ficher log enregistre les inscriptions : No hh mm et type de RDV ou annulation
    Les champs sont séparés par des ; pour d'éventielles stats.

    Les prompts sont destiné pour des Rendez-vous.
    Dans le cas d'un réveil ceux d'origines peuvent êtres utilisé.

    Description dans le Lisez moi

    Les sources C sont disponibles dans le package dispo à:
    http://f5exo.free.fr/elastix/agi/agi_rdv.tgz

    Bonne manip.

    Erick
     
  6. danardf

    Joined:
    Dec 3, 2007
    Messages:
    8,069
    Likes Received:
    12
    Re:AGI Rappel de Rendez Vous suite ..

    Salut Erick.

    Merci pour cettte AGI.
    Je la testerais dès que possible.

    Un chti Karma pour le pèpère. :laugh:
     
  7. f5exo

    Joined:
    Nov 15, 2007
    Messages:
    43
    Likes Received:
    0
    Re:AGI Rappel de Rendez Vous suite ..

    J'essaye d'aller plus loin en laissant la possibilité
    a l'utilisateur de dicter le nom de son rendez-vous.

    J'enregistre bien le msg
    mais dans le .call soit tu vas vers un context soit tu vas vers une applie.

    Et avec l'applie tu es rappelé et tu te prend le msg enregistré
    brut de fonderie et ca raccroche.
    C'est un peu brut comme rappel.

    J'ai essayé de passer un paramètre avec Set dans le .Call pour
    l'utiliser dans le context de rappel, mais ca gaze pas ...
    Je continue c'est peut être le format qui n'est pas bon.
    Mais c'est follement intéressant .

    A +

    Erick
     
  8. danardf

    Joined:
    Dec 3, 2007
    Messages:
    8,069
    Likes Received:
    12
    Re:AGI Rappel de Rendez Vous suite ..

    Ok.

    Peut-être qu'il faille insérer un wait() après la lecture de ton message ou un autre message de fin, ou encore une chtite mélodie.
     
  9. f5exo

    Joined:
    Nov 15, 2007
    Messages:
    43
    Likes Received:
    0
    Re:AGI Rappel de Rendez Vous suite .. et fin

    Ca y est le service est finalisé.

    Dans le cas d'un rdv ponctuel on propose à l'utilisateur
    d'enregister un aide memoire.
    Il sera rediffusé au rappel, puis supprimé.

    Le format du fichier est CallerIdhhmm.msg

    Donc plusieurs rdv ponctuels sont autorisés et autant
    d'aide mémoire associés .

    Dans le cas d'une suppression, le rdv est supprimé ainsi que
    son fichier aide mémoire.

    Le package a été réactualisé.

    Bon Noel à tous.


    Erick
     

Share This Page