-
Trouvé : il faut modifier say.conf comme suit:
Code:
[fr](date-base,digit-base)
;BAD _[n]um:0. => num:${SAY:1}
_[n]um:0X => num:${SAY:0:1}, num:${SAY:1:1}
Si j'ai bien compris, le principe de say.conf est :
1. Playback(phone:0123456,say) cherche un préfixe qui s'appelle "phone" et dont le numéro correspond à un pattern:
Code:
_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}
2. Ensuite, l'appli app_playback.so analyse la partie droite (ce qui suit =>) et vérifie s'il existe d'autres patterns dans say.conf qui pourraient encore modifier la lecture.
En l'occurence, la modification du pattern "_[n]um:0X" permet de lui faire lire un couple de chiffres commençant par un zéro en prononçant le zéro.
J'ai rajouté le support pour les numéros 800:
Code:
_pho[n]e:08XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:3},num:${SAY:4:2}, num:${SAY:6:2},num:${SAY:8:2}
Pour ceux que ça intéresse, plus de détails sur le plan de numérotation français.
Si quelqu'un sait comment ajouter ces modifications afin qu'elles soient incluses dans les futures versions d'Asterisk afin d'éviter à d'autres de perdre leur temps...
Merci.
-
Bizarre : un numéro en 0800123456 est bien prononcé "zéro huit cent douze trente-quatre cinquante-six) alors que pour 0892123456, les chiffres sont prononcés indivuellement :-/
;say.conf
Code:
;unité
_[n]um:X => digits/${SAY}
;dizaine
_[n]um:1X => digits/${SAY}
_[n]um:[2-9]0 => digits/${SAY}
_[n]um:[2-6]1 => digits/${SAY:0:1}0, vm-and, digits/${SAY:1}
_[n]um:71 => digits/60, vm-and, num:1${SAY:1}
_[n]um:7X => digits/60, num:1${SAY:1}
_[n]um:9X => digits/80, num:1${SAY:1}
_[n]um:[2-9][1-9] => digits/${SAY:0:1}0, num:${SAY:1}
;centaine
_[n]um:100 => digits/hundred
_[n]um:1XX => digits/hundred, num:${SAY:1}
_[n]um:[2-9]00 => num:${SAY:0:1}, digits/hundred
_[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
;0800XXXXXX -> 0899XXXXXX
;_pho[n]e:08XXXXXXXX => num:${SAY:0:1}, num:${SAY:1:3}, num:${SAY:4:2}, num:${SAY:6:2}, num:${SAY:8:2}
;CLI
Code:
-- Executing [2222@internal:4] Playback("SIP/xlite-02a56004", "phone:0810009032|say") in new stack
-- <SIP/xlite-02a56004> Playing 'digits/0' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/8' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/hundred' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/10' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/0' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/0' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/90' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/30' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/2' (language 'fr')
-- Executing [2222@internal:6] Playback("SIP/xlite-02a56004", "phone:0892123456}|say") in new stack
-- <SIP/xlite-02a56004> Playing 'digits/0' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/8' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/9' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/2' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/1' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/2' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/3' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/4' (language 'fr')
-- <SIP/xlite-02a56004> Playing 'digits/5' (language 'fr')
-- Executing [2222@internal:7] Hangup("SIP/xlite-02a56004", "") in new stack
Je ne comprends pourquoi le pattern fonctionne pour un 0800 et pas pour un 092. Quelqu'un a une idée?
Merci.
-
Il y avait un } en trop dans le numéro:
Code:
-- Executing [2222@internal:6] Playback("SIP/xlite-02a56004", "phone:0892123456}|say") in new stack
-
-
A force de faire des copier/coller et de chercher des pistes compliquées, on finit par se laisser piéger par ce genre de truc :-/