#include <switch.h>
static const char modname[] = "mod_commands";
+static switch_api_interface_t ctl_api_interface;
+static switch_api_interface_t uuid_bridge_api_interface;
+static switch_api_interface_t status_api_interface;
+static switch_api_interface_t show_api_interface;
+static switch_api_interface_t pause_api_interface;
+static switch_api_interface_t transfer_api_interface;
+static switch_api_interface_t load_api_interface;
+static switch_api_interface_t reload_api_interface;
+static switch_api_interface_t kill_api_interface;
+static switch_api_interface_t originate_api_interface;
static switch_status_t status_function(char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream)
{
uint32_t arg = 0;
if (switch_strlen_zero(data)) {
- stream->write_function(stream, "USAGE: fsctl [hupall|pause|resume|shutdown]\n");
+ stream->write_function(stream, "USAGE: %s\n", ctl_api_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
return SWITCH_STATUS_FALSE;
}
if (switch_strlen_zero(mod)) {
- stream->write_function(stream, "USAGE: load <mod_name>\n");
+ stream->write_function(stream, "USAGE: %s\n", load_api_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
switch_loadable_module_load_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) mod);
}
if (!dest) {
- stream->write_function(stream, "USAGE: killchan <uuid>\n");
+ stream->write_function(stream, "USAGE: %s\n", kill_api_interface.syntax);
} else if ((session = switch_core_session_locate(dest))) {
switch_channel_t *channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
if (argc < 2 || argc > 4) {
- stream->write_function(stream, "USAGE: transfer <uuid> <dest-exten> [<dialplan>] [<context>]\n");
+ stream->write_function(stream, "USAGE: %s\n", transfer_api_interface.syntax);
} else {
char *uuid = argv[0];
char *dest = argv[1];
argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
if (argc != 2) {
- stream->write_function(stream, "Invalid Parameters\nUSAGE: uuid_bridge <uuid> <other_uuid>\n");
+ stream->write_function(stream, "USAGE: %s\n", uuid_bridge_api_interface.syntax);
} else {
if (switch_ivr_uuid_bridge(argv[0], argv[1]) != SWITCH_STATUS_SUCCESS) {
stream->write_function(stream, "Invalid uuid\n");
argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
if (argc < 2) {
- stream->write_function(stream, "USAGE: pause <uuid> <on|off>\n");
+ stream->write_function(stream, "USAGE: %s\n", pause_api_interface.syntax);
} else {
char *uuid = argv[0];
char *dest = argv[1];
return SWITCH_STATUS_SUCCESS;
}
+ argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+
if (switch_strlen_zero(cmd) || argc < 2 || argc > 7) {
- stream->write_function(stream, "USAGE: originate <call url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]\n");
+ stream->write_function(stream, "USAGE: %s\n", originate_api_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
- argc = switch_separate_string(cmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-
for(x = 0; x < argc; x++) {
if (!strcasecmp(argv[x], "undef")) {
argv[x] = NULL;
timeout = atoi(argv[6]);
}
- if (!aleg || !exten) {
- stream->write_function(stream, "Invalid Arguements\n");
- return SWITCH_STATUS_SUCCESS;
- }
-
if (switch_ivr_originate(NULL, &caller_session, &cause, aleg, timeout, &noop_state_handler, cid_name, cid_num, NULL) != SWITCH_STATUS_SUCCESS) {
stream->write_function(stream, "Cannot Create Outgoing Channel! [%s]\n", aleg);
return SWITCH_STATUS_SUCCESS;
assert(caller_channel != NULL);
switch_channel_clear_state_handler(caller_channel, NULL);
-
if (*exten == '&') {
switch_caller_extension_t *extension = NULL;
char *app_name = switch_core_session_strdup(caller_session, (exten + 1));
sprintf (sql, "select * from channels");
}
else {
- stream->write_function(stream, "Invalid interfaces type!\n");
- stream->write_function(stream, "USAGE:\n");
- stream->write_function(stream, "show <blank>|codec|application|api|dialplan|file|timer|calls|channels\n");
+ stream->write_function(stream, "USAGE: %s\n", show_api_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
/*.interface_name */ "fsctl",
/*.desc */ "control messages",
/*.function */ ctl_function,
- /*.syntax */ NULL,
+ /*.syntax */ "fsctl [hupall|pause|resume|shutdown]",
/*.next */
};
/*.interface_name */ "uuid_bridge",
/*.desc */ "uuid_bridge",
/*.function */ uuid_bridge_function,
- /*.syntax */ NULL,
+ /*.syntax */ "uuid_bridge <uuid> <other_uuid>",
/*.next */ &ctl_api_interface
};
/*.interface_name */ "status",
/*.desc */ "status",
/*.function */ status_function,
- /*.syntax */ NULL,
+ /*.syntax */ "status",
/*.next */ &uuid_bridge_api_interface
};
/*.interface_name */ "show",
/*.desc */ "Show",
/*.function */ show_function,
- /*.syntax */ NULL,
+ /*.syntax */ "show <blank>|codec|application|api|dialplan|file|timer|calls|channels",
/*.next */ &status_api_interface
};
/*.interface_name */ "pause",
/*.desc */ "Pause",
/*.function */ pause_function,
- /*.syntax */ NULL,
+ /*.syntax */ "pause <uuid> <on|off>",
/*.next */ &show_api_interface
};
/*.interface_name */ "transfer",
/*.desc */ "Transfer",
/*.function */ transfer_function,
- /*.syntax */ NULL,
+ /*.syntax */ "transfer <uuid> <dest-exten> [<dialplan>] [<context>]",
/*.next */ &pause_api_interface
};
/*.interface_name */ "load",
/*.desc */ "Load Module",
/*.function */ load_function,
- /*.syntax */ NULL,
+ /*.syntax */ "load <mod_name>",
/*.next */ &transfer_api_interface
};
/*.interface_name */ "reloadxml",
/*.desc */ "Reload XML",
/*.function */ reload_function,
- /*.syntax */ NULL,
+ /*.syntax */ "reloadxml",
/*.next */ &load_api_interface,
};
-static switch_api_interface_t commands_api_interface = {
+static switch_api_interface_t kill_api_interface = {
/*.interface_name */ "killchan",
/*.desc */ "Kill Channel",
/*.function */ kill_function,
- /*.syntax */ NULL,
+ /*.syntax */ "killchan <uuid>",
/*.next */ &reload_api_interface
};
/*.interface_name */ "originate",
/*.desc */ "Originate a Call",
/*.function */ originate_function,
- /*.syntax */ NULL,
- /*.next */ &commands_api_interface
+ /*.syntax */ "originate <call url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]",
+ /*.next */ &kill_api_interface
};
static const char modname[] = "mod_conference";
static const char global_app_name[] = "conference";
static char *global_cf_name = "conference.conf";
+static switch_api_interface_t conf_api_interface;
/* Size to allocate for audio buffers */
#define CONF_BUFFER_SIZE 1024 * 128
char *lbuf = NULL;
switch_status_t status = SWITCH_STATUS_SUCCESS;
char *http = NULL;
- char *topusage = "Available Commands:\n"
- "--------------------------------------------------------------------------------\n"
- "conference commands\n"
- "conference list [delim <string>]\n"
- "conference <confname> list [delim <string>]\n"
- "conference <confname> energy <member_id> [<newval>]\n"
- "conference <confname> volume_in <member_id> [<newval>]\n"
- "conference <confname> volume_out <member_id> [<newval>]\n"
- "conference <confname> play <file_path> [<member_id>]\n"
- "conference <confname> say <text>\n"
- "conference <confname> saymember <member_id><text>\n"
- "conference <confname> stop <[current|all]> [<member_id>]\n"
- "conference <confname> kick <member_id>\n"
- "conference <confname> mute <member_id>\n"
- "conference <confname> unmute <member_id>\n"
- "conference <confname> deaf <member_id>\n"
- "conference <confname> undef <member_id>\n"
- "conference <confname> relate <member_id> <other_member_id> [nospeak|nohear]\n"
- "conference <confname> lock\n"
- "conference <confname> unlock\n"
- "conference <confname> dial <endpoint_module_name>/<destination>\n"
- "conference <confname> transfer <member_id> <conference_name>\n"
- ;
if (session) {
return SWITCH_STATUS_FALSE;
}
if (!buf) {
- stream->write_function(stream, topusage);
+ stream->write_function(stream, "%s", conf_api_interface.syntax);
return status;
}
/* Figure out what conference */
if (argc) {
if (!strcasecmp(argv[0], "commands")) {
- stream->write_function(stream, topusage);
+ stream->write_function(stream, "%s", conf_api_interface.syntax);
goto done;
} else if (!strcasecmp(argv[0], "list")) {
switch_hash_index_t *hi;
goto done;
}
} else {
- stream->write_function(stream, topusage);
+ stream->write_function(stream, "USAGE: %s\n", conf_api_interface.syntax);
}
} else {
stream->write_function(stream, "Memory Error!\n");
/*.interface_name */ "conference",
/*.desc */ "Conference",
/*.function */ conf_function,
- /*.syntax */ NULL,
+ /*.syntax */
+ "conference commands\n"
+ "conference list [delim <string>]\n"
+ "conference <confname> list [delim <string>]\n"
+ "conference <confname> energy <member_id> [<newval>]\n"
+ "conference <confname> volume_in <member_id> [<newval>]\n"
+ "conference <confname> volume_out <member_id> [<newval>]\n"
+ "conference <confname> play <file_path> [<member_id>]\n"
+ "conference <confname> say <text>\n"
+ "conference <confname> saymember <member_id><text>\n"
+ "conference <confname> stop <[current|all]> [<member_id>]\n"
+ "conference <confname> kick <member_id>\n"
+ "conference <confname> mute <member_id>\n"
+ "conference <confname> unmute <member_id>\n"
+ "conference <confname> deaf <member_id>\n"
+ "conference <confname> undef <member_id>\n"
+ "conference <confname> relate <member_id> <other_member_id> [nospeak|nohear]\n"
+ "conference <confname> lock\n"
+ "conference <confname> unlock\n"
+ "conference <confname> dial <endpoint_module_name>/<destination>\n"
+ "conference <confname> transfer <member_id> <conference_name>\n",
/*.next */
};
static const char modname[] = "mod_dptools";
-
static void transfer_function(switch_core_session_t *session, char *data)
{
int argc;
/*.interface_name */ "strftime",
/*.desc */ "strftime",
/*.function */ strftime_api_function,
- /*.syntax */ NULL,
+ /*.syntax */ "strftime <format_string>",
/*.next */ NULL
};
/*.interface_name */ "dl_logout",
/*.desc */ "DingaLing Logout",
/*.function */ dl_logout,
- /*.syntax */ NULL,
+ /*.syntax */ "dl_logout <profile_name>",
/*.next */ NULL
};
/*.interface_name */ "dl_login",
/*.desc */ "DingaLing Login",
/*.function */ dl_login,
- /*.syntax */ NULL,
+ /*.syntax */ "dl_login <profile_name>",
/*.next */ &logout_api_interface
};
}
if (!profile_name) {
- stream->write_function(stream, "NO PROFILE NAME SPECIFIED\n");
+ stream->write_function(stream, "USAGE: %s\n", logout_api_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
return SWITCH_STATUS_FALSE;
}
- if (switch_strlen_zero(arg)) {
- stream->write_function(stream, "FAIL\n");
- return SWITCH_STATUS_SUCCESS;
- }
-
myarg = strdup(arg);
argc = switch_separate_string(myarg, ';', argv, (sizeof(argv) / sizeof(argv[0])));
+ if (switch_strlen_zero(arg) || argc != 1) {
+ stream->write_function(stream, "USAGE: %s\n", login_api_interface.syntax);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
if (!strncasecmp(argv[0], "profile=", 8)) {
char *profile_name = argv[0] + 8;
profile = switch_core_hash_find(globals.profile_hash, profile_name);
/*.interface_name */ "padtmf",
/*.desc */ "PortAudio Dial DTMF",
/*.function */ send_dtmf,
- /*.syntax */ NULL,
+ /*.syntax */ "padtmf <callid> <dtmf_digits>",
/*.next */ NULL
};
/*.interface_name */ "paoffhook",
/*.desc */ "PortAudio Answer Call",
/*.function */ answer_call,
- /*.syntax */ NULL,
+ /*.syntax */ "paoffhook",
/*.next */ &send_dtmf_interface
};
/*.interface_name */ "painfo",
/*.desc */ "PortAudio Call Info",
/*.function */ call_info,
- /*.syntax */ NULL,
+ /*.syntax */ "painfo",
/*.next */ &answer_call_interface
};
/*.interface_name */ "pahup",
/*.desc */ "PortAudio Hangup Call",
/*.function */ hup_call,
- /*.syntax */ NULL,
+ /*.syntax */ "pahup [call_number]",
/*.next */ &channel_info_interface
};
/*.interface_name */ "pacall",
/*.desc */ "PortAudio Call",
/*.function */ place_call,
- /*.syntax */ NULL,
+ /*.syntax */ "pacall <exten>",
/*.next */ &channel_hup_interface
};
}
if (!dest) {
- stream->write_function(stream, "Usage: pacall <exten>");
+ stream->write_function(stream, "Usage: %s\n", channel_api_interface.syntax);
return SWITCH_STATUS_FALSE;
}
-
- stream->write_function(stream, "FAIL");
if ((session = switch_core_session_request(&channel_endpoint_interface, NULL)) != 0) {
struct private_object *tech_pvt;
switch_channel_set_state(channel, CS_INIT);
switch_core_session_thread_launch(tech_pvt->session);
stream->write_function(stream, "SUCCESS:%s:%s", tech_pvt->call_id, switch_core_session_get_uuid(tech_pvt->session));
+ } else {
+ stream->write_function(stream, "FAIL\n");
}
}
return status;
{
struct private_object *tech_pvt = NULL;
switch_channel_t *channel = NULL;
- char *dtmf;
+ char *dtmf = NULL;
if (session) {
return SWITCH_STATUS_FALSE;
}
- if ((dtmf = strchr(callid, ' ')) != 0) {
- *dtmf++ = '\0';
+ if (switch_strlen_zero(callid) || (dtmf = strchr(callid, ' ')) == 0) {
+ stream->write_function(stream, "USAGE: %s\n", send_dtmf_interface.syntax);
+ return SWITCH_STATUS_SUCCESS;
} else {
- dtmf = "";
+ *dtmf++ = '\0';
}
if ((tech_pvt = switch_core_hash_find(globals.call_hash, callid)) != 0) {
static int eval_some_js(char *code, JSContext *cx, JSObject *obj, jsval *rval);
static void session_destroy(JSContext *cx, JSObject *obj);
static JSBool session_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
+static switch_api_interface_t js_run_interface;
static struct {
size_t gStackChunkSize;
{
if (switch_strlen_zero(text)) {
- stream->write_function(stream, "INVALID");
+ stream->write_function(stream, "USAGE: %s\n", js_run_interface.syntax);
return SWITCH_STATUS_SUCCESS;
}
js_thread_launch(text);
- stream->write_function(stream, "OK");
+ stream->write_function(stream, "OK\n");
return SWITCH_STATUS_SUCCESS;
}
/*.interface_name */ "jsrun",
/*.desc */ "run a script",
/*.function */ launch_async,
- /*.syntax */ NULL,
+ /*.syntax */ "jsrun <script>",
/*.next */ NULL
};