ami: Add AMI event for Wink
Adds an AMI event for a wink frame. ASTERISK-29830 #close Change-Id: I83e426de5e37baed79a4dbcc91e9e8d030ef1b56
This commit is contained in:
parent
1c2f311ba3
commit
f133ae6ca2
|
@ -54,6 +54,7 @@
|
|||
; decline=ast_channel_dtmf_begin_type
|
||||
; decline=ast_channel_dtmf_end_type
|
||||
; decline=ast_channel_flash_type
|
||||
; decline=ast_channel_wink_type
|
||||
; decline=ast_channel_hold_type
|
||||
; decline=ast_channel_unhold_type
|
||||
; decline=ast_channel_chanspy_start_type
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Subject: ami
|
||||
|
||||
An AMI event now exists for "Wink".
|
|
@ -528,6 +528,13 @@ struct stasis_message_type *ast_channel_dtmf_end_type(void);
|
|||
*/
|
||||
struct stasis_message_type *ast_channel_flash_type(void);
|
||||
|
||||
/*!
|
||||
* \brief Message type for when a wink occurs on a channel.
|
||||
*
|
||||
* \return A stasis message type
|
||||
*/
|
||||
struct stasis_message_type *ast_channel_wink_type(void);
|
||||
|
||||
/*!
|
||||
* \since 12
|
||||
* \brief Message type for when a channel is placed on hold.
|
||||
|
|
|
@ -3405,6 +3405,11 @@ static void send_flash_event(struct ast_channel *chan)
|
|||
ast_channel_publish_blob(chan, ast_channel_flash_type(), NULL);
|
||||
}
|
||||
|
||||
static void send_wink_event(struct ast_channel *chan)
|
||||
{
|
||||
ast_channel_publish_blob(chan, ast_channel_wink_type(), NULL);
|
||||
}
|
||||
|
||||
static void ast_read_generator_actions(struct ast_channel *chan, struct ast_frame *f)
|
||||
{
|
||||
struct ast_generator *generator;
|
||||
|
@ -3873,6 +3878,8 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio, int
|
|||
f = &ast_null_frame;
|
||||
} else if (f->subclass.integer == AST_CONTROL_FLASH) {
|
||||
send_flash_event(chan);
|
||||
} else if (f->subclass.integer == AST_CONTROL_WINK) {
|
||||
send_wink_event(chan);
|
||||
}
|
||||
break;
|
||||
case AST_FRAME_DTMF_END:
|
||||
|
|
|
@ -1000,6 +1000,34 @@ static void channel_flash_cb(void *data, struct stasis_subscription *sub,
|
|||
ast_free(channel_event_string);
|
||||
}
|
||||
|
||||
static void channel_wink_cb(void *data, struct stasis_subscription *sub,
|
||||
struct stasis_message *message)
|
||||
{
|
||||
struct ast_channel_blob *obj = stasis_message_data(message);
|
||||
struct ast_str *channel_event_string;
|
||||
|
||||
channel_event_string = ast_manager_build_channel_state_string(obj->snapshot);
|
||||
if (!channel_event_string) {
|
||||
return;
|
||||
}
|
||||
|
||||
/*** DOCUMENTATION
|
||||
<managerEvent language="en_US" name="Wink">
|
||||
<managerEventInstance class="EVENT_FLAG_CALL">
|
||||
<synopsis>Raised when a wink occurs on a channel.</synopsis>
|
||||
<syntax>
|
||||
<channel_snapshot/>
|
||||
</syntax>
|
||||
</managerEventInstance>
|
||||
</managerEvent>
|
||||
***/
|
||||
manager_event(EVENT_FLAG_CALL, "Wink",
|
||||
"%s",
|
||||
ast_str_buffer(channel_event_string));
|
||||
|
||||
ast_free(channel_event_string);
|
||||
}
|
||||
|
||||
static void channel_hangup_handler_cb(void *data, struct stasis_subscription *sub,
|
||||
struct stasis_message *message)
|
||||
{
|
||||
|
@ -1362,6 +1390,9 @@ int manager_channels_init(void)
|
|||
ret |= stasis_message_router_add(message_router,
|
||||
ast_channel_flash_type(), channel_flash_cb, NULL);
|
||||
|
||||
ret |= stasis_message_router_add(message_router,
|
||||
ast_channel_wink_type(), channel_wink_cb, NULL);
|
||||
|
||||
ret |= stasis_message_router_add(message_router,
|
||||
ast_channel_hangup_request_type(), channel_hangup_request_cb,
|
||||
NULL);
|
||||
|
|
|
@ -121,6 +121,7 @@
|
|||
<enum name="ast_channel_dtmf_begin_type" />
|
||||
<enum name="ast_channel_dtmf_end_type" />
|
||||
<enum name="ast_channel_flash_type" />
|
||||
<enum name="ast_channel_wink_type" />
|
||||
<enum name="ast_channel_hold_type" />
|
||||
<enum name="ast_channel_unhold_type" />
|
||||
<enum name="ast_channel_chanspy_start_type" />
|
||||
|
|
|
@ -1599,6 +1599,7 @@ STASIS_MESSAGE_TYPE_DEFN(ast_channel_unhold_type,
|
|||
.to_json = unhold_to_json,
|
||||
);
|
||||
STASIS_MESSAGE_TYPE_DEFN(ast_channel_flash_type);
|
||||
STASIS_MESSAGE_TYPE_DEFN(ast_channel_wink_type);
|
||||
STASIS_MESSAGE_TYPE_DEFN(ast_channel_chanspy_start_type);
|
||||
STASIS_MESSAGE_TYPE_DEFN(ast_channel_chanspy_stop_type);
|
||||
STASIS_MESSAGE_TYPE_DEFN(ast_channel_fax_type);
|
||||
|
@ -1644,6 +1645,7 @@ static void stasis_channels_cleanup(void)
|
|||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_dtmf_begin_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_dtmf_end_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_flash_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_wink_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_hold_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_unhold_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_channel_chanspy_start_type);
|
||||
|
@ -1698,6 +1700,7 @@ int ast_stasis_channels_init(void)
|
|||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_dtmf_begin_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_dtmf_end_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_flash_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_wink_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_hold_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_unhold_type);
|
||||
res |= STASIS_MESSAGE_TYPE_INIT(ast_channel_chanspy_start_type);
|
||||
|
|
Loading…
Reference in New Issue