@@ -1000,6 +1000,34 @@ static void channel_flash_cb(void *data, struct stasis_subscription *sub,
10001000 ast_free (channel_event_string );
10011001}
10021002
1003+ static void channel_wink_cb (void * data , struct stasis_subscription * sub ,
1004+ struct stasis_message * message )
1005+ {
1006+ struct ast_channel_blob * obj = stasis_message_data (message );
1007+ struct ast_str * channel_event_string ;
1008+
1009+ channel_event_string = ast_manager_build_channel_state_string (obj -> snapshot );
1010+ if (!channel_event_string ) {
1011+ return ;
1012+ }
1013+
1014+ /*** DOCUMENTATION
1015+ <managerEvent language="en_US" name="Wink">
1016+ <managerEventInstance class="EVENT_FLAG_CALL">
1017+ <synopsis>Raised when a wink occurs on a channel.</synopsis>
1018+ <syntax>
1019+ <channel_snapshot/>
1020+ </syntax>
1021+ </managerEventInstance>
1022+ </managerEvent>
1023+ ***/
1024+ manager_event (EVENT_FLAG_CALL , "Wink" ,
1025+ "%s" ,
1026+ ast_str_buffer (channel_event_string ));
1027+
1028+ ast_free (channel_event_string );
1029+ }
1030+
10031031static void channel_hangup_handler_cb (void * data , struct stasis_subscription * sub ,
10041032 struct stasis_message * message )
10051033{
@@ -1362,6 +1390,9 @@ int manager_channels_init(void)
13621390 ret |= stasis_message_router_add (message_router ,
13631391 ast_channel_flash_type (), channel_flash_cb , NULL );
13641392
1393+ ret |= stasis_message_router_add (message_router ,
1394+ ast_channel_wink_type (), channel_wink_cb , NULL );
1395+
13651396 ret |= stasis_message_router_add (message_router ,
13661397 ast_channel_hangup_request_type (), channel_hangup_request_cb ,
13671398 NULL );
0 commit comments