summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/Makefile1
-rw-r--r--main/aoc.c6
-rw-r--r--main/core_local.c86
-rw-r--r--main/features.c29
-rw-r--r--main/manager.c46
-rw-r--r--main/manager_bridges.c36
-rw-r--r--main/manager_channels.c212
-rw-r--r--main/manager_mwi.c2
-rw-r--r--main/rtp_engine.c4
-rw-r--r--main/stasis_bridges.c253
-rw-r--r--main/stasis_channels.c4
-rw-r--r--main/xml.c32
12 files changed, 97 insertions, 614 deletions
diff --git a/main/Makefile b/main/Makefile
index 3d37c7c75..e3ed7c5d6 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -33,6 +33,7 @@ OBJS+=stdtime/localtime.o
ASTSSL_LIBS:=$(OPENSSL_LIB)
AST_LIBS+=$(BKTR_LIB)
AST_LIBS+=$(LIBXML2_LIB)
+AST_LIBS+=$(LIBXSLT_LIB)
AST_LIBS+=$(SQLITE3_LIB)
AST_LIBS+=$(ASTSSL_LIBS)
AST_LIBS+=$(JANSSON_LIB)
diff --git a/main/aoc.c b/main/aoc.c
index d45092b05..e8b23f595 100644
--- a/main/aoc.c
+++ b/main/aoc.c
@@ -44,7 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
<managerEventInstance class="EVENT_FLAG_AOC">
<synopsis>Raised when an Advice of Charge message is sent at the beginning of a call.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Chargeable" />
<parameter name="RateType">
<enumlist>
@@ -91,7 +91,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
<managerEventInstance class="EVENT_FLAG_AOC">
<synopsis>Raised when an Advice of Charge message is sent during a call.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Charge" />
<parameter name="Type">
<enumlist>
@@ -144,7 +144,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
<managerEventInstance class="EVENT_FLAG_AOC">
<synopsis>Raised when an Advice of Charge message is sent at the end of a call.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="ChargingAssociation" />
<parameter name="Number" />
<parameter name="Plan" />
diff --git a/main/core_local.c b/main/core_local.c
index 961a28096..3cdff9503 100644
--- a/main/core_local.c
+++ b/main/core_local.c
@@ -72,82 +72,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when two halves of a Local Channel form a bridge.</synopsis>
<syntax>
- <parameter name="LocalOneChannel">
- </parameter>
- <parameter name="LocalOneChannelState">
- <para>A numeric code for the channel's current state, related to ChannelStateDesc</para>
- </parameter>
- <parameter name="LocalOneChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="LocalOneCallerIDNum">
- </parameter>
- <parameter name="LocalOneCallerIDName">
- </parameter>
- <parameter name="LocalOneConnectedLineNum">
- </parameter>
- <parameter name="LocalOneConnectedLineName">
- </parameter>
- <parameter name="LocalOneAccountCode">
- </parameter>
- <parameter name="LocalOneContext">
- </parameter>
- <parameter name="LocalOneExten">
- </parameter>
- <parameter name="LocalOnePriority">
- </parameter>
- <parameter name="LocalOneUniqueid">
- </parameter>
- <parameter name="LocalTwoChannel">
- </parameter>
- <parameter name="LocalTwoChannelState">
- <para>A numeric code for the channel's current state, related to ChannelStateDesc</para>
- </parameter>
- <parameter name="LocalTwoChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="LocalTwoCallerIDNum">
- </parameter>
- <parameter name="LocalTwoCallerIDName">
- </parameter>
- <parameter name="LocalTwoConnectedLineNum">
- </parameter>
- <parameter name="LocalTwoConnectedLineName">
- </parameter>
- <parameter name="LocalTwoAccountCode">
- </parameter>
- <parameter name="LocalTwoContext">
- </parameter>
- <parameter name="LocalTwoExten">
- </parameter>
- <parameter name="LocalTwoPriority">
- </parameter>
- <parameter name="LocalTwoUniqueid">
- </parameter>
+ <channel_snapshot prefix="LocalOne"/>
+ <channel_snapshot prefix="LocalTwo"/>
<parameter name="Context">
<para>The context in the dialplan that Channel2 starts in.</para>
</parameter>
@@ -168,8 +94,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<synopsis>Raised when two halves of a Local Channel begin to optimize
themselves out of the media path.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='LocalBridge']/managerEventInstance/syntax/parameter[contains(@name, 'LocalOne')])" />
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='LocalBridge']/managerEventInstance/syntax/parameter[contains(@name, 'LocalTwo')])" />
+ <channel_snapshot prefix="LocalOne"/>
+ <channel_snapshot prefix="LocalTwo"/>
</syntax>
<see-also>
<ref type="managerEvent">LocalOptimizationEnd</ref>
@@ -182,8 +108,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<synopsis>Raised when two halves of a Local Channel have finished optimizing
themselves out of the media path.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='LocalBridge']/managerEventInstance/syntax/parameter[contains(@name, 'LocalOne')])" />
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='LocalBridge']/managerEventInstance/syntax/parameter[contains(@name, 'LocalTwo')])" />
+ <channel_snapshot prefix="LocalOne"/>
+ <channel_snapshot prefix="LocalTwo"/>
</syntax>
<see-also>
<ref type="managerEvent">LocalOptimizationBegin</ref>
diff --git a/main/features.c b/main/features.c
index 56e47fb91..9490116b7 100644
--- a/main/features.c
+++ b/main/features.c
@@ -286,33 +286,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a call pickup occurs.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
- <parameter name="TargetChannel"/>
- <parameter name="TargetChannelState"><para>A numeric code for the channel's current state, related to TargetChannelStateDesc</para></parameter>
- <parameter name="TargetChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="TargetCallerIDNum"/>
- <parameter name="TargetCallerIDName"/>
- <parameter name="TargetConnectedLineNum"/>
- <parameter name="TargetConnectedLineName"/>
- <parameter name="TargetAccountCode"/>
- <parameter name="TargetContext"/>
- <parameter name="TargetExten"/>
- <parameter name="TargetPriority"/>
- <parameter name="TargetUniqueid"/>
+ <channel_snapshot/>
+ <channel_snapshot prefix="Target"/>
</syntax>
</managerEventInstance>
</managerEvent>
diff --git a/main/manager.c b/main/manager.c
index 8ea7f4202..19f1e94c2 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -227,57 +227,13 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<synopsis>Raised in response to a Status command.</synopsis>
<syntax>
<parameter name="ActionID" required="false"/>
- <parameter name="Channel">
- <para>Name of the channel</para>
- </parameter>
+ <channel_snapshot/>
<parameter name="Type">
<para>Type of channel</para>
</parameter>
<parameter name="DNID">
<para>Dialed number identifier</para>
</parameter>
- <parameter name="ChannelState">
- <para>A numeric code for the channel's current state, related to ChannelStateDesc</para>
- </parameter>
- <parameter name="ChannelStateDesc">
- <para>Name for the channel's current state</para>
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="CallerIDNum">
- </parameter>
- <parameter name="CallerIDName">
- </parameter>
- <parameter name="ConnectedLineNum">
- </parameter>
- <parameter name="ConnectedLineName">
- </parameter>
- <parameter name="EffectiveConnectedLineNum">
- </parameter>
- <parameter name="EffectiveConnectedLineName">
- </parameter>
- <parameter name="AccountCode">
- </parameter>
- <parameter name="Context">
- </parameter>
- <parameter name="Exten">
- </parameter>
- <parameter name="Priority">
- </parameter>
- <parameter name="Uniqueid">
- <para>Unique identifier for the channel</para>
- </parameter>
<parameter name="TimeToHangup">
<para>Absolute lifetime of the channel</para>
</parameter>
diff --git a/main/manager_bridges.c b/main/manager_bridges.c
index c791e63f3..5d831b5b4 100644
--- a/main/manager_bridges.c
+++ b/main/manager_bridges.c
@@ -40,18 +40,7 @@ static struct stasis_message_router *bridge_state_router;
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a bridge is created.</synopsis>
<syntax>
- <parameter name="BridgeUniqueid">
- <para>The unique identifier of the bridge</para>
- </parameter>
- <parameter name="BridgeType">
- <para>The type of bridge</para>
- </parameter>
- <parameter name="BridgeTechnology">
- <para>Technology in use by the bridge</para>
- </parameter>
- <parameter name="BridgeNumChannels">
- <para>Number of channels in the bridge</para>
- </parameter>
+ <bridge_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -59,7 +48,7 @@ static struct stasis_message_router *bridge_state_router;
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a bridge is destroyed.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='BridgeCreate']/managerEventInstance/syntax/parameter)" />
+ <bridge_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -67,10 +56,8 @@ static struct stasis_message_router *bridge_state_router;
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel enters a bridge.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='BridgeCreate']/managerEventInstance/syntax/parameter)" />
- <parameter name="Uniqueid">
- <para>The uniqueid of the channel entering the bridge</para>
- </parameter>
+ <bridge_snapshot/>
+ <channel_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -78,10 +65,8 @@ static struct stasis_message_router *bridge_state_router;
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel leaves a bridge.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='BridgeCreate']/managerEventInstance/syntax/parameter)" />
- <parameter name="Uniqueid">
- <para>The uniqueid of the channel leaving the bridge</para>
- </parameter>
+ <bridge_snapshot/>
+ <channel_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -246,13 +231,8 @@ static void bridge_merge_cb(void *data, struct stasis_subscription *sub,
<managerEventInstance>
<synopsis>Raised when two bridges are merged.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='BridgeCreate']/managerEventInstance/syntax/parameter)" />
- <parameter name="BridgeUniqueidFrom">
- <para>The uniqueid of the bridge being dissolved in the merge</para>
- </parameter>
- <parameter name="BridgeTypeFrom">
- <para>The type of bridge that is being dissolved in the merge</para>
- </parameter>
+ <bridge_snapshot/>
+ <bridge_snapshot prefix="From"/>
</syntax>
</managerEventInstance>
***/
diff --git a/main/manager_channels.c b/main/manager_channels.c
index cab4aa38d..23418e6a2 100644
--- a/main/manager_channels.c
+++ b/main/manager_channels.c
@@ -42,47 +42,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a new channel is created.</synopsis>
<syntax>
- <parameter name="Channel">
- <para>Name of the channel</para>
- </parameter>
- <parameter name="ChannelState">
- <para>A numeric code for the channel's current state, related to ChannelStateDesc</para>
- </parameter>
- <parameter name="ChannelStateDesc">
- <para>Name for the channel's current state</para>
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="CallerIDNum">
- </parameter>
- <parameter name="CallerIDName">
- </parameter>
- <parameter name="ConnectedLineNum">
- </parameter>
- <parameter name="ConnectedLineName">
- </parameter>
- <parameter name="AccountCode">
- </parameter>
- <parameter name="Context">
- </parameter>
- <parameter name="Exten">
- </parameter>
- <parameter name="Priority">
- </parameter>
- <parameter name="Uniqueid">
- <para>Unique identifier for the channel</para>
- </parameter>
+ <channel_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -90,7 +50,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel's state changes.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -98,7 +58,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel is hung up.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Cause">
<para>A numeric cause code for why the channel was hung up.</para>
</parameter>
@@ -112,7 +72,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a hangup is requested.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='Hangup']/managerEventInstance/syntax/parameter[@name='Cause'])" />
</syntax>
</managerEventInstance>
@@ -121,7 +81,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a soft hangup is requested with a specific cause code.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='Hangup']/managerEventInstance/syntax/parameter[@name='Cause'])" />
</syntax>
</managerEventInstance>
@@ -130,7 +90,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_DIALPLAN">
<synopsis>Raised when a channel enters a new context, extension, priority.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Extension">
<para>Deprecated in 12, but kept for
backward compatability. Please use
@@ -149,7 +109,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel receives new Caller ID information.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="CID-CallingPres">
<para>A description of the Caller ID presentation.</para>
</parameter>
@@ -160,7 +120,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a Channel's AccountCode is changed.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="OldAccountCode">
<para>The channel's previous account code</para>
</parameter>
@@ -171,45 +131,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a dial action has started.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
- <parameter name="DestChannel">
- </parameter>
- <parameter name="DestChannelState">
- <para>A numeric code for the channel's current state, related to DestChannelStateDesc</para>
- </parameter>
- <parameter name="DestChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="DestCallerIDNum">
- </parameter>
- <parameter name="DestCallerIDName">
- </parameter>
- <parameter name="DestConnectedLineNum">
- </parameter>
- <parameter name="DestConnectedLineName">
- </parameter>
- <parameter name="DestAccountCode">
- </parameter>
- <parameter name="DestContext">
- </parameter>
- <parameter name="DestExten">
- </parameter>
- <parameter name="DestPriority">
- </parameter>
- <parameter name="DestUniqueid">
- </parameter>
+ <channel_snapshot/>
+ <channel_snapshot prefix="Dest"/>
<parameter name="DialString">
<para>The non-technology specific device being dialed.</para>
</parameter>
@@ -223,8 +146,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a dial action has completed.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='DialBegin']/managerEventInstance/syntax/parameter[contains(@name, 'Dest')])" />
+ <channel_snapshot/>
+ <channel_snapshot prefix="Dest"/>
<parameter name="DialStatus">
<para>The result of the dial operation.</para>
<enumlist>
@@ -246,7 +169,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel goes on hold.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="MusicClass">
<para>The suggested MusicClass, if provided.</para>
</parameter>
@@ -257,7 +180,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel goes off hold.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
</syntax>
</managerEventInstance>
</managerEvent>
@@ -265,84 +188,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when one channel begins spying on another channel.</synopsis>
<syntax>
- <parameter name="SpyerChannel">
- <para>The channel performing the spying.</para>
- </parameter>
- <parameter name="SpyerChannelState">
- <para>A numeric code for the channel's current state, related to SpyerChannelStateDesc</para>
- </parameter>
- <parameter name="SpyerChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="SpyerCallerIDNum">
- </parameter>
- <parameter name="SpyerCallerIDName">
- </parameter>
- <parameter name="SpyerConnectedLineNum">
- </parameter>
- <parameter name="SpyerConnectedLineName">
- </parameter>
- <parameter name="SpyerAccountCode">
- </parameter>
- <parameter name="SpyerContext">
- </parameter>
- <parameter name="SpyerExten">
- </parameter>
- <parameter name="SpyerPriority">
- </parameter>
- <parameter name="SpyerUniqueid">
- </parameter>
- <parameter name="SpyeeChannel">
- <para>The channel being spied upon.</para>
- </parameter>
- <parameter name="SpyeeChannelState">
- <para>A numeric code for the channel's current state, related to SpyeeChannelStateDesc</para>
- </parameter>
- <parameter name="SpyeeChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="SpyeeCallerIDNum">
- </parameter>
- <parameter name="SpyeeCallerIDName">
- </parameter>
- <parameter name="SpyeeConnectedLineNum">
- </parameter>
- <parameter name="SpyeeConnectedLineName">
- </parameter>
- <parameter name="SpyeeAccountCode">
- </parameter>
- <parameter name="SpyeeContext">
- </parameter>
- <parameter name="SpyeeExten">
- </parameter>
- <parameter name="SpyeePriority">
- </parameter>
- <parameter name="SpyeeUniqueid">
- </parameter>
+ <channel_snapshot prefix="Spyer"/>
+ <channel_snapshot prefix="Spyee"/>
</syntax>
<see-also>
<ref type="application">ChanSpyStop</ref>
@@ -353,7 +200,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a channel has stopped spying.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='ChanSpyStart']/managerEventInstance/syntax/parameter[contains(@name, 'Spyer')])" />
+ <channel_snapshot prefix="Spyer"/>
+ <channel_snapshot prefix="Spyee"/>
</syntax>
<see-also>
<ref type="application">ChanSpyStart</ref>
@@ -364,7 +212,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_DIALPLAN">
<synopsis>Raised when a hangup handler is about to be called.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Handler">
<para>Hangup handler parameter string passed to the Gosub application.</para>
</parameter>
@@ -378,6 +226,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
by the CHANNEL() function.
</synopsis>
<syntax>
+ <channel_snapshot/>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='HangupHandlerRun']/managerEventInstance/syntax/parameter)" />
</syntax>
<see-also>
@@ -393,6 +242,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
the CHANNEL() function.
</synopsis>
<syntax>
+ <channel_snapshot/>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='HangupHandlerRun']/managerEventInstance/syntax/parameter)" />
</syntax>
<see-also>
@@ -407,7 +257,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
Raised periodically during a fax transmission.
</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Operation">
<enumlist>
<enum name="gateway"/>
@@ -429,7 +279,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
Raised when a receive fax operation has completed.
</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="LocalStationID">
<para>The value of the <variable>LOCALSTATIONID</variable> channel variable</para>
</parameter>
@@ -457,7 +307,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
Raised when a send fax operation has completed.
</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<xi:include xpointer="xpointer(/docs/managerEvent[@name='ReceiveFAX']/managerEventInstance/syntax/parameter)" />
</syntax>
</managerEventInstance>
@@ -466,7 +316,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when music on hold has started on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Class">
<para>The class of music being played on the channel</para>
</parameter>
@@ -481,7 +331,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when music on hold has stopped on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
</syntax>
<see-also>
<ref type="managerEvent">MusicOnHoldStart</ref>
@@ -493,7 +343,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when monitoring has started on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
</syntax>
<see-also>
<ref type="managerEvent">MonitorStop</ref>
@@ -506,7 +356,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when monitoring has stopped on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
</syntax>
<see-also>
<ref type="managerEvent">MonitorStart</ref>
@@ -785,7 +635,7 @@ static void channel_user_event_cb(void *data, struct stasis_subscription *sub,
<managerEventInstance>
<synopsis>A user defined event raised from the dialplan.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="UserEvent">
<para>The event name, as specified in the dialplan.</para>
</parameter>
@@ -934,7 +784,7 @@ static void channel_dtmf_begin_cb(void *data, struct stasis_subscription *sub,
<managerEventInstance>
<synopsis>Raised when a DTMF digit has started on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Digit">
<para>DTMF digit received or transmitted (0-9, A-E, # or *</para>
</parameter>
@@ -977,7 +827,7 @@ static void channel_dtmf_end_cb(void *data, struct stasis_subscription *sub,
<managerEventInstance>
<synopsis>Raised when a DTMF digit has ended on a channel.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Digit">
<para>DTMF digit received or transmitted (0-9, A-E, # or *</para>
</parameter>
diff --git a/main/manager_mwi.c b/main/manager_mwi.c
index ac629089b..12a3de361 100644
--- a/main/manager_mwi.c
+++ b/main/manager_mwi.c
@@ -111,7 +111,7 @@ static void mwi_update_cb(void *data, struct stasis_subscription *sub,
has changed or when a channel has finished interacting with a
mailbox.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Mailbox">
<para>The mailbox with the new message, specified as <literal>mailbox</literal>@<literal>context</literal></para>
</parameter>
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 4dd4d46de..907cb271a 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -32,7 +32,7 @@
<managerEventInstance class="EVENT_FLAG_REPORTING">
<synopsis>Raised when an RTCP packet is sent.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="SSRC">
<para>The SSRC identifier for our stream</para>
</parameter>
@@ -108,7 +108,7 @@
<managerEventInstance class="EVENT_FLAG_REPORTING">
<synopsis>Raised when an RTCP packet is received.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="SSRC">
<para>The SSRC identifier for the remote system</para>
</parameter>
diff --git a/main/stasis_bridges.c b/main/stasis_bridges.c
index 72f4d5055..251f9d7af 100644
--- a/main/stasis_bridges.c
+++ b/main/stasis_bridges.c
@@ -58,48 +58,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<note><para>A result of <literal>Success</literal> does not necessarily mean that a target was succesfully
contacted. It means that a party was succesfully placed into the dialplan at the expected location.</para></note>
</parameter>
- <parameter name="TransfererChannel">
- <para>The name of the channel that performed the transfer</para>
- </parameter>
- <parameter name="TransfererChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="TransfererCallerIDNum">
- </parameter>
- <parameter name="TransfererCallerIDName">
- </parameter>
- <parameter name="TransfererConnectedLineNum">
- </parameter>
- <parameter name="TransfererConnectedLineName">
- </parameter>
- <parameter name="TransfererAccountCode">
- </parameter>
- <parameter name="TransfererContext">
- </parameter>
- <parameter name="TransfererExten">
- </parameter>
- <parameter name="TransfererPriority">
- </parameter>
- <parameter name="TransfererUniqueid">
- </parameter>
- <parameter name="BridgeUniqueid">
- <para>The ID of the bridge where the Transferer performed the transfer</para>
- </parameter>
- <parameter name="BridgeType">
- <para>The type of the bridge where the Transferer performed the transfer</para>
- </parameter>
+ <channel_snapshot prefix="Transferer"/>
+ <bridge_snapshot/>
<parameter name="IsExternal">
<para>Indicates if the transfer was performed outside of Asterisk. For instance,
a channel protocol native transfer is external. A DTMF transfer is internal.</para>
@@ -122,100 +82,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<synopsis>Raised when an attended transfer is complete.</synopsis>
<syntax>
<xi:include xpointer="xpointer(docs/managerEvent[@name='BlindTransfer']/managerEventInstance/syntax/parameter[@name='Result'])" />
- <parameter name="OrigTransfererChannel">
- <para>The original transferer channel that performed the attended transfer.</para>
- </parameter>
- <parameter name="OrigTransfererChannelState">
- <para>A numeric code for the channel's current state, related to DestChannelStateDesc</para>
- </parameter>
- <parameter name="OrigTransfererChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="OrigTransfererCallerIDNum">
- </parameter>
- <parameter name="OrigTransfererCallerIDName">
- </parameter>
- <parameter name="OrigTransfererConnectedLineNum">
- </parameter>
- <parameter name="OrigTransfererConnectedLineName">
- </parameter>
- <parameter name="OrigTransfererAccountCode">
- </parameter>
- <parameter name="OrigTransfererContext">
- </parameter>
- <parameter name="OrigTransfererExten">
- </parameter>
- <parameter name="OrigTransfererPriority">
- </parameter>
- <parameter name="OrigTransfererUniqueid">
- </parameter>
- <parameter name="OrigBridgeUniqueid">
- <para>The ID of the bridge where the Transferer performed the transfer</para>
- <note><para>This header will not be present if the original transferer was not in a bridge.</para></note>
- </parameter>
- <parameter name="OrigBridgeType">
- <para>The type of the bridge where the Transferer performed the transfer</para>
- <note><para>This header will not be present if the original transferer was not in a bridge.</para></note>
- </parameter>
- <parameter name="SecondTransfererChannel">
- <para>The second transferer channel involved in the attended transfer.</para>
- </parameter>
- <parameter name="SecondTransfererChannelState">
- <para>A numeric code for the channel's current state, related to SecondTransfererChannelStateDesc</para>
- </parameter>
- <parameter name="SecondTransfererChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- </parameter>
- <parameter name="SecondTransfererCallerIDNum">
- </parameter>
- <parameter name="SecondTransfererCallerIDName">
- </parameter>
- <parameter name="SecondTransfererConnectedLineNum">
- </parameter>
- <parameter name="SecondTransfererConnectedLineName">
- </parameter>
- <parameter name="SecondTransfererAccountCode">
- </parameter>
- <parameter name="SecondTransfererContext">
- </parameter>
- <parameter name="SecondTransfererExten">
- </parameter>
- <parameter name="SecondTransfererPriority">
- </parameter>
- <parameter name="SecondTransfererUniqueid">
- </parameter>
- <parameter name="SecondBridgeUniqueid">
- <para>The unique ID of the bridge that the second transferer channel was in, or <literal>None</literal> if the second transferer channel was not bridged</para>
- <note><para>This header will not be present if the second transferer was not in a bridge.</para></note>
- </parameter>
- <parameter name="SecondBridgeType">
- <para>The type of the bridge where the Transferer performed the transfer</para>
- <note><para>This header will not be present if the second transferer was not in a bridge.</para></note>
- </parameter>
+ <channel_snapshot prefix="OrigTransferer"/>
+ <bridge_snapshot prefix="Orig"/>
+ <channel_snapshot prefix="SecondTransferer"/>
+ <bridge_snapshot prefix="Second"/>
<parameter name="DestType">
<para>Indicates the method by which the attended transfer completed.</para>
<enumlist>
@@ -234,107 +104,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<para>Indicates the application that is running when the transfer completes</para>
<note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>App</literal></para></note>
</parameter>
- <parameter name="LocalOneChannel">
- <para>The local channel that is bridged with the original bridge when forming a link between bridges</para>
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneChannelState">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneCallerIDNum">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneCallerIDName">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneConnectedLineNum">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneConnectedLineName">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneAccountCode">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneContext">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneExten">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOnePriority">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalOneUniqueid">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoChannel">
- <para>The local channel that is bridged with the second bridge when forming a link between bridges</para>
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoChannelState">
- <para>A numeric code for the channel's current state, related to LocalTwoChannelStateDesc</para>
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoChannelStateDesc">
- <enumlist>
- <enum name="Down"/>
- <enum name="Rsrvd"/>
- <enum name="OffHook"/>
- <enum name="Dialing"/>
- <enum name="Ring"/>
- <enum name="Ringing"/>
- <enum name="Up"/>
- <enum name="Busy"/>
- <enum name="Dialing Offhook"/>
- <enum name="Pre-ring"/>
- <enum name="Unknown"/>
- </enumlist>
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoCallerIDNum">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoCallerIDName">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoConnectedLineNum">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoConnectedLineName">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoAccountCode">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoContext">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoExten">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoPriority">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
- <parameter name="LocalTwoUniqueid">
- <note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Link</literal></para></note>
- </parameter>
+ <channel_snapshot prefix="LocalOne"/>
+ <channel_snapshot prefix="LocalTwo"/>
<parameter name="DestTransfererChannel">
<para>The name of the surviving transferer channel when a transfer results in a threeway call</para>
<note><para>This header is only present when <replaceable>DestType</replaceable> is <literal>Threeway</literal></para></note>
@@ -345,15 +116,15 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
and the two bridges are determined based on their chronological establishment. So consider that Alice calls Bob, and then Alice
transfers the call to Voicemail. The transferer and bridge headers would be arranged as follows:</para>
<para> <replaceable>OrigTransfererChannel</replaceable>: Alice's channel in the bridge with Bob.</para>
- <para> <replaceable>BridgeUniqueidOrig</replaceable>: The bridge between Alice and Bob.</para>
+ <para> <replaceable>OrigBridgeUniqueid</replaceable>: The bridge between Alice and Bob.</para>
<para> <replaceable>SecondTransfererChannel</replaceable>: Alice's channel that called Voicemail.</para>
- <para> <replaceable>BridgeUniqueidSecond</replaceable>: Not present, since a call to Voicemail has no bridge.</para>
+ <para> <replaceable>SecondBridgeUniqueid</replaceable>: Not present, since a call to Voicemail has no bridge.</para>
<para>Now consider if the order were reversed; instead of having Alice call Bob and transfer him to Voicemail, Alice instead
calls her Voicemail and transfers that to Bob. The transferer and bridge headers would be arranged as follows:</para>
<para> <replaceable>OrigTransfererChannel</replaceable>: Alice's channel that called Voicemail.</para>
- <para> <replaceable>BridgeUniqueidOrig</replaceable>: Not present, since a call to Voicemail has no bridge.</para>
+ <para> <replaceable>OrigBridgeUniqueid</replaceable>: Not present, since a call to Voicemail has no bridge.</para>
<para> <replaceable>SecondTransfererChannel</replaceable>: Alice's channel in the bridge with Bob.</para>
- <para> <replaceable>BridgeUniqueidSecond</replaceable>: The bridge between Alice and Bob.</para>
+ <para> <replaceable>SecondBridgeUniqueid</replaceable>: The bridge between Alice and Bob.</para>
</description>
</managerEventInstance>
</managerEvent>
diff --git a/main/stasis_channels.c b/main/stasis_channels.c
index 6729a1072..4f88a5a6c 100644
--- a/main/stasis_channels.c
+++ b/main/stasis_channels.c
@@ -46,7 +46,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_DIALPLAN">
<synopsis>Raised when a variable is set to a particular value.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Variable">
<para>The variable being set.</para>
</parameter>
@@ -60,7 +60,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<managerEventInstance class="EVENT_FLAG_AGENT">
<synopsis>Raised when an Agent has logged in.</synopsis>
<syntax>
- <xi:include xpointer="xpointer(/docs/managerEvent[@name='Newchannel']/managerEventInstance/syntax/parameter)" />
+ <channel_snapshot/>
<parameter name="Agent">
<para>Agent ID of the agent.</para>
</parameter>
diff --git a/main/xml.c b/main/xml.c
index 5ca4d4ff1..bd5850813 100644
--- a/main/xml.c
+++ b/main/xml.c
@@ -29,6 +29,7 @@
#include "asterisk/xml.h"
#include "asterisk/logger.h"
#include "asterisk/utils.h"
+#include "asterisk/autoconfig.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@@ -38,6 +39,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <libxml/xinclude.h>
#include <libxml/xpath.h>
/* libxml2 ast_xml implementation. */
+#ifdef HAVE_LIBXSLT
+ #include <libxslt/xsltInternals.h>
+ #include <libxslt/transform.h>
+#endif /* HAVE_LIBXSLT */
int ast_xml_init(void)
@@ -63,13 +68,32 @@ struct ast_xml_doc *ast_xml_open(char *filename)
}
doc = xmlReadFile(filename, NULL, XML_PARSE_RECOVER);
- if (doc) {
- /* process xinclude elements. */
- if (xmlXIncludeProcess(doc) < 0) {
+ if (!doc) {
+ return NULL;
+ }
+
+ /* process xinclude elements. */
+ if (xmlXIncludeProcess(doc) < 0) {
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+
+#ifdef HAVE_LIBXSLT
+ {
+ xsltStylesheetPtr xslt = xsltLoadStylesheetPI(doc);
+ if (xslt) {
+ xmlDocPtr tmpdoc = xsltApplyStylesheet(xslt, doc, NULL);
+ xsltFreeStylesheet(xslt);
xmlFreeDoc(doc);
- return NULL;
+ if (!tmpdoc) {
+ return NULL;
+ }
+ doc = tmpdoc;
}
}
+#else /* no HAVE_LIBXSLT */
+ ast_log(LOG_NOTICE, "XSLT support not found. XML documentation may be incomplete.\n");
+#endif /* HAVE_LIBXSLT */
return (struct ast_xml_doc *) doc;
}