diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 0b3bfbb485..bdbf219957 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -945,6 +945,9 @@ typedef enum { SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE, SWITCH_MESSAGE_INDICATE_STUN_ERROR, SWITCH_MESSAGE_INDICATE_MEDIA_RENEG, + SWITCH_MESSAGE_ANSWER_EVENT, + SWITCH_MESSAGE_PROGRESS_EVENT, + SWITCH_MESSAGE_RING_EVENT, SWITCH_MESSAGE_INVALID } switch_core_session_message_types_t; diff --git a/src/switch_channel.c b/src/switch_channel.c index fc52c74884..be9e31b1d8 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -3139,6 +3139,16 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_hangup(switch_chan return channel->state; } +static switch_status_t send_ind(switch_channel_t *channel, switch_core_session_message_types_t msg_id, const char *file, const char *func, int line) +{ + switch_core_session_message_t msg = { 0 }; + + msg.message_id = msg_id; + msg.from = channel->name; + return switch_core_session_perform_receive_message(channel->session, &msg, file, func, line); +} + + SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(switch_channel_t *channel, switch_ring_ready_t rv, const char *file, const char *func, int line) @@ -3178,6 +3188,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready_value(swi switch_channel_set_callstate(channel, CCS_RINGING); + send_ind(channel, SWITCH_MESSAGE_RING_EVENT, file, func, line); + return SWITCH_STATUS_SUCCESS; } @@ -3302,6 +3314,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_pre_answered(switch_ switch_channel_set_callstate(channel, CCS_EARLY); + send_ind(channel, SWITCH_MESSAGE_PROGRESS_EVENT, file, func, line); + return SWITCH_STATUS_SUCCESS; } @@ -3579,6 +3593,9 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_answered(switch_chan switch_channel_set_callstate(channel, CCS_ACTIVE); + send_ind(channel, SWITCH_MESSAGE_ANSWER_EVENT, file, func, line); + + return SWITCH_STATUS_SUCCESS; }