Asterisk - The Open Source Telephony Project
21.4.1
|
The Asterisk Management Interface - AMI (channel event handling) More...
#include "asterisk.h"
#include "asterisk/callerid.h"
#include "asterisk/channel.h"
#include "asterisk/manager.h"
#include "asterisk/stasis_message_router.h"
#include "asterisk/pbx.h"
#include "asterisk/stasis_channels.h"
Go to the source code of this file.
Typedefs | |
typedef struct ast_manager_event_blob *(* | channel_snapshot_monitor) (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
Typedef for callbacks that get called on channel snapshot updates. | |
Functions | |
struct ast_str * | ast_manager_build_channel_state_string (const struct ast_channel_snapshot *snapshot) |
Generate the AMI message body from a channel snapshot. More... | |
struct ast_str * | ast_manager_build_channel_state_string_prefix (const struct ast_channel_snapshot *snapshot, const char *prefix) |
Generate the AMI message body from a channel snapshot. More... | |
static void | channel_chanspy_start_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_chanspy_stop_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_dial_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
Callback processing messages for channel dialing. | |
static void | channel_dtmf_begin_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_dtmf_end_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_fax_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_flash_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_hangup_handler_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_hangup_request_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_hold_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_mixmonitor_mute_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_mixmonitor_start_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_mixmonitor_stop_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_moh_start_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_moh_stop_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static struct ast_manager_event_blob * | channel_new_accountcode (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
static struct ast_manager_event_blob * | channel_new_callerid (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
static struct ast_manager_event_blob * | channel_new_connected_line (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
static struct ast_manager_event_blob * | channel_newexten (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
static void | channel_snapshot_update (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static struct ast_manager_event_blob * | channel_state_change (struct ast_channel_snapshot *old_snapshot, struct ast_channel_snapshot *new_snapshot) |
Handle channel state changes. | |
static void | channel_unhold_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static void | channel_wink_cb (void *data, struct stasis_subscription *sub, struct stasis_message *message) |
static int | dial_status_end (const char *dialstatus) |
int | manager_channels_init (void) |
Initialize support for AMI channel events. More... | |
static void | manager_channels_shutdown (void) |
static void | publish_basic_channel_event (const char *event, int class, struct ast_channel_snapshot *snapshot) |
Variables | |
channel_snapshot_monitor | channel_monitors [] |
static struct stasis_forward * | topic_forwarder |
The Stasis Message Bus API subscription returned by the forwarding of the channel topic to the manager topic. | |
The Asterisk Management Interface - AMI (channel event handling)
AMI generated many per-channel and global-channel events by converting Stasis messages to AMI events. It makes sense to simply put them into a single file.
Definition in file manager_channels.c.
struct ast_str* ast_manager_build_channel_state_string | ( | const struct ast_channel_snapshot * | snapshot | ) |
Generate the AMI message body from a channel snapshot.
snapshot | the channel snapshot for which to generate an AMI message body |
NULL | on error |
Definition at line 535 of file manager_channels.c.
References ast_manager_build_channel_state_string_prefix().
Referenced by channel_dial_cb(), and mwi_app_event_cb().
struct ast_str* ast_manager_build_channel_state_string_prefix | ( | const struct ast_channel_snapshot * | snapshot, |
const char * | prefix | ||
) |
Generate the AMI message body from a channel snapshot.
snapshot | the channel snapshot for which to generate an AMI message body |
prefix | What to prepend to the channel fields |
NULL | on error |
Definition at line 461 of file manager_channels.c.
References ast_channel_snapshot_base::accountcode, AST_CHAN_TP_INTERNAL, ast_escape_c_alloc(), AST_LIST_TRAVERSE, ast_state2str(), ast_str_append(), ast_str_create, ast_str_set(), ast_channel_snapshot::base, ast_channel_snapshot::caller, ast_channel_snapshot::connected, ast_channel_snapshot_dialplan::context, ast_channel_snapshot::dialplan, ast_channel_snapshot_dialplan::exten, ast_channel_snapshot_base::language, ast_channel_snapshot_peer::linkedid, ast_channel_snapshot::manager_vars, ast_channel_snapshot_caller::name, ast_channel_snapshot_connected::name, ast_channel_snapshot_base::name, ast_channel_snapshot_caller::number, ast_channel_snapshot_connected::number, ast_channel_snapshot::peer, ast_channel_snapshot_dialplan::priority, S_OR, ast_channel_snapshot::state, ast_channel_snapshot_base::tech_properties, and ast_channel_snapshot_base::uniqueid.
Referenced by action_coreshowchannels(), ast_manager_build_channel_state_string(), channel_dial_cb(), and manager_build_parked_call_string().
int manager_channels_init | ( | void | ) |
Initialize support for AMI channel events.
0 | on success. |
non-zero | on error. |
Definition at line 1308 of file manager_channels.c.
References ast_channel_chanspy_start_type(), ast_channel_chanspy_stop_type(), ast_channel_dial_type(), ast_channel_dtmf_begin_type(), ast_channel_dtmf_end_type(), ast_channel_fax_type(), ast_channel_flash_type(), ast_channel_hangup_handler_type(), ast_channel_hangup_request_type(), ast_channel_hold_type(), ast_channel_mixmonitor_mute_type(), ast_channel_mixmonitor_start_type(), ast_channel_mixmonitor_stop_type(), ast_channel_moh_start_type(), ast_channel_moh_stop_type(), ast_channel_snapshot_type(), ast_channel_topic_all(), ast_channel_unhold_type(), ast_channel_wink_type(), ast_manager_get_message_router(), ast_manager_get_topic(), ast_register_cleanup(), channel_dial_cb(), manager_topic, stasis_forward_all(), and stasis_message_router_add().