Affichage des résultats 1 à 4 sur 4

Discussion: Comment savoir si l'appel a été transféré au moment du hangup

  1. #1
    Membre Junior
    Date d'inscription
    mars 2017
    Messages
    2
    Downloads
    0
    Uploads
    0

    Comment savoir si l'appel a été transféré au moment du hangup

    Bonjour,

    Je cherche à corriger un problème sur un service qui fonctionne bien sauf dans un cas précis, je m'explique : il s'agit d'une extension qui enregistre les appels automatiquement et qui au moment du hangup déclenche une action pour aller stocker le message enregistré dans une application distante via l'appel d'un script AGI. Mon problème concerne les appels qui sont transférés :

    - un appel arrive sur l'extension
    - l'appel est automatiquement enregistré (via MixMonitor())
    - l'appel est pris par l'utilisateur A
    - l'utilisateur A met l'appel en pause pour appeler l'utilisateur B
    - l'utilisateur A transfert l'appel à B
    - l'utilisateur B traite l'appel et raccroche

    Mon problème c'est que dans ce scénario, j'ai deux événement hanhup : lorsque A tranfert l'appel à B et lorsque B (ou l'appelant) raccroche. Je cherche à distinguer les deux pour ne déclencher l'action de stockage du message que dans le deuxième cas. J'ai bien cherché une variable me permettant de faire la différence mais je n'en ai pas trouvé une qui fasse l'affaire : le DIALSTATUS est à ANSWER dans les deux cas par exemple..

    Auriez-vous une idée ?

    Pour info, voilà à quoi ressemble l'extension (il s'agit d'un contexte entier) :

    Code:
    [support]
    exten => s,1,Set(TICKET_RECORD_FILE_PREFIX=/var/cache/asterisk/support-${EPOCH})
    exten => s,n,MixMonitor(${TICKET_RECORD_FILE_PREFIX}.wav,bW(4))
    exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
    exten => s,n,Dial(${SUPPORT},45,gm)
    exten => s,n,Hangup()
    
    exten => h,1,StopMixMonitor()
    exten => h,n,AGI(/usr/local/peephone/ticket_update.py)

  2. #2
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    Je chercherais à utiliser les variables globales qui se propagent sur les autres channels en les préfixant par __

    Ex: Set(__myvar=lavaleur)

    Puis Verbose(1,${myvar})

    Ca doit peut etre permettre de s'en sortir !

  3. #3
    Membre Junior
    Date d'inscription
    mars 2017
    Messages
    2
    Downloads
    0
    Uploads
    0
    Citation Envoyé par jean Voir le message
    Je chercherais à utiliser les variables globales qui se propagent sur les autres channels en les préfixant par __

    Ex: Set(__myvar=lavaleur)

    Puis Verbose(1,${myvar})

    Ca doit peut etre permettre de s'en sortir !
    Merci pour ta réponse mais je ne suis pas sur de la comprendre : en quoi une telle variable m'aiderai dans mon problème ?

    Par ailleurs, j'ai repéré que lors du hangup du premier appel, l'agi_channel est systématiquement suffixé par "<ZOMBIE>". Serait-se un moyen fiable de faire la distinction ?

  4. #4
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 418
    Downloads
    0
    Uploads
    0
    je positionnerai une variable disant "je suis dans la première partie de l'appel" ou "l'appel a été transféré", et je la regarde au hangup et je décide ce qu'il faut faire

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
  •