diff --git a/manager.c b/manager.c index 19cc3451d5..f7761d63b4 100755 --- a/manager.c +++ b/manager.c @@ -405,6 +405,8 @@ static int action_originate(struct mansession *s, struct message *m) char *priority = astman_get_header(m, "Priority"); char *timeout = astman_get_header(m, "Timeout"); char *callerid = astman_get_header(m, "CallerID"); + char *app = astman_get_header(m, "Application"); + char *appdata = astman_get_header(m, "Data"); char *tech, *data; int pi = 0; int res; @@ -432,7 +434,11 @@ static int action_originate(struct mansession *s, struct message *m) } *data = '\0'; data++; - res = ast_pbx_outgoing_exten(tech, AST_FORMAT_SLINEAR, data, to, context, exten, pi, &reason, 0, strlen(callerid) ? callerid : NULL, NULL ); + if (strlen(app)) { + res = ast_pbx_outgoing_app(tech, AST_FORMAT_SLINEAR, data, to, app, appdata, &reason, 0, strlen(callerid) ? callerid : NULL ); + } else { + res = ast_pbx_outgoing_exten(tech, AST_FORMAT_SLINEAR, data, to, context, exten, pi, &reason, 0, strlen(callerid) ? callerid : NULL, NULL ); + } if (!res) astman_send_ack(s, "Originate successfully queued"); else