#include "asterisk/lock.h"
#include "asterisk/app.h"
#include "asterisk/features.h"
+#include "asterisk/manager.h"
#include "asterisk/callerid.h"
#include "asterisk/cel.h"
{
int res = 0;
struct ast_party_connected_line connected_caller;
+ struct ast_channel *chans[2] = { chan, target };
ast_debug(1, "Call pickup on '%s' by '%s'\n", target->name, chan->name);
ast_cel_report_event(target, AST_CEL_PICKUP, NULL, NULL, chan);
return -1;
}
+ /* If you want UniqueIDs, set channelvars in manager.conf to CHANNEL(uniqueid) */
+ ast_manager_event_multichan(EVENT_FLAG_CALL, "Pickup", 2, chans,
+ "Channel: %s\r\nTargetChannel: %s\r\n", chan->name, target->name);
+
return res;
}
__ast_manager_event_multichan(category, event, nchans, chans, __FILE__, __LINE__, __PRETTY_FUNCTION__, contents , ## __VA_ARGS__);
/*! External routines may send asterisk manager events this way
- * \param chan1 First channel related to this event (or NULL if none are relevant)
- * \param chan2 Second channel related to this event (or NULL if none are relevant)
* \param category Event category, matches manager authorization
* \param event Event name
+ * \param chancount Number of channels in chans parameter
+ * \param chans A pointer to an array of channels involved in the event
* \param contents Format string describing event
* \since 1.8
*/
*/
int ast_pickup_call(struct ast_channel *chan)
{
- struct ast_channel *cur;
+ struct ast_channel *cur, *chans[2] = { chan, };
struct ast_party_connected_line connected_caller;
int res;
const char *chan_name;
return -1;
}
+ chans[1] = cur;
+
ast_channel_lock_both(cur, chan);
cur_name = ast_strdupa(cur->name);
ast_stream_and_wait(cur, pickupsound, "");
}
+ /* If you want UniqueIDs, set channelvars in manager.conf to CHANNEL(uniqueid) */
+ ast_manager_event_multichan(EVENT_FLAG_CALL, "Pickup", 2, chans,
+ "Channel: %s\r\nTargetChannel: %s\r\n", chan->name, cur->name);
+
cur = ast_channel_unref(cur);
return res;