Affichage des résultats 1 à 3 sur 3

Discussion: Reconnaissance des touches

  1. #1
    Membre Junior
    Date d'inscription
    décembre 2010
    Messages
    10
    Downloads
    0
    Uploads
    0

    Reconnaissance des touches

    Bonjour,

    Je souhaite utiliser mon Asterisk comme passerelle, que j'appelle avec mon GSM et de la je peux rappeler ailleurs.

    J'ai cherché sur Google et j'ai trouvé ceci

    Code:
    [Recall]
    exten => s,1,SetLanguage(fr)
    exten => s,2,SIPDtmfMode(inband)
    exten => s,3,DigitTimeout(4)
    exten => s,4,ResponseTimeout(5)
    exten => s,5,Read(Teltotel,beep,10)
    exten => s,6,SayDigits(${Teltotel:0:1})
    exten => s,7,SayDigits(${Teltotel:1:1})
    exten => s,8,SayNumber(${Teltotel:2:2})
    exten => s,9,SayNumber(${Teltotel:4:2})
    exten => s,10,SayNumber(${Teltotel:6:2})
    exten => s,11,SayNumber(${Teltotel:8:2})
    exten => s,12,WaitExten
    
    exten => #,1,GoTo(Recall,s,1)
    exten => i,1,GoTo(Recall,s,1)
    exten => t,1,GoTo(Recall,s,1)
    
    exten => *,1,Dial(SIP/${Teltotel}@wengo-out)
    exten => *,2,Hangup()
    Il se plaignait du SetLanguage, je l'ai supprimé.
    Pour le setdtmf, j'ai testé les trois valeurs mais aucune n'a rien changé.

    Je me suis dit que c'était un soucis de reconnaissance du dtmf alors j'ai testé ceci (trouvé via Google)

    Code:
    [lecture]
    exten => s,1(start),Gotoif($[ "${LEN(${extensao})}" < "3"]?collect:pstn)
    exten => s,n,NoOp(Executing - ${extensao} - )
    exten => s,1(collect),Read(digito,,10)
    exten => s,n,SayDigits(${digito})
    exten => s,n,Set(extensao=${extensao}${digito})
    exten => s,n,GoTo(start)
    exten => s,n(pstn),GoTo(from-pstn,s,1)
    exten => h,1,hangup()
    Et la le système me dit bien les touches que j'ai enfoncée.

    J'essaye donc de reprendre la partie lecture de ce bout de code pour l'implanter dans l'autre mes sans succès.

    Mon but final étant de faire

    • J'appelle avec mon GSM vers Asterisk.
    • Je tape une extension pour arriver à la gestion du transfert
    • Il vérifie que c'est mon numéro le caller id
    • Je tape un numéro
    • Il me le confirme
    • Je valide
    • Il appelle


    Cela m'a l'air assez basique, mais je ne trouve pas :(

    Je viens aussi de tenter de lire chiffre par chiffre

    Code:
    [Recall]
    exten = accueil,1,Answer()
    exten = accueil,n,Playback(not-as-important)
    exten = accueil,n(debut),Gotoif($[ "${LEN(${extencomp})}" < "10"]?recup:int)
    exten = accueil,n(recup),Read(chiffre,,1)
    exten = accueil,n,Set(extencomp=${extencomp}${chiffre})
    exten = accueil,n,GoTo(debut)
    exten = accueil,n,Dial(SIP/${extencomp}@cust1000-sortant)
    Il lit le premier chiffre, lit le deuxième (le concatène au premier) puis il part trop tôt :

    Code:
        -- Executing [accueil@Recall:3] GotoIf("SIP/didww.uk2-00000003", "1?recup:int") in new stack
        -- Goto (Recall,accueil,4)
        -- Executing [accueil@Recall:4] Read("SIP/didww.uk2-00000003", "chiffre,,1") in new stack
        -- Accepting a maximum of 1 digits.
        -- User entered '8'
        -- Executing [accueil@Recall:5] Set("SIP/didww.uk2-00000003", "extencomp=8") in new stack
        -- Executing [accueil@Recall:6] Goto("SIP/didww.uk2-00000003", "debut") in new stack
        -- Goto (Recall,accueil,3)
        -- Executing [accueil@Recall:3] GotoIf("SIP/didww.uk2-00000003", "1?recup:int") in new stack
        -- Goto (Recall,accueil,4)
        -- Executing [accueil@Recall:4] Read("SIP/didww.uk2-00000003", "chiffre,,1") in new stack
        -- Accepting a maximum of 1 digits.
        -- User entered '1'
        -- Executing [accueil@Recall:5] Set("SIP/didww.uk2-00000003", "extencomp=81") in new stack
        -- Executing [accueil@Recall:6] Goto("SIP/didww.uk2-00000003", "debut") in new stack
        -- Goto (Recall,accueil,3)
        -- Executing [accueil@Recall:3] GotoIf("SIP/didww.uk2-00000003", "0?recup:int") in new stack
    [Jan 17 21:47:02] NOTICE[29001]: pbx.c:3739 pbx_extension_helper: No such label 'int' in extension 'accueil' in context 'Recall'
    [Jan 17 21:47:02] WARNING[29001]: pbx.c:9602 pbx_parseable_goto: Priority 'int' must be a number > 0, or valid label
      == Spawn extension (Recall, accueil, 3) exited non-zero on 'SIP/didww.uk2-00000003'
    Je précise que je tourne avec Asterisk 1.6.2.x (x = 7 sur Ubuntu et x = 1 sur Debian)

    Merci de votre aide.
    cEd
    Dernière modification par VirtualCed ; 17/01/2011 à 22h35.

  2. #2
    Membre Association
    Date d'inscription
    septembre 2010
    Messages
    1 236
    Downloads
    0
    Uploads
    0
    Bonjour, vous êtes perdu pour une simple raison d'utilisation de script écrit par les autres. en fait votre lecture de chiffres fonctionne, sauf que, le script il est juste mauvas.

    Alors je vous conseille de:

    Créer is script simple qui fais Read() et qui Noop votre variable (3 lignes avec answer)

    Second étape, votre scenario est trop long, il faut simplifier, je vous propose de:

    1: Répondre
    2: Comparer si numero de l'appelant est dans une base de données astdb, si oui continuer, sinon bye.
    3: Vous donner le dialtone
    4: Appel

    Pour réaliser tout ça il vous faut les fonctions:
    gotoif
    DB
    DISA (le dialtone)

    Pour apprendre comment les utiliser, dans asterisk il faut taper:
    core show application NOM
    core show function NOM

    par exemple core show application disa

    A vous de jouer.

  3. #3
    Membre Junior
    Date d'inscription
    février 2011
    Localisation
    Canada
    Messages
    3
    Downloads
    1
    Uploads
    0

    Thumbs up ma methode

    salut,

    Je fait tout ceci avec l interface web freepbx...

    1- incomming route avec mon callerid
    2 - set destination vers un disa avec password

    voila!
    IN

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
  •