Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 10 sur 15

Discussion: [SOLVED] [1.4] Lecture d'un numéro à la française?

  1. #1
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0

    Question [SOLVED] [1.4] Lecture d'un numéro à la française?

    Bonjour

    J'ai besoin d'écrire un script qui demande à l'appelé de taper un numéro, puis le lui relire afin de confirmer:

    Code:
    ;Attend numéro à 4 chiffres, 2 essais, time-out de 20s
    exten => s,n(nbr2call),Read(NBR2CALL,please-type-number,4,,2,20)
    
    exten => s,n,GotoIf($[${LEN(${NBR2CALL})} != 4]?end)
    
    ;exten => s,n,SayDigits(${NBR2CALL})
    exten => s,n,SayNumber(${NBR2CALL})
    
    exten => s,n(end),Hangup()
    Outre que je n'ai que les fichiers US dans /var/lib/asterisk/sounds/digits/, je me demandais comment procéder pour que le numéro soit énoncé selon l'habitude française : par exemple, pour le 061243, ça donne "zéro-un, douze, quarante-trois" là où les Américains énoncent chaque chiffre indépendamment.

    Quelqu'un a-t-il déjà regardé et trouvé comment faire?

    Merci.
    Dernière modification par littlebigman ; 10/03/2011 à 17h16.

  2. #2
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    Regarde dans le fichier say.conf

  3. #3
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0
    Merci. Après avoir copié le fichier say.conf dans le /etc/asterisk de ma 1.4.21.2, j'utilise la fonction SayNumber() dans extensions.conf, mais il lit les chiffres comm un numéro "normal" plutôt qu'un numéro de téléphone:

    Code:
    ;"142.928.100"
    exten => 3333,1,SayNumber(0142928100)
    exten => 3333,n,Hangup
    Voici mon say.conf:

    www.pastebin.com/gCYYt0he

    FWIW, j'ai bien "language=fr" dans zapata.conf et sip.conf.

    Dois-je faire quelque chose de particulier pour qu'il lise les numéros à la française?

    Merci.

  4. #4
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0
    Je viens de voir mentionné cette section, que j'ai ajoutée à say.conf même s'il semble que c'est le choix par défaut:

    Code:
    ;/etc/asterisk/say.conf
    [general]
    ; method for playing numbers and dates
    ; old - using asterisk core function
    ; new - using this configuration file
    mode=new
    ...
    Mais ça donne toujours "142 millions, etc." :-/

  5. #5
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0

    Smile

    Bizaremment, très peu d'information sur le Net sur le fonctionnement de say.conf.

    Asterisk -vvvvvvvggc indique que say.conf est bien chargé.

    Je suis le premier à avoir besoin d'utiliser la fonction SayNumber() pour répéter un numéro à la française?

  6. #6
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    Après avoir copié le fichier say.conf dans le /etc/asterisk
    Il n'y était pas déjà ?

    Il ne suffit pas d'activer le nouveau mode de fonctionnement dans say.conf, il faut faire comprendre à Asterisk que les chiffres du numéro doivent être lus "deux par deux"
    Dans say.conf il y'a cette partie intéressante:
    Code:
        _pho[n]e:XXXX => num:${SAY:0:2}, num:${SAY:2:2}
        _pho[n]e:0[1-9]XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:1}, num:${SAY:2:2}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2}
        _pho[n]e:. => digit:${SAY}
    Il faut que tu réussisse à utiliser cela.

    L'exemple de cette page devrait t'aider:
    http://www.voip-info.org/wiki/view/A...onfig+say.conf
    Code:
    Set(CHANNEL(language)=hu);
            Playback(num:5|say);
                   Wait(0.5);
            Playback(num:510|say);
                   Wait(0.5);

  7. #7
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0
    Merci pour ton aide

    Citation Envoyé par ffossard Voir le message
    Il n'y était pas déjà ?
    Non parce que c'est un Linux/Asterisk embarqué, donc nécessité de n'installer que les fichiers vraiment indispensables.

    Citation Envoyé par ffossard Voir le message
    Il ne suffit pas d'activer le nouveau mode de fonctionnement dans say.conf, il faut faire comprendre à Asterisk que les chiffres du numéro doivent être lus "deux par deux"
    C'est là que ça coince : je n'arrive pas à piger l'interaction entre extensions.conf et say.conf, et la logique de say.conf.

    Code:
    Set(CHANNEL(language)=hu);
            Playback(num:5|say);
                   Wait(0.5);
            Playback(num:510|say);
                   Wait(0.5);
    Tu veux dire que l'on n'utilise pas SayNumber() mais Playback() pour relire un numéro de téléphone à l'appelant?

    Merci.

  8. #8
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0

    Thumbs up

    Marche toujours pas :-/

    extensions.conf:
    Code:
    exten => 2222,1,NoOp(Pseudo LANGUAGE is ${LANGUAGE})
    exten => 2222,n,Set(CHANNEL(language)=fr)
    exten => 2222,n,Set(NBR2CALL=0142928100)
    ;exten => 2222,n,SayNumber(${NBR2CALL})
    exten => 2222,n,Playback(num:${NBR2CALL},say)
    exten => 2222,n,Hangup
    CLI:
    Code:
    -- Executing [2222@internal:1] NoOp("SIP/xlite-02b20004", "Pseudo LANGUAGE is ") in new stack
    -- Executing [2222@internal:2] Set("SIP/xlite-02b20004", "CHANNEL(language)=fr") in new stack
    -- Executing [2222@internal:3] Set("SIP/xlite-02b20004", "NBR2CALL=0142928100") in new stack
    -- Executing [2222@internal:4] Playback("SIP/xlite-02b20004", "num:0142928100|say") in new stack
    -- <SIP/xlite-02b20004> Playing 'digits/hundred' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/40' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/2' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/million' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/9' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/hundred' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/20' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/8' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/thousand' (language 'fr')
    -- <SIP/xlite-02b20004> Playing 'digits/hundred' (language 'fr')
    -- Executing [2222@internal:5] Hangup("SIP/xlite-02b20004", "") in new stack
    == Spawn extension (internal, 2222, 5) exited non-zero on 'SIP/xlite-02b20004'
    Soit "142 millions, 928 mille, cent".

  9. #9
    Membre
    Date d'inscription
    novembre 2010
    Messages
    32
    Downloads
    0
    Uploads
    0
    Ça avance:

    say.conf:
    Code:
    [fr](date-base,digit-base)
    ...
    _pho[n]e:0[1-9]XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:1}, num:${SAY:2:2}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2}
    extensions.conf
    Code:
    exten => 2222,n,Playback(phone:${NBR2CALL},say)
    En revanche, le pattern ne fonctionne pas quand un couple commence par un zéro, par exemple 01 : Asterisk ne prononce pas le zéro. Comment faire?

    Autre question plus générale: le [n] est mis entre crochet pour ne pas le confondre avec N (n'importe quel chiffre entre 2 et 9) parce qu'Asterisk n'est pas sensible à la casse?

    Merci.

  10. #10
    Membre Association
    Date d'inscription
    août 2010
    Messages
    856
    Downloads
    0
    Uploads
    0
    Citation Envoyé par littlebigman Voir le message
    Ça avance:

    say.conf:
    Code:
    [fr](date-base,digit-base)
    ...
    _pho[n]e:0[1-9]XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:1}, num:${SAY:2:2}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2}
    extensions.conf
    Code:
    exten => 2222,n,Playback(phone:${NBR2CALL},say)
    En revanche, le pattern ne fonctionne pas quand un couple commence par un zéro, par exemple 01 : Asterisk ne prononce pas le zéro. Comment faire?
    Voilà vous avez compris

    La lecture dans le "format" pho[n]e contient des morceaux comme celui-ci: num:${SAY:0:1}
    Posez-vous la question: comment est lu le nombre "06" au format "num" ?

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
  •