I searched tickets and couldn't find this issue, my apologies if it's already been addressed.
When setting direct to voicemail extension under 'General Settings' it conflicts with app-userlogonoff, if remove the section from extensions_additional.conf calling direct to voicemail with * works, however of course after a reload it's broken again, here below is the relevant code within FreePBX generating that code, starting on line 91 in modules/core/functions.inc.php I've edited most of it out to avoid it breaking again.
// Log on / off -- all in one context
if ($fc_userlogoff != '' || $fc_userlogon != '') {
$ext->addInclude('from-internal-additional', 'app-userlogonoff'); // Add the include from from-internal
if ($fc_userlogoff != '') {
/* COMMENTED OUT BY SCOTT HARVANEK ON MAR 29TH AS IT BREAKS DIRECT TO VMAIL CALLING */
// $ext->add('app-userlogonoff', $fc_userlogoff, '', new ext_macro('user-logoff'));
// $ext->add('app-userlogonoff', $fc_userlogoff, '', new ext_hangup(''));
}
if ($fc_userlogon != '') {
// $ext->add('app-userlogonoff', $fc_userlogon, '', new ext_macro('user-logon'));
// $ext->add('app-userlogonoff', $fc_userlogon, '', new ext_hangup(''));
// $clen = strlen($fc_userlogon);
// $fc_userlogon = "_$fc_userlogon.";
// $ext->add('app-userlogonoff', $fc_userlogon, '', new ext_macro('user-logon,${EXTEN:'.$clen.'}'));
// $ext->add('app-userlogonoff', $fc_userlogon, '', new ext_hangup(''));
}
}