Authenticate() — Requires that the caller enter a correct password before continuing
Requires a caller to enter a given
      password in order to continue execution of
      the next priority in the dialplan. Authenticate() gives the caller three chances
      to enter the password correctly. If the password is not correctly
      entered after three tries, the channel is hung up.
If password begins with the / character, it is interpreted as a file that
      contains a list of valid passwords (one per line). Passwords may also be
      stored in the Asterisk database (AstDB); see the d option below.
The maxdigits parameter sets the
      maximum number of digits that may be entered by the caller. It not set,
      the application will accept an unlimited number of digits and will wait
      for the caller to press the # key
      after entering his authentication code.
A set of options may be provided,
      consisting of one or more of the letters in the following list:
a
            Sets the CDR field named accountcode and the channel variable
            ACCOUNTCODE to the password
            that is entered
d
            Interprets the path as the database key from the Asterisk database in which to find the password, not a literal file. When using a database key, the value associated with the key can be anything.
j
            Supports jumping to priority n+101 if authentication fails
m
            Interprets the given path as a file that contains a list of
            account codes and password hashes delimited with : (colon character), listed one per line
            in the file. When one of the passwords is matched, the channel
            will have its account code set to the corresponding account code
            in the file.
r
            Removes the database key upon successful entry (valid with
            d only).
; force the caller to enter the password before continuing, 
; and set the CDR field named 'accountcode' to the entered password
exten => 123,1,Answer()
exten => 123,n,Authenticate(1234,a)
exten => 123,n,Playback(pin-number-accepted)
exten => 123,n,SayDigits(${ACCOUNTCODE})