mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-26 12:37:26 +00:00
better error checking, code review, cleanup.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7110 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
d93a42df14
commit
aca07ac3c0
@ -44,7 +44,7 @@ SWITCH_STANDARD_APP(detect_speech_function)
|
|||||||
int argc;
|
int argc;
|
||||||
char *lbuf = NULL;
|
char *lbuf = NULL;
|
||||||
|
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
|
||||||
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
||||||
if (!strcasecmp(argv[0], "grammar") && argc >= 1) {
|
if (!strcasecmp(argv[0], "grammar") && argc >= 1) {
|
||||||
switch_ivr_detect_speech_load_grammar(session, argv[1], argv[2]);
|
switch_ivr_detect_speech_load_grammar(session, argv[1], argv[2]);
|
||||||
@ -62,25 +62,18 @@ SWITCH_STANDARD_APP(detect_speech_function)
|
|||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", DETECT_SPEECH_SYNTAX);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", DETECT_SPEECH_SYNTAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define EXE_SYNTAX "<extension> <dialplan> <context>"
|
#define EXE_SYNTAX "<extension> <dialplan> <context>"
|
||||||
SWITCH_STANDARD_APP(exe_function)
|
SWITCH_STANDARD_APP(exe_function)
|
||||||
{
|
{
|
||||||
char *argv[4];
|
char *argv[4] = { 0 };
|
||||||
int argc;
|
int argc;
|
||||||
char *lbuf = NULL;
|
char *lbuf = NULL;
|
||||||
char *extension;
|
|
||||||
char *context;
|
|
||||||
char *dialplan;
|
|
||||||
|
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
|
||||||
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
||||||
extension = argv[0];
|
switch_core_session_execute_exten(session, argv[0], argv[1], argv[2]);
|
||||||
dialplan = argv[1];
|
|
||||||
context = argv[2];
|
|
||||||
switch_core_session_execute_exten(session, extension, dialplan, context);
|
|
||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", EXE_SYNTAX);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", EXE_SYNTAX);
|
||||||
}
|
}
|
||||||
@ -92,28 +85,16 @@ SWITCH_STANDARD_APP(intercept_function)
|
|||||||
switch_ivr_intercept_session(session, data);
|
switch_ivr_intercept_session(session, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define eavesdrop_SYNTAX "<uuid>"
|
#define eavesdrop_SYNTAX "<uuid>"
|
||||||
SWITCH_STANDARD_APP(eavesdrop_function)
|
SWITCH_STANDARD_APP(eavesdrop_function)
|
||||||
{
|
{
|
||||||
char *argv[4];
|
if (switch_strlen_zero(data)) {
|
||||||
int argc;
|
|
||||||
char *lbuf = NULL;
|
|
||||||
char *uuid;
|
|
||||||
|
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
|
||||||
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
|
||||||
uuid = argv[0];
|
|
||||||
|
|
||||||
switch_ivr_eavesdrop_session(session, uuid, ED_DTMF);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", eavesdrop_SYNTAX);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", eavesdrop_SYNTAX);
|
||||||
|
} else {
|
||||||
|
switch_ivr_eavesdrop_session(session, data, ED_DTMF);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SET_USER_SYNTAX "<user>@<domain>"
|
#define SET_USER_SYNTAX "<user>@<domain>"
|
||||||
SWITCH_STANDARD_APP(set_user_function)
|
SWITCH_STANDARD_APP(set_user_function)
|
||||||
{
|
{
|
||||||
@ -122,7 +103,7 @@ SWITCH_STANDARD_APP(set_user_function)
|
|||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
goto error;
|
goto error;
|
||||||
@ -165,20 +146,16 @@ SWITCH_STANDARD_APP(set_user_function)
|
|||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No user@domain specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No user@domain specified.\n");
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
if (xml) {
|
if (xml) {
|
||||||
switch_xml_free(xml);
|
switch_xml_free(xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(ring_ready_function)
|
SWITCH_STANDARD_APP(ring_ready_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_channel_ring_ready(channel);
|
switch_channel_ring_ready(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,7 +163,7 @@ SWITCH_STANDARD_APP(break_function)
|
|||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_channel_set_flag(channel, CF_BREAK);
|
switch_channel_set_flag(channel, CF_BREAK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,11 +175,10 @@ SWITCH_STANDARD_APP(queue_dtmf_function)
|
|||||||
|
|
||||||
if (!switch_strlen_zero(data)) {
|
if (!switch_strlen_zero(data)) {
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
for (p = (char *)data; p && *p; p++) {
|
for (p = (char *)data; p && *p; p++) {
|
||||||
dtmf.digit = *p;
|
dtmf.digit = *p;
|
||||||
switch_channel_queue_dtmf(channel, &dtmf);
|
switch_channel_queue_dtmf(channel, &dtmf);
|
||||||
p++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,7 +189,7 @@ SWITCH_STANDARD_APP(transfer_function)
|
|||||||
char *argv[4] = { 0 };
|
char *argv[4] = { 0 };
|
||||||
char *mydata;
|
char *mydata;
|
||||||
|
|
||||||
if (data && (mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
|
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
|
||||||
switch_ivr_session_transfer(session, argv[0], argv[1], argv[2]);
|
switch_ivr_session_transfer(session, argv[0], argv[1], argv[2]);
|
||||||
} else {
|
} else {
|
||||||
@ -228,7 +204,7 @@ SWITCH_STANDARD_APP(sched_transfer_function)
|
|||||||
char *argv[4] = { 0 };
|
char *argv[4] = { 0 };
|
||||||
char *mydata;
|
char *mydata;
|
||||||
|
|
||||||
if (data && (mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
|
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
|
||||||
time_t when;
|
time_t when;
|
||||||
|
|
||||||
@ -251,7 +227,7 @@ SWITCH_STANDARD_APP(sched_hangup_function)
|
|||||||
char *argv[5] = { 0 };
|
char *argv[5] = { 0 };
|
||||||
char *mydata;
|
char *mydata;
|
||||||
|
|
||||||
if (data && (mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
|
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
|
||||||
time_t when;
|
time_t when;
|
||||||
switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT;
|
switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT;
|
||||||
@ -278,14 +254,13 @@ SWITCH_STANDARD_APP(sched_hangup_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(sched_broadcast_function)
|
SWITCH_STANDARD_APP(sched_broadcast_function)
|
||||||
{
|
{
|
||||||
int argc;
|
int argc;
|
||||||
char *argv[6] = { 0 };
|
char *argv[6] = { 0 };
|
||||||
char *mydata;
|
char *mydata;
|
||||||
|
|
||||||
if (data && (mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
|
if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
|
||||||
time_t when;
|
time_t when;
|
||||||
switch_media_flag_t flags = SMF_NONE;
|
switch_media_flag_t flags = SMF_NONE;
|
||||||
@ -317,7 +292,6 @@ SWITCH_STANDARD_APP(sched_broadcast_function)
|
|||||||
|
|
||||||
SWITCH_STANDARD_APP(sleep_function)
|
SWITCH_STANDARD_APP(sleep_function)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No timeout specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No timeout specified.\n");
|
||||||
} else {
|
} else {
|
||||||
@ -337,7 +311,6 @@ SWITCH_STANDARD_APP(delay_function)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch_ivr_delay_echo(session, len);
|
switch_ivr_delay_echo(session, len);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(eval_function)
|
SWITCH_STANDARD_APP(eval_function)
|
||||||
@ -351,9 +324,9 @@ SWITCH_STANDARD_APP(phrase_function)
|
|||||||
char *mydata = NULL;
|
char *mydata = NULL;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if ((mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
const char *lang;
|
const char *lang;
|
||||||
char *macro = mydata;
|
char *macro = mydata;
|
||||||
char *mdata = NULL;
|
char *mdata = NULL;
|
||||||
@ -364,23 +337,21 @@ SWITCH_STANDARD_APP(phrase_function)
|
|||||||
|
|
||||||
lang = switch_channel_get_variable(channel, "language");
|
lang = switch_channel_get_variable(channel, "language");
|
||||||
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Execute %s(%s) lang %s\n", macro, mdata, lang);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Execute %s(%s) lang %s\n", macro, switch_str_nil(mdata), switch_str_nil(lang));
|
||||||
switch_ivr_phrase_macro(session, macro, mdata, lang, NULL);
|
switch_ivr_phrase_macro(session, macro, mdata, lang, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(hangup_function)
|
SWITCH_STANDARD_APP(hangup_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
|
switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (!switch_strlen_zero((char *) data)) {
|
if (!switch_strlen_zero(data)) {
|
||||||
cause = switch_channel_str2cause((char *) data);
|
cause = switch_channel_str2cause(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_channel_hangup(channel, cause);
|
switch_channel_hangup(channel, cause);
|
||||||
@ -389,18 +360,18 @@ SWITCH_STANDARD_APP(hangup_function)
|
|||||||
SWITCH_STANDARD_APP(answer_function)
|
SWITCH_STANDARD_APP(answer_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
|
|
||||||
assert(channel != NULL);
|
channel = switch_core_session_get_channel(session);
|
||||||
|
switch_assert(channel != NULL);
|
||||||
switch_channel_answer(channel);
|
switch_channel_answer(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(pre_answer_function)
|
SWITCH_STANDARD_APP(pre_answer_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
|
|
||||||
assert(channel != NULL);
|
channel = switch_core_session_get_channel(session);
|
||||||
|
switch_assert(channel != NULL);
|
||||||
switch_channel_pre_answer(channel);
|
switch_channel_pre_answer(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -413,7 +384,6 @@ SWITCH_STANDARD_APP(redirect_function)
|
|||||||
msg.string_arg = data;
|
msg.string_arg = data;
|
||||||
msg.message_id = SWITCH_MESSAGE_INDICATE_REDIRECT;
|
msg.message_id = SWITCH_MESSAGE_INDICATE_REDIRECT;
|
||||||
switch_core_session_receive_message(session, &msg);
|
switch_core_session_receive_message(session, &msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(respond_function)
|
SWITCH_STANDARD_APP(respond_function)
|
||||||
@ -425,19 +395,17 @@ SWITCH_STANDARD_APP(respond_function)
|
|||||||
msg.string_arg = data;
|
msg.string_arg = data;
|
||||||
msg.message_id = SWITCH_MESSAGE_INDICATE_RESPOND;
|
msg.message_id = SWITCH_MESSAGE_INDICATE_RESPOND;
|
||||||
switch_core_session_receive_message(session, &msg);
|
switch_core_session_receive_message(session, &msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(deflect_function)
|
SWITCH_STANDARD_APP(deflect_function)
|
||||||
{
|
{
|
||||||
switch_core_session_message_t msg = { 0 };
|
switch_core_session_message_t msg = { 0 };
|
||||||
|
|
||||||
/* Tell the channel to respond the call */
|
/* Tell the channel to deflect the call */
|
||||||
msg.from = __FILE__;
|
msg.from = __FILE__;
|
||||||
msg.string_arg = data;
|
msg.string_arg = data;
|
||||||
msg.message_id = SWITCH_MESSAGE_INDICATE_DEFLECT;
|
msg.message_id = SWITCH_MESSAGE_INDICATE_DEFLECT;
|
||||||
switch_core_session_receive_message(session, &msg);
|
switch_core_session_receive_message(session, &msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -447,7 +415,7 @@ SWITCH_STANDARD_APP(set_function)
|
|||||||
char *var, *val = NULL;
|
char *var, *val = NULL;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
||||||
@ -491,7 +459,6 @@ SWITCH_STANDARD_APP(set_global_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(set_profile_var_function)
|
SWITCH_STANDARD_APP(set_profile_var_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
@ -499,7 +466,7 @@ SWITCH_STANDARD_APP(set_profile_var_function)
|
|||||||
char *name, *val = NULL;
|
char *name, *val = NULL;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
caller_profile = switch_channel_get_caller_profile(channel);
|
caller_profile = switch_channel_get_caller_profile(channel);
|
||||||
|
|
||||||
@ -572,7 +539,6 @@ SWITCH_STANDARD_APP(set_profile_var_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(export_function)
|
SWITCH_STANDARD_APP(export_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
@ -581,7 +547,7 @@ SWITCH_STANDARD_APP(export_function)
|
|||||||
int local = 1;
|
int local = 1;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
||||||
@ -627,7 +593,7 @@ SWITCH_STANDARD_APP(unset_function)
|
|||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
|
||||||
@ -643,7 +609,7 @@ SWITCH_STANDARD_APP(log_function)
|
|||||||
char *level, *log_str;
|
char *level, *log_str;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (data && (level = strdup(data))) {
|
if (data && (level = strdup(data))) {
|
||||||
switch_log_level_t ltype = SWITCH_LOG_DEBUG;
|
switch_log_level_t ltype = SWITCH_LOG_DEBUG;
|
||||||
@ -663,7 +629,6 @@ SWITCH_STANDARD_APP(log_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(info_function)
|
SWITCH_STANDARD_APP(info_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
@ -671,7 +636,7 @@ SWITCH_STANDARD_APP(info_function)
|
|||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
@ -681,25 +646,22 @@ SWITCH_STANDARD_APP(info_function)
|
|||||||
switch_event_destroy(&event);
|
switch_event_destroy(&event);
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(event_function)
|
SWITCH_STANDARD_APP(event_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
char *argv[25];
|
char *argv[25] = { 0 };
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
char *lbuf;
|
char *lbuf;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_APPLICATION) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_APPLICATION) == SWITCH_STATUS_SUCCESS) {
|
||||||
switch_channel_event_set_data(channel, event);
|
switch_channel_event_set_data(channel, event);
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
|
||||||
&& (argc = switch_separate_string(lbuf, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
&& (argc = switch_separate_string(lbuf, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
||||||
int x = 0;
|
int x = 0;
|
||||||
|
|
||||||
@ -721,59 +683,52 @@ SWITCH_STANDARD_APP(event_function)
|
|||||||
switch_event_add_header(event, SWITCH_STACK_BOTTOM, var, "%s", val);
|
switch_event_add_header(event, SWITCH_STACK_BOTTOM, var, "%s", val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_event_fire(&event);
|
switch_event_fire(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(privacy_function)
|
SWITCH_STANDARD_APP(privacy_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel;
|
||||||
switch_caller_profile_t *caller_profile;
|
switch_caller_profile_t *caller_profile;
|
||||||
char *arg;
|
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
caller_profile = switch_channel_get_caller_profile(channel);
|
caller_profile = switch_channel_get_caller_profile(channel);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No privacy mode specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No privacy mode specified.\n");
|
||||||
} else {
|
} else {
|
||||||
arg = switch_core_session_strdup(session, data);
|
|
||||||
|
|
||||||
switch_set_flag(caller_profile, SWITCH_CPF_SCREEN);
|
switch_set_flag(caller_profile, SWITCH_CPF_SCREEN);
|
||||||
|
|
||||||
if (!strcasecmp(arg, "no")) {
|
if (!strcasecmp(data, "no")) {
|
||||||
switch_clear_flag(caller_profile, SWITCH_CPF_HIDE_NAME);
|
switch_clear_flag(caller_profile, SWITCH_CPF_HIDE_NAME);
|
||||||
switch_clear_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER);
|
switch_clear_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER);
|
||||||
} else if (!strcasecmp(arg, "yes")) {
|
} else if (!strcasecmp(data, "yes")) {
|
||||||
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
|
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
|
||||||
} else if (!strcasecmp(arg, "full")) {
|
} else if (!strcasecmp(data, "full")) {
|
||||||
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
|
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME | SWITCH_CPF_HIDE_NUMBER);
|
||||||
} else if (!strcasecmp(arg, "name")) {
|
} else if (!strcasecmp(data, "name")) {
|
||||||
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME);
|
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NAME);
|
||||||
} else if (!strcasecmp(arg, "number")) {
|
} else if (!strcasecmp(data, "number")) {
|
||||||
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER);
|
switch_set_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER);
|
||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID privacy mode specified. Use a valid mode [no|yes|name|full|number].\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID privacy mode specified. Use a valid mode [no|yes|name|full|number].\n");
|
||||||
}
|
}
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Set Privacy to %s [%d]\n", arg, caller_profile->flags);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Set Privacy to %s [%d]\n", data, caller_profile->flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(strftime_function)
|
SWITCH_STANDARD_APP(strftime_function)
|
||||||
{
|
{
|
||||||
char *argv[2];
|
char *argv[2] = { 0 };
|
||||||
int argc;
|
int argc;
|
||||||
char *lbuf;
|
char *lbuf;
|
||||||
|
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
|
||||||
&& (argc = switch_separate_string(lbuf, '=', argv, (sizeof(argv) / sizeof(argv[0])))) > 1) {
|
&& (argc = switch_separate_string(lbuf, '=', argv, (sizeof(argv) / sizeof(argv[0])))) > 1) {
|
||||||
switch_size_t retsize;
|
switch_size_t retsize;
|
||||||
switch_time_exp_t tm;
|
switch_time_exp_t tm;
|
||||||
@ -790,7 +745,6 @@ SWITCH_STANDARD_APP(strftime_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_API(strepoch_api_function)
|
SWITCH_STANDARD_API(strepoch_api_function)
|
||||||
{
|
{
|
||||||
switch_time_t out;
|
switch_time_t out;
|
||||||
@ -808,7 +762,6 @@ SWITCH_STANDARD_API(strepoch_api_function)
|
|||||||
|
|
||||||
SWITCH_STANDARD_API(strftime_api_function)
|
SWITCH_STANDARD_API(strftime_api_function)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch_size_t retsize;
|
switch_size_t retsize;
|
||||||
switch_time_exp_t tm;
|
switch_time_exp_t tm;
|
||||||
char date[80] = "";
|
char date[80] = "";
|
||||||
@ -834,7 +787,7 @@ SWITCH_STANDARD_API(presence_api_function)
|
|||||||
int argc = 0;
|
int argc = 0;
|
||||||
switch_event_types_t type = SWITCH_EVENT_PRESENCE_IN;
|
switch_event_types_t type = SWITCH_EVENT_PRESENCE_IN;
|
||||||
|
|
||||||
if (cmd && (lbuf = strdup(cmd))
|
if (!switch_strlen_zero(cmd) && (lbuf = strdup(cmd))
|
||||||
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) > 0) {
|
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) > 0) {
|
||||||
if (!strcasecmp(argv[0], "out")) {
|
if (!strcasecmp(argv[0], "out")) {
|
||||||
type = SWITCH_EVENT_PRESENCE_OUT;
|
type = SWITCH_EVENT_PRESENCE_OUT;
|
||||||
@ -859,17 +812,15 @@ SWITCH_STANDARD_API(presence_api_function)
|
|||||||
} else {
|
} else {
|
||||||
stream->write_function(stream, "Invalid");
|
stream->write_function(stream, "Invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_API(chat_api_function)
|
SWITCH_STANDARD_API(chat_api_function)
|
||||||
{
|
{
|
||||||
char *lbuf, *argv[4];
|
char *lbuf, *argv[4];
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
|
|
||||||
if (cmd && (lbuf = strdup(cmd))
|
if (!switch_strlen_zero(cmd) && (lbuf = strdup(cmd))
|
||||||
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
|
&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
|
||||||
switch_chat_interface_t *ci;
|
switch_chat_interface_t *ci;
|
||||||
|
|
||||||
@ -906,7 +857,7 @@ SWITCH_STANDARD_APP(ivr_application_function)
|
|||||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
char *params,*chanvars;
|
char *params,*chanvars;
|
||||||
|
|
||||||
if (channel && data && (params = switch_core_session_strdup(session, data))) {
|
if (channel && !switch_strlen_zero(data) && (params = switch_core_session_strdup(session, data))) {
|
||||||
switch_xml_t cxml = NULL, cfg = NULL, xml_menus = NULL, xml_menu = NULL;
|
switch_xml_t cxml = NULL, cfg = NULL, xml_menus = NULL, xml_menu = NULL;
|
||||||
|
|
||||||
// Open the config from the xml registry
|
// Open the config from the xml registry
|
||||||
@ -946,13 +897,11 @@ SWITCH_STANDARD_APP(ivr_application_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(dtmf_session_function)
|
SWITCH_STANDARD_APP(dtmf_session_function)
|
||||||
{
|
{
|
||||||
switch_ivr_inband_dtmf_session(session);
|
switch_ivr_inband_dtmf_session(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(stop_dtmf_session_function)
|
SWITCH_STANDARD_APP(stop_dtmf_session_function)
|
||||||
{
|
{
|
||||||
switch_ivr_stop_inband_dtmf_session(session);
|
switch_ivr_stop_inband_dtmf_session(session);
|
||||||
@ -967,11 +916,9 @@ SWITCH_STANDARD_APP(dtmf_session_generate_function)
|
|||||||
do_read = SWITCH_FALSE;
|
do_read = SWITCH_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_ivr_inband_dtmf_generate_session(session, do_read);
|
switch_ivr_inband_dtmf_generate_session(session, do_read);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(stop_dtmf_session_generate_function)
|
SWITCH_STANDARD_APP(stop_dtmf_session_generate_function)
|
||||||
{
|
{
|
||||||
switch_ivr_stop_inband_dtmf_generate_session(session);
|
switch_ivr_stop_inband_dtmf_generate_session(session);
|
||||||
@ -997,10 +944,16 @@ SWITCH_STANDARD_APP(tone_detect_session_function)
|
|||||||
char *mydata = NULL;
|
char *mydata = NULL;
|
||||||
time_t to = 0;
|
time_t to = 0;
|
||||||
|
|
||||||
mydata = switch_core_session_strdup(session, data);
|
if (switch_strlen_zero(data) || !(mydata = switch_core_session_strdup(session, data))) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
|
if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "INVALID ARGS!\n");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argv[3]) {
|
if (argv[3]) {
|
||||||
uint32_t mto;
|
uint32_t mto;
|
||||||
if (*argv[3] == '+') {
|
if (*argv[3] == '+') {
|
||||||
@ -1036,13 +989,11 @@ SWITCH_STANDARD_APP(echo_function)
|
|||||||
SWITCH_STANDARD_APP(park_function)
|
SWITCH_STANDARD_APP(park_function)
|
||||||
{
|
{
|
||||||
switch_ivr_park(session, NULL);
|
switch_ivr_park(session, NULL);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(park_state_function)
|
SWITCH_STANDARD_APP(park_state_function)
|
||||||
{
|
{
|
||||||
switch_ivr_park_session(session);
|
switch_ivr_park_session(session);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************/
|
/********************************************************************************/
|
||||||
@ -1055,8 +1006,6 @@ SWITCH_STANDARD_APP(park_state_function)
|
|||||||
*/
|
*/
|
||||||
static switch_status_t on_dtmf(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen)
|
static switch_status_t on_dtmf(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, unsigned int buflen)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
switch (itype) {
|
switch (itype) {
|
||||||
case SWITCH_INPUT_TYPE_DTMF:
|
case SWITCH_INPUT_TYPE_DTMF:
|
||||||
{
|
{
|
||||||
@ -1065,7 +1014,7 @@ static switch_status_t on_dtmf(switch_core_session_t *session, void *input, swit
|
|||||||
switch_channel_t *channel = switch_core_session_get_channel(session);
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
||||||
assert(channel);
|
switch_assert(channel);
|
||||||
|
|
||||||
if (!(terminators = switch_channel_get_variable(channel, SWITCH_PLAYBACK_TERMINATORS_VARIABLE))) {
|
if (!(terminators = switch_channel_get_variable(channel, SWITCH_PLAYBACK_TERMINATORS_VARIABLE))) {
|
||||||
terminators = "*";
|
terminators = "*";
|
||||||
@ -1096,7 +1045,8 @@ SWITCH_STANDARD_APP(clear_speech_cache_function)
|
|||||||
|
|
||||||
SWITCH_STANDARD_APP(speak_function)
|
SWITCH_STANDARD_APP(speak_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
|
switch_codec_t *codec = switch_core_session_get_read_codec(session);
|
||||||
char buf[10];
|
char buf[10];
|
||||||
char *argv[4] = { 0 };
|
char *argv[4] = { 0 };
|
||||||
int argc;
|
int argc;
|
||||||
@ -1104,19 +1054,22 @@ SWITCH_STANDARD_APP(speak_function)
|
|||||||
const char *voice = NULL;
|
const char *voice = NULL;
|
||||||
char *text = NULL;
|
char *text = NULL;
|
||||||
char *mydata = NULL;
|
char *mydata = NULL;
|
||||||
switch_codec_t *codec;
|
|
||||||
switch_input_args_t args = { 0 };
|
switch_input_args_t args = { 0 };
|
||||||
|
|
||||||
codec = switch_core_session_get_read_codec(session);
|
switch_assert(codec != NULL);
|
||||||
assert(codec != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
if (switch_strlen_zero(data) || !(mydata = switch_core_session_strdup(session, data))) {
|
||||||
assert(channel != NULL);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Params!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mydata = switch_core_session_strdup(session, data);
|
|
||||||
argc = switch_separate_string(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]));
|
argc = switch_separate_string(mydata, '|', argv, sizeof(argv) / sizeof(argv[0]));
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 0) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Params!\n");
|
||||||
|
return;
|
||||||
|
} else if (argc == 1) {
|
||||||
text = argv[0];
|
text = argv[0];
|
||||||
} else if (argc == 2) {
|
} else if (argc == 2) {
|
||||||
voice = argv[0];
|
voice = argv[0];
|
||||||
@ -1155,25 +1108,19 @@ SWITCH_STANDARD_APP(speak_function)
|
|||||||
args.buf = buf;
|
args.buf = buf;
|
||||||
args.buflen = sizeof(buf);
|
args.buflen = sizeof(buf);
|
||||||
switch_ivr_speak_text(session, engine, voice, text, &args);
|
switch_ivr_speak_text(session, engine, voice, text, &args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(playback_function)
|
SWITCH_STANDARD_APP(playback_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
char *file_name = NULL;
|
|
||||||
switch_input_args_t args = { 0 };
|
switch_input_args_t args = { 0 };
|
||||||
|
|
||||||
file_name = switch_core_session_strdup(session, data);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
assert(channel != NULL);
|
|
||||||
|
|
||||||
switch_channel_pre_answer(channel);
|
switch_channel_pre_answer(channel);
|
||||||
|
|
||||||
args.input_callback = on_dtmf;
|
args.input_callback = on_dtmf;
|
||||||
switch_ivr_play_file(session, NULL, file_name, &args);
|
switch_ivr_play_file(session, NULL, data, &args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(gentones_function)
|
SWITCH_STANDARD_APP(gentones_function)
|
||||||
@ -1184,10 +1131,15 @@ SWITCH_STANDARD_APP(gentones_function)
|
|||||||
char *l;
|
char *l;
|
||||||
int32_t loops = 0;
|
int32_t loops = 0;
|
||||||
|
|
||||||
|
if (switch_strlen_zero(data) || !(tone_script = switch_core_session_strdup(session, data))) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Params!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tone_script = switch_core_session_strdup(session, data);
|
tone_script = switch_core_session_strdup(session, data);
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
channel = switch_core_session_get_channel(session);
|
||||||
assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
switch_channel_pre_answer(channel);
|
switch_channel_pre_answer(channel);
|
||||||
|
|
||||||
@ -1202,23 +1154,18 @@ SWITCH_STANDARD_APP(gentones_function)
|
|||||||
|
|
||||||
args.input_callback = on_dtmf;
|
args.input_callback = on_dtmf;
|
||||||
switch_ivr_gentones(session, tone_script, loops, &args);
|
switch_ivr_gentones(session, tone_script, loops, &args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(displace_session_function)
|
SWITCH_STANDARD_APP(displace_session_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
uint32_t limit = 0;
|
uint32_t limit = 0;
|
||||||
char *argv[6];
|
char *argv[6] = { 0 };
|
||||||
int x, argc;
|
int x, argc;
|
||||||
char *lbuf = NULL;
|
char *lbuf = NULL;
|
||||||
char *flags = NULL;
|
char *flags = NULL;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data))
|
||||||
assert(channel != NULL);
|
|
||||||
|
|
||||||
if (data && (lbuf = switch_core_session_strdup(session, data))
|
|
||||||
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
|
||||||
path = argv[0];
|
path = argv[0];
|
||||||
for(x = 1; x < argc; x++) {
|
for(x = 1; x < argc; x++) {
|
||||||
@ -1232,20 +1179,14 @@ SWITCH_STANDARD_APP(displace_session_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(stop_displace_session_function)
|
SWITCH_STANDARD_APP(stop_displace_session_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
assert(channel != NULL);
|
|
||||||
|
|
||||||
switch_ivr_stop_displace_session(session, data);
|
switch_ivr_stop_displace_session(session, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(record_function)
|
SWITCH_STANDARD_APP(record_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
switch_status_t status;
|
switch_status_t status;
|
||||||
uint32_t limit = 0;
|
uint32_t limit = 0;
|
||||||
char *path;
|
char *path;
|
||||||
@ -1257,10 +1198,9 @@ SWITCH_STANDARD_APP(record_function)
|
|||||||
const char *tmp;
|
const char *tmp;
|
||||||
int rate;
|
int rate;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
|
|
||||||
if (data && (mydata = switch_core_session_strdup(session, data))) {
|
if (!switch_strlen_zero(data) && (mydata = switch_core_session_strdup(session, data))) {
|
||||||
argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
|
argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
|
||||||
} else {
|
} else {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No file specified.\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No file specified.\n");
|
||||||
@ -1282,7 +1222,6 @@ SWITCH_STANDARD_APP(record_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (argv[2]) {
|
if (argv[2]) {
|
||||||
fh.thresh = atoi(argv[2]);
|
fh.thresh = atoi(argv[2]);
|
||||||
if (fh.thresh < 0) {
|
if (fh.thresh < 0) {
|
||||||
@ -1312,15 +1251,13 @@ SWITCH_STANDARD_APP(record_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(record_session_function)
|
SWITCH_STANDARD_APP(record_session_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
switch_channel_t *channel = switch_core_session_get_channel(session);
|
||||||
char *p, *path = NULL;
|
char *p, *path = NULL;
|
||||||
uint32_t limit = 0;
|
uint32_t limit = 0;
|
||||||
|
|
||||||
channel = switch_core_session_get_channel(session);
|
switch_assert(channel != NULL);
|
||||||
assert(channel != NULL);
|
|
||||||
|
|
||||||
path = switch_core_session_strdup(session, data);
|
path = switch_core_session_strdup(session, data);
|
||||||
if ((p = strchr(path, '+'))) {
|
if ((p = strchr(path, '+'))) {
|
||||||
@ -1332,17 +1269,11 @@ SWITCH_STANDARD_APP(record_session_function)
|
|||||||
*p++ = '\0';
|
*p++ = '\0';
|
||||||
limit = atoi(p);
|
limit = atoi(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_ivr_record_session(session, path, limit, NULL);
|
switch_ivr_record_session(session, path, limit, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_STANDARD_APP(stop_record_session_function)
|
SWITCH_STANDARD_APP(stop_record_session_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *channel;
|
|
||||||
channel = switch_core_session_get_channel(session);
|
|
||||||
assert(channel != NULL);
|
|
||||||
|
|
||||||
switch_ivr_stop_record_session(session, data);
|
switch_ivr_stop_record_session(session, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1352,20 +1283,19 @@ SWITCH_STANDARD_APP(stop_record_session_function)
|
|||||||
|
|
||||||
SWITCH_STANDARD_APP(audio_bridge_function)
|
SWITCH_STANDARD_APP(audio_bridge_function)
|
||||||
{
|
{
|
||||||
switch_channel_t *caller_channel;
|
switch_channel_t *caller_channel = switch_core_session_get_channel(session);
|
||||||
switch_core_session_t *peer_session = NULL;
|
switch_core_session_t *peer_session = NULL;
|
||||||
unsigned int timelimit = 60;
|
unsigned int timelimit = 60;
|
||||||
const char *var, *continue_on_fail = NULL;
|
const char *var, *continue_on_fail = NULL;
|
||||||
uint8_t no_media_bridge = 0;
|
uint8_t no_media_bridge = 0;
|
||||||
switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
|
switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
|
||||||
|
|
||||||
|
assert(caller_channel != NULL);
|
||||||
|
|
||||||
if (switch_strlen_zero(data)) {
|
if (switch_strlen_zero(data)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
caller_channel = switch_core_session_get_channel(session);
|
|
||||||
assert(caller_channel != NULL);
|
|
||||||
|
|
||||||
if ((var = switch_channel_get_variable(caller_channel, "call_timeout"))) {
|
if ((var = switch_channel_get_variable(caller_channel, "call_timeout"))) {
|
||||||
timelimit = atoi(var);
|
timelimit = atoi(var);
|
||||||
}
|
}
|
||||||
@ -1453,8 +1383,6 @@ SWITCH_STANDARD_APP(audio_bridge_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* fake chan_user */
|
/* fake chan_user */
|
||||||
switch_endpoint_interface_t *user_endpoint_interface;
|
switch_endpoint_interface_t *user_endpoint_interface;
|
||||||
static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
||||||
@ -1479,6 +1407,10 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
unsigned int timelimit = 60;
|
unsigned int timelimit = 60;
|
||||||
switch_channel_t *new_channel = NULL;
|
switch_channel_t *new_channel = NULL;
|
||||||
|
|
||||||
|
if (switch_strlen_zero(outbound_profile->destination_number)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
user = switch_core_session_strdup(session, outbound_profile->destination_number);
|
user = switch_core_session_strdup(session, outbound_profile->destination_number);
|
||||||
|
|
||||||
if (!(domain = strchr(user, '@'))) {
|
if (!(domain = strchr(user, '@'))) {
|
||||||
@ -1501,7 +1433,6 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
dest = val;
|
dest = val;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1514,7 +1445,6 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
dest = val;
|
dest = val;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1551,7 +1481,6 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
cp->context = switch_core_strdup(cp->pool, context);
|
cp->context = switch_core_strdup(cp->pool, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_core_session_rwunlock(*new_session);
|
switch_core_session_rwunlock(*new_session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1576,7 +1505,6 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
switch_channel_set_variable(new_channel, var, val);
|
switch_channel_set_variable(new_channel, var, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xml) {
|
if (xml) {
|
||||||
@ -1585,10 +1513,8 @@ static switch_call_cause_t user_outgoing_channel(switch_core_session_t *session,
|
|||||||
|
|
||||||
|
|
||||||
return cause;
|
return cause;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define SPEAK_DESC "Speak text to a channel via the tts interface"
|
#define SPEAK_DESC "Speak text to a channel via the tts interface"
|
||||||
#define DISPLACE_DESC "Displace audio from a file to the channels input"
|
#define DISPLACE_DESC "Displace audio from a file to the channels input"
|
||||||
#define SESS_REC_DESC "Starts a background recording of the entire session"
|
#define SESS_REC_DESC "Starts a background recording of the entire session"
|
||||||
@ -1616,7 +1542,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load)
|
|||||||
user_endpoint_interface->interface_name = "USER";
|
user_endpoint_interface->interface_name = "USER";
|
||||||
user_endpoint_interface->io_routines = &user_io_routines;
|
user_endpoint_interface->io_routines = &user_io_routines;
|
||||||
|
|
||||||
|
|
||||||
SWITCH_ADD_API(api_interface, "strepoch", "Convert a date string into epoch time", strepoch_api_function, "<string>");
|
SWITCH_ADD_API(api_interface, "strepoch", "Convert a date string into epoch time", strepoch_api_function, "<string>");
|
||||||
SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "<proto>|<from>|<to>|<message>");
|
SWITCH_ADD_API(api_interface, "chat", "chat", chat_api_function, "<proto>|<from>|<to>|<message>");
|
||||||
SWITCH_ADD_API(api_interface, "strftime", "strftime", strftime_api_function, "<format_string>");
|
SWITCH_ADD_API(api_interface, "strftime", "strftime", strftime_api_function, "<format_string>");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user