mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
Migrate a large number of AMI events over to Stasis-Core
This patch moves a number of AMI events over to the Stasis-Core message bus. This includes: * ChanSpyStart/Stop * MonitorStart/Stop * MusicOnHoldStart/Stop * FullyBooted/Reload * All Voicemail/MWI related events In addition, it adds some Stasis-Core and AMI support for generic AMI messages, refactors the message router in AMI to use a single router with topic forwarding for the topics that AMI cares about, and refactors MWI message types and topics to be more name compliant. Review: https://reviewboard.asterisk.org/r/2532 (closes issue ASTERISK-21462) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389733 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -43,7 +43,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
#include "asterisk/app.h"
|
||||
#include "asterisk/dsp.h"
|
||||
#include "asterisk/module.h"
|
||||
#include "asterisk/manager.h"
|
||||
#include "asterisk/stasis.h"
|
||||
#include "asterisk/stasis_channels.h"
|
||||
|
||||
/*** DOCUMENTATION
|
||||
<application name="SendFAX" language="en_US" module="app_fax">
|
||||
@@ -202,6 +203,9 @@ static int t38_tx_packet_handler(t38_core_state_t *s, void *user_data, const uin
|
||||
|
||||
static void phase_e_handler(t30_state_t *f, void *user_data, int result)
|
||||
{
|
||||
RAII_VAR(struct ast_json *, json_object, NULL, ast_json_unref);
|
||||
RAII_VAR(struct ast_json *, json_filenames, NULL, ast_json_unref);
|
||||
RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup);
|
||||
const char *local_ident;
|
||||
const char *far_ident;
|
||||
char buf[20];
|
||||
@@ -251,32 +255,24 @@ static void phase_e_handler(t30_state_t *f, void *user_data, int result)
|
||||
ast_debug(1, " Image resolution: %d x %d\n", stat.x_resolution, stat.y_resolution);
|
||||
ast_debug(1, " Transfer Rate: %d\n", stat.bit_rate);
|
||||
|
||||
ast_manager_event(s->chan, EVENT_FLAG_CALL,
|
||||
s->direction ? "FaxSent" : "FaxReceived",
|
||||
"Channel: %s\r\n"
|
||||
"Exten: %s\r\n"
|
||||
"CallerID: %s\r\n"
|
||||
"CallerIDName: %s\r\n"
|
||||
"ConnectedLineNum: %s\r\n"
|
||||
"ConnectedLineName: %s\r\n"
|
||||
"RemoteStationID: %s\r\n"
|
||||
"LocalStationID: %s\r\n"
|
||||
"PagesTransferred: %d\r\n"
|
||||
"Resolution: %d\r\n"
|
||||
"TransferRate: %d\r\n"
|
||||
"FileName: %s\r\n",
|
||||
ast_channel_name(s->chan),
|
||||
ast_channel_exten(s->chan),
|
||||
S_COR(ast_channel_caller(s->chan)->id.number.valid, ast_channel_caller(s->chan)->id.number.str, ""),
|
||||
S_COR(ast_channel_caller(s->chan)->id.name.valid, ast_channel_caller(s->chan)->id.name.str, ""),
|
||||
S_COR(ast_channel_connected(s->chan)->id.number.valid, ast_channel_connected(s->chan)->id.number.str, ""),
|
||||
S_COR(ast_channel_connected(s->chan)->id.name.valid, ast_channel_connected(s->chan)->id.name.str, ""),
|
||||
far_ident,
|
||||
local_ident,
|
||||
pages_transferred,
|
||||
stat.y_resolution,
|
||||
stat.bit_rate,
|
||||
s->file_name);
|
||||
json_filenames = ast_json_pack("[s]", s->file_name);
|
||||
if (!json_filenames) {
|
||||
return;
|
||||
}
|
||||
ast_json_ref(json_filenames);
|
||||
json_object = ast_json_pack("{s: s, s: s, s: s, s: i, s: i, s: i, s: o}",
|
||||
"type", s->direction ? "send" : "receive",
|
||||
"remote_station_id", far_ident,
|
||||
"local_station_id", local_ident,
|
||||
"fax_pages", pages_transferred,
|
||||
"fax_resolution", stat.y_resolution,
|
||||
"fax_bitrate", stat.bit_rate,
|
||||
"filenames", json_filenames);
|
||||
message = ast_channel_cached_blob_create(s->chan, ast_channel_fax_type(), json_object);
|
||||
if (!message) {
|
||||
return;
|
||||
}
|
||||
stasis_publish(ast_channel_topic(s->chan), message);
|
||||
}
|
||||
|
||||
/* === Helper functions to configure fax === */
|
||||
|
Reference in New Issue
Block a user