add variable vm_auth_only or option auth_only to voicemail app so you can use it as a pin checker

This commit is contained in:
Anthony Minessale 2011-11-02 11:22:53 -05:00
parent 7f5ff26fcd
commit 3051480d42
1 changed files with 25 additions and 1 deletions

View File

@ -1856,6 +1856,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
switch_input_args_t args = { 0 };
const char *caller_id_name = NULL;
const char *caller_id_number = NULL;
int auth_only = 0, authed = 0;
if (!(caller_id_name = switch_channel_get_variable(channel, "effective_caller_id_name"))) {
caller_id_name = caller_profile->caller_id_name;
@ -1865,6 +1866,13 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
caller_id_number = caller_profile->caller_id_number;
}
if (auth == 2) {
auth_only = 1;
auth = 0;
} else {
auth_only = switch_true(switch_channel_get_variable(channel, "vm_auth_only"));
}
timeout = profile->digit_timeout;
attempts = profile->max_login_attempts;
status = switch_ivr_phrase_macro(session, VM_HELLO_MACRO, NULL, NULL, &args);
@ -2440,6 +2448,10 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
}
}
authed = 1;
if (auth_only) goto end;
vm_check_state = VM_CHECK_FOLDER_SUMMARY;
} else {
goto failed;
@ -2472,7 +2484,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
tmp_file_path = NULL;
}
if (switch_channel_ready(channel)) {
if (switch_channel_ready(channel) && !auth_only) {
if (failed) {
status = switch_ivr_phrase_macro(session, VM_ABORT_MACRO, NULL, NULL, NULL);
}
@ -2483,6 +2495,15 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
switch_xml_free(x_user);
x_user = NULL;
}
if (auth_only) {
if (authed) {
switch_channel_set_variable(channel, "user_pin_authenticated", "true");
} else {
switch_channel_hangup(channel, SWITCH_CAUSE_USER_CHALLENGE);
}
}
}
@ -3450,6 +3471,9 @@ SWITCH_STANDARD_APP(voicemail_function)
} else if (argv[x] && !strcasecmp(argv[x], "auth")) {
auth++;
x++;
} else if (argv[x] && !strcasecmp(argv[x], "auth_only")) {
auth = 2;
x++;
} else {
break;
}