diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index a811041ef3b3f09a1f18707081c0bda0ec1b3b08..dd227f13e02ac7bc18e2d718cf28b6ee34d42d24 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -3517,6 +3517,7 @@ static int vm_execmain(struct ast_channel *chan, void *data) struct ast_vm_user *vmu = NULL, vmus; char *context=NULL; int silentexit = 0; + char cid[256]=""; LOCAL_USER_ADD(u); memset(&vms, 0, sizeof(vms)); @@ -3576,10 +3577,21 @@ static int vm_execmain(struct ast_channel *chan, void *data) goto out; } if (ast_strlen_zero(vms.username)) { - if (option_verbose > 2) - ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n"); - res = 0; - goto out; + char *callerid=NULL, *name=NULL; + if(chan->callerid != NULL) { + strncpy(cid, chan->callerid, sizeof(cid) - 1); + ast_callerid_parse(cid, &name, &callerid); + } + if(callerid != NULL) { + if (option_verbose > 2) + ast_verbose(VERBOSE_PREFIX_3 "No username but # key pressed. Using CID '%s'\n",callerid); + strncpy(vms.username, callerid, sizeof(vms.username) - 1); + } else { + if (option_verbose > 2) + ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n"); + res = 0; + goto out; + } } if (useadsi) adsi_password(chan);