aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rwxr-xr-xapps/app_voicemail.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index a811041ef..dd227f13e 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);