forked from Mirrors/freeswitch
FS-3229 --resolve
This commit is contained in:
parent
6a70fa4c4d
commit
38c3a67a7e
@ -136,6 +136,7 @@ SWITCH_BEGIN_EXTERN_C
|
||||
#define SWITCH_CHANNEL_EXECUTE_ON_MEDIA_VARIABLE "execute_on_media"
|
||||
#define SWITCH_CHANNEL_API_ON_ANSWER_VARIABLE "api_on_answer"
|
||||
#define SWITCH_CHANNEL_EXECUTE_ON_RING_VARIABLE "execute_on_ring"
|
||||
#define SWITCH_CHANNEL_EXECUTE_ON_TONE_DETECT_VARIABLE "execute_on_tone_detect"
|
||||
#define SWITCH_CALL_TIMEOUT_VARIABLE "call_timeout"
|
||||
#define SWITCH_HOLDING_UUID_VARIABLE "holding_uuid"
|
||||
#define SWITCH_SOFT_HOLDING_UUID_VARIABLE "soft_holding_uuid"
|
||||
|
@ -1552,7 +1552,8 @@ SWITCH_STANDARD_APP(tone_detect_session_function)
|
||||
int argc;
|
||||
char *mydata = NULL;
|
||||
time_t to = 0;
|
||||
int hits = 1;
|
||||
int hits = 0;
|
||||
const char *hp = NULL;
|
||||
|
||||
if (zstr(data) || !(mydata = switch_core_session_strdup(session, data))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "INVALID ARGS!\n");
|
||||
@ -1582,10 +1583,16 @@ SWITCH_STANDARD_APP(tone_detect_session_function)
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[6]) {
|
||||
hits = atoi(argv[6]);
|
||||
if (argv[4] && argv[5]) {
|
||||
hp = argv[6];
|
||||
} else if (argv[4] && !argv[6]) {
|
||||
hp = argv[4];
|
||||
}
|
||||
|
||||
if (hp) {
|
||||
hits = atoi(hp);
|
||||
if (hits < 0) {
|
||||
hits = 1;
|
||||
hits = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2392,7 +2392,6 @@ static switch_status_t tone_on_dtmf(switch_core_session_t *session, const switch
|
||||
{
|
||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||
switch_tone_container_t *cont = switch_channel_get_private(channel, "_tone_detect_");
|
||||
switch_event_t *event;
|
||||
int i;
|
||||
|
||||
if (!cont || !cont->detect_fax || dtmf->digit != 'f') {
|
||||
@ -2403,13 +2402,10 @@ static switch_status_t tone_on_dtmf(switch_core_session_t *session, const switch
|
||||
|
||||
if (cont->list[i].callback) {
|
||||
cont->list[i].callback(cont->session, cont->list[i].app, cont->list[i].data);
|
||||
} else if (cont->list[i].app) {
|
||||
if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "execute");
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute-app-name", cont->list[i].app);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute-app-arg", cont->list[i].data);
|
||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "lead-frames", "%d", 5);
|
||||
switch_core_session_queue_private_event(cont->session, &event, SWITCH_FALSE);
|
||||
} else {
|
||||
switch_channel_execute_on(switch_core_session_get_channel(cont->session), SWITCH_CHANNEL_EXECUTE_ON_TONE_DETECT_VARIABLE);
|
||||
if (cont->list[i].app) {
|
||||
switch_core_session_execute_application_async(cont->session, cont->list[i].app, cont->list[i].data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2491,13 +2487,10 @@ static switch_bool_t tone_detect_callback(switch_media_bug_t *bug, void *user_da
|
||||
cont->list[i].sleep = 0;
|
||||
cont->list[i].expires = 0;
|
||||
}
|
||||
} else if (cont->list[i].app) {
|
||||
if (switch_event_create(&event, SWITCH_EVENT_COMMAND) == SWITCH_STATUS_SUCCESS) {
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "execute");
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute-app-name", cont->list[i].app);
|
||||
switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute-app-arg", cont->list[i].data);
|
||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, "lead-frames", "%d", 5);
|
||||
switch_core_session_queue_private_event(cont->session, &event, SWITCH_FALSE);
|
||||
} else {
|
||||
switch_channel_execute_on(switch_core_session_get_channel(cont->session), SWITCH_CHANNEL_EXECUTE_ON_TONE_DETECT_VARIABLE);
|
||||
if (cont->list[i].app) {
|
||||
switch_core_session_execute_application_async(cont->session, cont->list[i].app, cont->list[i].data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2605,6 +2598,15 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_tone_detect_session(switch_core_sessi
|
||||
return SWITCH_STATUS_MEMERR;
|
||||
}
|
||||
|
||||
if ((var = switch_channel_get_variable(channel, "tone_detect_hits"))) {
|
||||
int tmp = atoi(var);
|
||||
if (tmp > 0) {
|
||||
hits = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hits) hits = 1;
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Adding tone spec %s index %d hits %d\n", tone_spec, cont->index, hits);
|
||||
|
||||
i = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user