Annonce d’un numéro

Fonctionnement

Annoncer les numéros de manière habituelle et non chiffre a chiffre. Par exemple pour 0123456789, zero, un, vingt trois, quarante cinq, … Et pour 118, cent dix huit.

Extension

Au lieu d’utiliser SayDigits(${number}), on fait un Gosub:

exten => s,n,SendText("${number}")
exten => s,n,Gosub(local-say-number,s,1)

Contexte

Le contexte a pour paramètre la variable number qu’il faut remplir avec le numéro a annoncer.

local-say-number]
; in: number (number to say)
exten => s,1,Set(pos=0)
exten => s,n,NoOp(${LEN(${number})})
exten => s,n,GotoIf($["$[${LEN(${number})} % 2]" = "0"]?even)
exten => s,n(odd),SayNumber(${number:0:3})
exten => s,n,Set(pos=$[${pos} + 3])
exten => s,n(even),While($[${pos} < ${LEN(${number})}])
exten => s,n,GotoIf($["${number:${pos}:1}" = "0"]?zero)
exten => s,n,SayNumber(${number:${pos}:2})
exten => s,n,Goto(next)
exten => s,n(zero),SayDigits(${number:${pos}:2})
exten => s,n(next),Set(pos=$[${pos} + 2])
exten => s,n,EndWhile()
exten => s,n,Return()