SWITCH_DECLARE(void) CoreSession::waitForAnswer(CoreSession *calling_session) { this_check_void(); sanity_check_noreturn; switch_ivr_wait_for_answer(calling_session ? calling_session->session : NULL, session); }
SWITCH_DECLARE(void) CoreSession::setEventData(Event *e) { this_check_void(); sanity_check_noreturn; if (channel && e->event) { switch_channel_event_set_data(channel, e->event); } }
SWITCH_DECLARE(void) CoreSession::set_tts_parms(char *tts_name_p, char *voice_name_p) { this_check_void(); sanity_check_noreturn; switch_safe_free(tts_name); switch_safe_free(voice_name); tts_name = strdup(tts_name_p); voice_name = strdup(voice_name_p); }
SWITCH_DECLARE(void) CoreSession::execute(const char *app, const char *data) { this_check_void(); sanity_check_noreturn; begin_allow_threads(); switch_core_session_execute_application(session, app, data); end_allow_threads(); }
SWITCH_DECLARE(void) CoreSession::hangup(const char *cause) { this_check_void(); sanity_check_noreturn; switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "CoreSession::hangup\n"); this->begin_allow_threads(); switch_channel_hangup(channel, switch_channel_str2cause(cause)); this->end_allow_threads(); }
SWITCH_DECLARE(void) CoreSession::set_tts_parms(char *tts_name_p, char *voice_name_p) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "set_tts_parms is deprecated. Use set_tts_params.\n"); this_check_void(); sanity_check_noreturn; switch_safe_free(tts_name); switch_safe_free(voice_name); tts_name = strdup(tts_name_p); voice_name = strdup(voice_name_p); }
SWITCH_DECLARE(void) CoreSession::sendEvent(Event *sendME) { this_check_void(); sanity_check_noreturn; if (sendME->event) { switch_event_t *new_event; if (switch_event_dup(&new_event, sendME->event) == SWITCH_STATUS_SUCCESS) { switch_core_session_receive_event(session, &new_event); } } }
SWITCH_DECLARE(void) CoreSession::say(const char *tosay, const char *module_name, const char *say_type, const char *say_method, const char *say_gender) { this_check_void(); sanity_check_noreturn; if (!(tosay && module_name && say_type && say_method)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! invalid args.\n"); return; } begin_allow_threads(); switch_ivr_say(session, tosay, module_name, say_type, say_method, say_gender, ap); end_allow_threads(); }
SWITCH_DECLARE(void) IVRMenu::bindAction(char *action, const char *arg, const char *bind) { switch_ivr_action_t ivr_action = SWITCH_IVR_ACTION_NOOP; this_check_void(); if (switch_ivr_menu_str2action(action, &ivr_action) == SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "bind %s to %s(%s)\n", bind, action, arg); switch_ivr_menu_bind_action(menu, ivr_action, arg, bind); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid action %s\n", action); } }
SWITCH_DECLARE(void) CoreSession::setHangupHook(void *hangup_func) { this_check_void(); sanity_check_noreturn; switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "CoreSession::seHangupHook, hangup_func: %p\n", hangup_func); on_hangup = hangup_func; switch_channel_t *channel = switch_core_session_get_channel(session); hook_state = switch_channel_get_state(channel); switch_channel_set_private(channel, "CoreSession", this); switch_core_event_hook_add_state_change(session, hanguphook); }
SWITCH_DECLARE(void) CoreSession::execute(const char *app, const char *data) { this_check_void(); sanity_check_noreturn; if (zstr(app)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No application specified\n"); return; } begin_allow_threads(); switch_core_session_execute_application(session, app, data); end_allow_threads(); }
SWITCH_DECLARE(void) CoreSession::sayPhrase(const char *phrase_name, const char *phrase_data, const char *phrase_lang) { this_check_void(); sanity_check_noreturn; if (!(phrase_name)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error! invalid args.\n"); return; } begin_allow_threads(); switch_ivr_phrase_macro(session, phrase_name, phrase_data, phrase_lang, ap); end_allow_threads(); }
SWITCH_DECLARE(void) CoreSession::setDTMFCallback(void *cbfunc, char *funcargs) { this_check_void(); sanity_check_noreturn; cb_state.funcargs = funcargs; cb_state.function = cbfunc; args.buf = &cb_state; args.buflen = sizeof(cb_state); // not sure what this is used for, copy mod_spidermonkey switch_channel_set_private(channel, "CoreSession", this); // we cannot set the actual callback to a python function, because // the callback is a function pointer with a specific signature. // so, set it to the following c function which will act as a proxy, // finding the python callback in the args callback args structure args.input_callback = dtmf_callback; ap = &args; }
SWITCH_DECLARE(void) CoreSession::destroy(void) { this_check_void(); if (!allocated) { return; } allocated = 0; switch_safe_free(xml_cdr_text); switch_safe_free(uuid); switch_safe_free(tts_name); switch_safe_free(voice_name); if (session) { if (!channel) { channel = switch_core_session_get_channel(session); } if (channel) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s destroy/unlink session from object\n", switch_channel_get_name(channel)); switch_channel_set_private(channel, "CoreSession", NULL); if (switch_channel_up(channel) && switch_test_flag(this, S_HUP) && !switch_channel_test_flag(channel, CF_TRANSFER)) { switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); } } switch_core_session_rwunlock(session); session = NULL; channel = NULL; } init_vars(); }
SWITCH_DECLARE(void) Stream::raw_write(const char *data, int len) { this_check_void(); stream_p->raw_write_function(stream_p, (uint8_t *)data, len); }
SWITCH_DECLARE(void) IVRMenu::execute(CoreSession *session, const char *name) { this_check_void(); switch_ivr_menu_execute(session->session, menu, (char *)name, NULL); }
SWITCH_DECLARE(void) Stream::write(const char *data) { this_check_void(); stream_p->write_function(stream_p, "%s", data); }
SWITCH_DECLARE_CONSTRUCTOR CoreSession::~CoreSession() { this_check_void(); if (allocated) destroy(); }
SWITCH_DECLARE(void) CoreSession::setPrivate(char *var, void *val) { this_check_void(); sanity_check_noreturn; switch_channel_set_private(channel, var, val); }
SWITCH_DECLARE(void) CoreSession::setVariable(char *var, char *val) { this_check_void(); sanity_check_noreturn; switch_channel_set_variable(channel, var, val); }