提交 efe70a08 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix transfer

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6526 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 7cd8c8c0
...@@ -395,7 +395,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_signal_bridge(switch_core_session_t * ...@@ -395,7 +395,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_signal_bridge(switch_core_session_t *
\param dialplan the new dialplan (OPTIONAL, may be NULL) \param dialplan the new dialplan (OPTIONAL, may be NULL)
\param context the new context (OPTIONAL, may be NULL) \param context the new context (OPTIONAL, may be NULL)
*/ */
SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, const char *extension, char *dialplan, char *context); SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, const char *extension, const char *dialplan, const char *context);
/*! /*!
\brief Transfer an existing session to another location in the future \brief Transfer an existing session to another location in the future
......
...@@ -846,7 +846,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi ...@@ -846,7 +846,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi
return status; return status;
} }
SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, const char *extension, char *dialplan, char *context) SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, const char *extension, const char *dialplan, const char *context)
{ {
switch_channel_t *channel; switch_channel_t *channel;
switch_caller_profile_t *profile, *new_profile; switch_caller_profile_t *profile, *new_profile;
...@@ -864,24 +864,33 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ ...@@ -864,24 +864,33 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_
/* clear all state handlers */ /* clear all state handlers */
switch_channel_clear_state_handler(channel, NULL); switch_channel_clear_state_handler(channel, NULL);
if (switch_strlen_zero(dialplan)) { if ((profile = switch_channel_get_caller_profile(channel))) {
dialplan = "XML";
} if (switch_strlen_zero(dialplan)) {
dialplan = profile->dialplan;
}
if (switch_strlen_zero(context)) { if (switch_strlen_zero(context)) {
context = "default"; context = profile->context;
} }
if (switch_strlen_zero(extension)) { if (switch_strlen_zero(dialplan)) {
extension = "service"; dialplan = "XML";
} }
if ((profile = switch_channel_get_caller_profile(channel))) { if (switch_strlen_zero(context)) {
context = "default";
}
if (switch_strlen_zero(extension)) {
extension = "service";
}
new_profile = switch_caller_profile_clone(session, profile); new_profile = switch_caller_profile_clone(session, profile);
new_profile->dialplan = switch_core_session_strdup(session, dialplan); new_profile->dialplan = switch_core_strdup(profile->pool, dialplan);
new_profile->context = switch_core_session_strdup(session, context); new_profile->context = switch_core_strdup(profile->pool, context);
new_profile->destination_number = switch_core_session_strdup(session, extension); new_profile->destination_number = switch_core_strdup(profile->pool, extension);
switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论