The format for selecting characters from a variable can be expressed as:
${variable_name[:offset[:length]]}
; Remove the first character of extension, save in "number" variable exten => _9X.,1,Set(number=${EXTEN:1})
If you use a negative offset number, Asterisk starts counting from the end of the string and then selects everything after the new position. The following example will save the numbers 1234 to the 'number' variable, still assuming we've dialed 918005551234.
; Remove everything before the last four digits of the dialed string exten => _9X.,1,Set(number=${EXTEN:-4})
; Only save the middle numbers 555 from the string 918005551234 exten => _9X.,1,Set(number=${EXTEN:5:3})
; Save the numbers 555 to the 'number' variable exten => _9X.,1,Set(number=${EXTEN:-7:3})
; Set pin to everything but the trailing #. exten => _XXXX#,1,Set(pin=${EXTEN:0:-1})