Allow alternative extensions to be specified for a user.

(closes issue #12830)
 Reported by: jcollie
 Patches: 
       astertisk-trunk-121496-alternate-extensions.patch uploaded by jcollie (license 412)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@124049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.1
Tilghman Lesher 18 years ago
parent 249ac33ab0
commit 122486b263

@ -785,3 +785,5 @@ Miscellaneous
* If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
the "core show locks" CLI command will give lock information output as well the "core show locks" CLI command will give lock information output as well
as a backtrace of the stack which led to the lock calls. as a backtrace of the stack which led to the lock calls.
* users.conf now sports an optional alternativeexts property, which permits
allocation of additional extensions which will reach the specified user.

@ -77,3 +77,9 @@ pickupgroup = 1
;hasmanager = no ;hasmanager = no
;callwaiting = no ;callwaiting = no
;context = international ;context = international
;
; Some administrators choose alphanumeric extensions, but still want their
; users to be reachable by traditional numeric extensions, specified by the
; alternateexts entry.
;
;alternateexts = 7057,3249

@ -1549,10 +1549,11 @@ static void pbx_load_users(void)
struct ast_config *cfg; struct ast_config *cfg;
char *cat, *chan; char *cat, *chan;
const char *dahdichan; const char *dahdichan;
const char *hasexten; const char *hasexten, *altexts;
char tmp[256]; char tmp[256];
char iface[256]; char iface[256];
char dahdicopy[256]; char dahdicopy[256];
char *ext, altcopy[256];
char *c; char *c;
int len; int len;
int hasvoicemail; int hasvoicemail;
@ -1643,6 +1644,17 @@ static void pbx_load_users(void)
} else { } else {
ast_add_extension2(con, 0, cat, 1, NULL, NULL, "Dial", strdup("${HINT}"), ast_free_ptr, registrar); ast_add_extension2(con, 0, cat, 1, NULL, NULL, "Dial", strdup("${HINT}"), ast_free_ptr, registrar);
} }
altexts = ast_variable_retrieve(cfg, cat, "alternateexts");
if (!ast_strlen_zero(altexts)) {
snprintf(tmp, sizeof(tmp), "%s,1", cat);
ast_copy_string(altcopy, altexts, sizeof(altcopy));
c = altcopy;
ext = strsep(&c, ",");
while (ext) {
ast_add_extension2(con, 0, ext, 1, NULL, NULL, "Goto", strdup(tmp), ast_free, registrar);
ext = strsep(&c, ",");
}
}
} }
} }
ast_config_destroy(cfg); ast_config_destroy(cfg);

Loading…
Cancel
Save