a little re-work in preparation for being able to outdial from a conference that does not yet exist.

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4287 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Michael Jerris 2007-02-15 17:28:09 +00:00
parent d484b87343
commit 671259959b
1 changed files with 42 additions and 4 deletions

View File

@ -2937,10 +2937,11 @@ static switch_status_t conf_api_sub_dial(conference_obj_t *conference, switch_st
{ {
switch_status_t ret_status = SWITCH_STATUS_SUCCESS; switch_status_t ret_status = SWITCH_STATUS_SUCCESS;
assert(conference != NULL);
assert(stream != NULL); assert(stream != NULL);
if (argc > 2) { if(!conference) {
stream->write_function(stream, "Conference %s not found\n", argv[0]);
} else if (argc > 2) {
switch_call_cause_t cause; switch_call_cause_t cause;
conference_outcall(conference, NULL, argv[2], 60, NULL, argv[4], argv[3], &cause); conference_outcall(conference, NULL, argv[2], 60, NULL, argv[4], argv[3], &cause);
stream->write_function(stream, "Call Requested: result: [%s]\n", switch_channel_cause2str(cause)); stream->write_function(stream, "Call Requested: result: [%s]\n", switch_channel_cause2str(cause));
@ -2956,10 +2957,11 @@ static switch_status_t conf_api_sub_bgdial(conference_obj_t *conference, switch_
{ {
switch_status_t ret_status = SWITCH_STATUS_SUCCESS; switch_status_t ret_status = SWITCH_STATUS_SUCCESS;
assert(conference != NULL);
assert(stream != NULL); assert(stream != NULL);
if (argc > 2) { if(!conference) {
stream->write_function(stream, "Conference %s not found\n", argv[0]);
} else if (argc > 2) {
conference_outcall_bg(conference, NULL, argv[2], 60, NULL, argv[4], argv[3]); conference_outcall_bg(conference, NULL, argv[2], 60, NULL, argv[4], argv[3]);
stream->write_function(stream, "OK\n"); stream->write_function(stream, "OK\n");
} else { } else {
@ -3129,7 +3131,33 @@ static switch_status_t conf_api_sub_norecord(conference_obj_t *conference, switc
return ret_status; return ret_status;
} }
typedef enum {
CONF_API_COMMAND_LIST = 0,
CONF_API_COMMAND_ENERGY,
CONF_API_COMMAND_VOLUME_IN,
CONF_API_COMMAND_VOLUME_OUT,
CONF_API_COMMAND_PLAY,
CONF_API_COMMAND_SAY,
CONF_API_COMMAND_SAYMEMBER,
CONF_API_COMMAND_STOP,
CONF_API_COMMAND_DTMF,
CONF_API_COMMAND_KICK,
CONF_API_COMMAND_MUTE,
CONF_API_COMMAND_UNMUTE,
CONF_API_COMMAND_DEAF,
CONF_API_COMMAND_UNDEAF,
CONF_API_COMMAND_RELATE,
CONF_API_COMMAND_LOCK,
CONF_API_COMMAND_UNLOCK,
CONF_API_COMMAND_DIAL,
CONF_API_COMMAND_BGDIAL,
CONF_API_COMMAND_TRANSFER,
CONF_API_COMMAND_RECORD,
CONF_API_COMMAND_NORECORD
} api_command_type_t;
/* API Interface Function sub-commands */ /* API Interface Function sub-commands */
/* Entries in this list should be kept in sync with the enum above */
static api_command_t conf_api_sub_commands[] = { static api_command_t conf_api_sub_commands[] = {
{"list", (void_fn_t)&conf_api_sub_list, CONF_API_SUB_ARGS_SPLIT, "<confname> list [delim <string>]"}, {"list", (void_fn_t)&conf_api_sub_list, CONF_API_SUB_ARGS_SPLIT, "<confname> list [delim <string>]"},
{"energy", (void_fn_t)&conf_api_sub_energy, CONF_API_SUB_MEMBER_TARGET, "<confname> energy <member_id|all|last> [<newval>]"}, {"energy", (void_fn_t)&conf_api_sub_energy, CONF_API_SUB_MEMBER_TARGET, "<confname> energy <member_id|all|last> [<newval>]"},
@ -3323,6 +3351,16 @@ static switch_status_t conf_api_main(char *buf, switch_core_session_t *session,
conf_api_sub_list(NULL, stream, argc, argv); conf_api_sub_list(NULL, stream, argc, argv);
} else if (strcasecmp(argv[0], "help") == 0 || strcasecmp(argv[0], "commands") == 0) { } else if (strcasecmp(argv[0], "help") == 0 || strcasecmp(argv[0], "commands") == 0) {
stream->write_function(stream, "%s\n", conf_api_interface.syntax); stream->write_function(stream, "%s\n", conf_api_interface.syntax);
} else if (strcasecmp(argv[0], "dial") == 0) {
if (conf_api_sub_dial(NULL, stream, argc, argv) != SWITCH_STATUS_SUCCESS) {
/* command returned error, so show syntax usage */
stream->write_function(stream, conf_api_sub_commands[CONF_API_COMMAND_DIAL].psyntax);
}
} else if (strcasecmp(argv[0], "bgdial") == 0) {
if (conf_api_sub_bgdial(NULL, stream, argc, argv) != SWITCH_STATUS_SUCCESS) {
/* command returned error, so show syntax usage */
stream->write_function(stream, conf_api_sub_commands[CONF_API_COMMAND_BGDIAL].psyntax);
}
} else { } else {
stream->write_function(stream, "Conference %s not found\n", argv[0]); stream->write_function(stream, "Conference %s not found\n", argv[0]);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Conference %s not found\n", argv[0]); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Conference %s not found\n", argv[0]);