Synopsis
DISAplus is at it’s core an authentication extension wrapper around the built-in DISA() Asterisk Application. It was inspired by the FreePBX DISA Module.
Call Flow
- Caller dials DISAplus extension
- DISAplus recognizes user based on Caller ID => extension mapping
- *DISAplus greets caller with name prompt
- If Caller ID isn’t provided standard VMAuthenticate authenticates user
- Caller ID Name is set to Extension Name, Caller ID Number is set to original inbound Caller ID
- Caller gets DISA Dialtone
Implementation
Three files make up the DISAplus implementation:
- /var/lib/asterisk/agi-bin/led_disaplus/disaplus.php
- /var/lib/asterisk/agi-bin/led_disaplus/disaplus.conf
- /var/lib/asterisk/agi-bin/led_disaplus/disaplus.log
The codebase is PHP and uses the [http://phpagi.sourceforge.net/|PHPAGI]] class that is freely available and included in all Trixbox/FreePBX implementations. The main script disaplus.php is just 56 lines and handles all the pre-authentication before passing control back to the disaplus.conf dialplan. The final file, disaplus.log, is a simple logging file that tracks calls through the application.
Step-by-Step
- Download led_disaplus.tgz:
- tar -zxf led_disaplus.tgz /var/lib/asterisk/agi-bin/
- ln -s /var/lib/asterisk/agi-bin/led_disaplus/disaplus.conf /etc/asterisk
- EDIT: /etc/asterisk/disaplus.conf
- *Change 1080 to whatever extension you prefer
- include disaplus.conf
- *Add this to your dialplan at the appropriate context.
Usage
DISAplus uses the authentication information stored in /etc/voicemail.conf. If an unknown user calls in the user is prompted for mailbox number and password before being passed to DISA dialtone. Up to three additional external numbers can be pre-linked to extensions. This saves the user 1 step when calling in by recognizing them before prompting for password and greeting them with their name prompt.
Limitations
- “Only” three external numbers are supported per internal extension
- Name Lookup may only work for FreePBX users as it looks up the AMPUSER context in the the astdb
- *This could be overcome by using the name in voicemail.conf if the AMPUSER astdb lookup fails