[asterisk-commits] twilson: branch twilson/config_docs r370308 - in /team/twilson/config_docs: ....
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jul 19 19:20:08 CDT 2012
Author: twilson
Date: Thu Jul 19 19:20:04 2012
New Revision: 370308
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=370308
Log:
Fix automerge
Modified:
team/twilson/config_docs/ (props changed)
team/twilson/config_docs/channels/chan_sip.c
team/twilson/config_docs/doc/appdocsxml.dtd
team/twilson/config_docs/main/cel.c
team/twilson/config_docs/main/message.c
team/twilson/config_docs/main/xmldoc.c
team/twilson/config_docs/res/res_rtp_asterisk.c
team/twilson/config_docs/res/res_xmpp.c
Propchange: team/twilson/config_docs/
------------------------------------------------------------------------------
automerge = *
Propchange: team/twilson/config_docs/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.
Propchange: team/twilson/config_docs/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Thu Jul 19 19:20:04 2012
@@ -1,1 +1,1 @@
-/trunk:1-370269
+/trunk:1-370303
Modified: team/twilson/config_docs/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/channels/chan_sip.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/channels/chan_sip.c (original)
+++ team/twilson/config_docs/channels/chan_sip.c Thu Jul 19 19:20:04 2012
@@ -572,6 +572,14 @@
via multiple <literal>Variable: name=value</literal> sequences.</para>
</description>
</manager>
+ <info name="SIPMessageFromInfo" language="en_US" tech="SIP">
+ <para>The <literal>from</literal> parameter can be a configured peer name
+ or in the form of "display-name" <URI>.</para>
+ </info>
+ <info name="SIPMessageToInfo" language="en_US" tech="SIP">
+ <para>Specifying a prefix of <literal>sip:</literal> will send the
+ message as a SIP MESSAGE request.</para>
+ </info>
***/
static int min_expiry = DEFAULT_MIN_EXPIRY; /*!< Minimum accepted registration time */
Modified: team/twilson/config_docs/doc/appdocsxml.dtd
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/doc/appdocsxml.dtd?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/doc/appdocsxml.dtd (original)
+++ team/twilson/config_docs/doc/appdocsxml.dtd Thu Jul 19 19:20:04 2012
@@ -1,4 +1,4 @@
- <!ELEMENT docs (application|function|agi|manager|managerEvent|configInfo)*>
+ <!ELEMENT docs (application|function|agi|manager|managerEvent|info|configInfo)*>
<!ATTLIST docs xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude">
<!ELEMENT xi:include (xi:fallback?) >
@@ -54,6 +54,11 @@
<!ELEMENT hasObject EMPTY>
<!ATTLIST hasObject ref IDREF #REQUIRED>
+ <!ELEMENT info (para|note|warning|variablelist|enumlist|info|xi:include)*>
+ <!ATTLIST info name CDATA #REQUIRED>
+ <!ATTLIST info language CDATA #REQUIRED>
+ <!ATTLIST info tech CDATA #REQUIRED>
+
<!ELEMENT see-also (ref|xi:include)*>
<!ELEMENT ref (#PCDATA)>
@@ -73,9 +78,9 @@
<!ELEMENT syntax (parameter|dataType|category|xi:include)*>
<!ATTLIST syntax argsep CDATA ",">
- <!ELEMENT description (para|note|warning|variablelist|enumlist|xi:include)*>
+ <!ELEMENT description (para|note|warning|variablelist|enumlist|info|xi:include)*>
- <!ELEMENT parameter (optionlist|enumlist|argument|para|note|warning|parameter|xi:include)*>
+ <!ELEMENT parameter (optionlist|enumlist|argument|para|note|warning|parameter|info|xi:include)*>
<!ATTLIST parameter name CDATA "">
<!ATTLIST parameter required (yes|no|true|false) "false">
<!ATTLIST parameter multiple (yes|no|true|false) "false">
@@ -85,17 +90,17 @@
<!ATTLIST parameter argsep CDATA ",">
<!ELEMENT optionlist (option+)>
- <!ELEMENT option (argument|para|note|warning|variablelist|enumlist|xi:include)*>
+ <!ELEMENT option (argument|para|note|warning|variablelist|enumlist|info|xi:include)*>
<!ATTLIST option name CDATA #REQUIRED>
<!ATTLIST option argsep CDATA ",">
<!ATTLIST option implies CDATA "">
<!ATTLIST option hasparams CDATA "">
<!ELEMENT enumlist (enum+)>
- <!ELEMENT enum (para|note|warning|parameter|enumlist|xi:include)*>
+ <!ELEMENT enum (para|note|warning|parameter|enumlist|info|xi:include)*>
<!ATTLIST enum name CDATA "">
- <!ELEMENT argument (para|note|warning|variablelist|argument|xi:include)*>
+ <!ELEMENT argument (para|note|warning|variablelist|argument|info|xi:include)*>
<!ATTLIST argument name CDATA #REQUIRED>
<!ATTLIST argument multiple (yes|no|true|false) "false">
<!ATTLIST argument required (yes|no|true|false) "false">
@@ -114,7 +119,7 @@
<!ELEMENT warning (para+|xi:include*)>
<!ELEMENT variablelist (variable+|xi:include*)>
- <!ELEMENT variable (#PCDATA|value|para|xi:include)*>
+ <!ELEMENT variable (#PCDATA|value|para|info|xi:include)*>
<!ATTLIST variable name CDATA "">
<!ELEMENT value (#PCDATA)>
Modified: team/twilson/config_docs/main/cel.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/main/cel.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/main/cel.c (original)
+++ team/twilson/config_docs/main/cel.c Thu Jul 19 19:20:04 2012
@@ -395,7 +395,7 @@
*/
static const struct ast_datastore_info fabricated_channel_datastore = {
.type = "CEL fabricated channel",
- .destroy = ast_free,
+ .destroy = ast_free_ptr,
};
struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event *event)
@@ -505,11 +505,10 @@
return NULL;
}
- ast_channel_appl_set(tchan, app_data);
- ast_channel_data_set(tchan, app_data + strlen(record.application_name) + 1);
-
- strcpy((char *) ast_channel_appl(tchan), record.application_name);
- strcpy((char *) ast_channel_data(tchan), record.application_data);
+ ast_channel_appl_set(tchan, strcpy(app_data, record.application_name));
+ ast_channel_data_set(tchan, strcpy(app_data + strlen(record.application_name) + 1,
+ record.application_data));
+
datastore->data = app_data;
ast_channel_datastore_add(tchan, datastore);
Modified: team/twilson/config_docs/main/message.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/main/message.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/main/message.c (original)
+++ team/twilson/config_docs/main/message.c Thu Jul 19 19:20:04 2012
@@ -122,20 +122,20 @@
<syntax>
<parameter name="to" required="true">
<para>A To URI for the message.</para>
+ <xi:include xpointer="xpointer(/docs/info[@name='SIPMessageToInfo'])" />
+ <xi:include xpointer="xpointer(/docs/info[@name='XMPPMessageToInfo'])" />
</parameter>
<parameter name="from" required="false">
<para>A From URI for the message if needed for the
message technology being used to send this message.</para>
- <note>
- <para>For SIP the from parameter can be a configured peer name
- or in the form of "display-name" <URI>.</para>
- </note>
+ <xi:include xpointer="xpointer(/docs/info[@name='SIPMessageFromInfo'])" />
</parameter>
</syntax>
<description>
<para>Send a text message. The body of the message that will be
- sent is what is currently set to <literal>MESSAGE(body)</literal>.</para>
-
+ sent is what is currently set to <literal>MESSAGE(body)</literal>.
+ The technology chosen for sending the message is determined
+ based on a prefix to the <literal>to</literal> parameter.</para>
<para>This application sets the following channel variables:</para>
<variablelist>
<variable name="MESSAGE_SEND_STATUS">
@@ -164,14 +164,13 @@
<xi:include xpointer="xpointer(/docs/manager[@name='Login']/syntax/parameter[@name='ActionID'])" />
<parameter name="To" required="true">
<para>The URI the message is to be sent to.</para>
+ <xi:include xpointer="xpointer(/docs/info[@name='SIPMessageToInfo'])" />
+ <xi:include xpointer="xpointer(/docs/info[@name='XMPPMessageToInfo'])" />
</parameter>
<parameter name="From">
<para>A From URI for the message if needed for the
message technology being used to send this message.</para>
- <note>
- <para>For SIP the from parameter can be a configured peer name
- or in the form of "display-name" <URI>.</para>
- </note>
+ <xi:include xpointer="xpointer(/docs/info[@name='SIPMessageFromInfo'])" />
</parameter>
<parameter name="Body">
<para>The message body text. This must not contain any newlines as that
Modified: team/twilson/config_docs/main/xmldoc.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/main/xmldoc.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/main/xmldoc.c (original)
+++ team/twilson/config_docs/main/xmldoc.c Thu Jul 19 19:20:04 2012
@@ -65,6 +65,10 @@
static char *xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname);
static int xmldoc_parse_enumlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer);
+static int xmldoc_parse_info(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer);
+static int xmldoc_parse_para(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer);
+static int xmldoc_parse_specialtags(struct ast_xml_node *fixnode, const char *tabs, const char *posttabs, struct ast_str **buffer);
+
/*!
* \brief Container of documentation trees
@@ -1248,6 +1252,26 @@
}
/*! \internal
+ * \brief Parse common internal elements. This includes paragraphs, special
+ * tags, and information nodes.
+ * \param node The element to parse
+ * \param tabs Add this string before the content of the parsed element.
+ * \param posttabs Add this string after the content of the parsed element.
+ * \param buffer This must be an already allocated ast_str. It will be used to
+ * store the result (if something has already been placed in the
+ * buffer, the parsed elements will be appended)
+ * \retval 1 if any data was appended to the buffer
+ * \retval 2 if the data appended to the buffer contained a text paragraph
+ * \retval 0 if no data was appended to the buffer
+ */
+static int xmldoc_parse_common_elements(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer)
+{
+ return (xmldoc_parse_para(node, tabs, posttabs, buffer)
+ || xmldoc_parse_specialtags(node, tabs, posttabs, buffer)
+ || xmldoc_parse_info(node, tabs, posttabs, buffer));
+}
+
+/*! \internal
* \brief Parse a <para> element.
* \param node The <para> element pointer.
* \param tabs Added this string before the content of the <para> element.
@@ -1338,7 +1362,8 @@
/* parse <para> elements inside special tags. */
for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
/* first <para> just print it without tabs at the begining. */
- if (xmldoc_parse_para(node, (!count ? "" : tabs), posttabs, buffer) == 2) {
+ if ((xmldoc_parse_para(node, (!count ? "" : tabs), posttabs, buffer) == 2)
+ || (xmldoc_parse_info(node, (!count ? "": tabs), posttabs, buffer) == 2)) {
ret = 2;
}
}
@@ -1349,6 +1374,55 @@
break;
}
+
+ return ret;
+}
+
+/*! \internal
+ * \brief Parse an 'info' tag inside an element.
+ * \param node A pointer to the 'info' xml node.
+ * \param tabs A string to be appended at the beginning of each line being printed
+ * inside 'buffer'
+ * \param posttabs Add this string after the content of the <para> element, if one exists
+ * \param String buffer to put values found inide the info element.
+ * \ret 2 if the information contained a para element, and it returned a value of 2
+ * \ret 1 if information was put into the buffer
+ * \ret 0 if no information was put into the buffer or error
+ */
+static int xmldoc_parse_info(struct ast_xml_node *node, const char *tabs, const char *posttabs, struct ast_str **buffer)
+{
+ const char *tech;
+ char *internaltabs;
+ int internal_ret;
+ int ret = 0;
+
+ if (strcasecmp(ast_xml_node_get_name(node), "info")) {
+ return ret;
+ }
+
+ ast_asprintf(&internaltabs, "%s ", tabs);
+ if (!internaltabs) {
+ return ret;
+ }
+
+ tech = ast_xml_get_attribute(node, "tech");
+ if (tech) {
+ ast_str_append(buffer, 0, "%s<note>Technology: %s</note>\n", internaltabs, tech);
+ ast_xml_free_attr(tech);
+ }
+
+ ret = 1;
+
+ for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
+ if (!strcasecmp(ast_xml_node_get_name(node), "enumlist")) {
+ xmldoc_parse_enumlist(node, internaltabs, buffer);
+ } else if ((internal_ret = xmldoc_parse_common_elements(node, internaltabs, posttabs, buffer))) {
+ if (internal_ret > ret) {
+ ret = internal_ret;
+ }
+ }
+ }
+ ast_free(internaltabs);
return ret;
}
@@ -1378,7 +1452,7 @@
if (!argname) {
return 0;
}
- if (xmldoc_has_inside(node, "para") || xmldoc_has_specialtags(node)) {
+ if (xmldoc_has_inside(node, "para") || xmldoc_has_inside(node, "info") || xmldoc_has_specialtags(node)) {
ast_str_append(buffer, 0, "%s%s%s", tabs, argname, (insideparameter ? "\n" : ""));
ast_xml_free_attr(argname);
} else {
@@ -1387,10 +1461,7 @@
}
for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
- if (xmldoc_parse_para(node, (insideparameter ? paramtabs : (!count ? " - " : tabs)), "\n", buffer) == 2) {
- count++;
- ret = 1;
- } else if (xmldoc_parse_specialtags(node, (insideparameter ? paramtabs : (!count ? " - " : tabs)), "\n", buffer) == 2) {
+ if (xmldoc_parse_common_elements(node, (insideparameter ? paramtabs : (!count ? " - " : tabs)), "\n", buffer) == 2) {
count++;
ret = 1;
}
@@ -1419,10 +1490,7 @@
int ret = 0, printedpara=0;
for (tmp = ast_xml_node_get_children(node); tmp; tmp = ast_xml_node_get_next(tmp)) {
- if (xmldoc_parse_para(tmp, (ret ? tabs : ""), "\n", buffer)) {
- printedpara = 1;
- continue;
- } else if (xmldoc_parse_specialtags(tmp, (ret ? tabs : ""), "\n", buffer)) {
+ if (xmldoc_parse_common_elements(tmp, (ret ? tabs : ""), "\n", buffer)) {
printedpara = 1;
continue;
}
@@ -1493,10 +1561,7 @@
}
for (tmp = ast_xml_node_get_children(node); tmp; tmp = ast_xml_node_get_next(tmp)) {
/* We can have a <para> element inside the variable list */
- if ((xmldoc_parse_para(tmp, (ret ? tabs : ""), "\n", buffer))) {
- ret = 1;
- continue;
- } else if ((xmldoc_parse_specialtags(tmp, (ret ? tabs : ""), "\n", buffer))) {
+ if (xmldoc_parse_common_elements(tmp, (ret ? tabs : ""), "\n", buffer)) {
ret = 1;
continue;
}
@@ -1630,9 +1695,7 @@
ast_asprintf(&optiontabs, "%s ", tabs);
for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
- if ((xmldoc_parse_para(node, (ret ? tabs : " - "), "\n", buffer))) {
- ret = 1;
- } else if ((xmldoc_parse_specialtags(node, (ret ? tabs : " - "), "\n", buffer))) {
+ if (xmldoc_parse_common_elements(node, (ret ? tabs : " - "), "\n", buffer)) {
ret = 1;
}
@@ -1710,9 +1773,7 @@
continue;
}
- if (xmldoc_parse_para(node, (ret ? tabs : ""), "\n", buffer)) {
- ret = 1;
- } else if (xmldoc_parse_specialtags(node, (ret ? tabs : ""), "\n", buffer)) {
+ if (xmldoc_parse_common_elements(node, (ret ? tabs : ""), "\n", buffer)) {
ret = 1;
}
@@ -1830,6 +1891,18 @@
continue;
}
continue;
+ } else if (!strcasecmp(ast_xml_node_get_name(node), "info")) {
+ if (!printed) {
+ ast_str_append(buffer, 0, "%s\n", paramname);
+ ast_xml_free_attr(paramname);
+ printed = 1;
+ }
+ if (xmldoc_parse_info(node, internaltabs, "\n", buffer)) {
+ /* If anything ever goes in below this condition before the continue below,
+ * we should probably continue immediately. */
+ continue;
+ }
+ continue;
} else if ((xmldoc_parse_specialtags(node, internaltabs, "\n", buffer))) {
continue;
}
@@ -1932,9 +2005,7 @@
} else {
for (tmp = ast_xml_node_get_children(node); tmp; tmp = ast_xml_node_get_next(tmp)) {
/* if found, parse a <para> element. */
- if (xmldoc_parse_para(tmp, "", "\n", &ret)) {
- continue;
- } else if (xmldoc_parse_specialtags(tmp, "", "\n", &ret)) {
+ if (xmldoc_parse_common_elements(tmp, "", "\n", &ret)) {
continue;
}
/* if found, parse a <variablelist> element. */
Modified: team/twilson/config_docs/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/res/res_rtp_asterisk.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/res/res_rtp_asterisk.c (original)
+++ team/twilson/config_docs/res/res_rtp_asterisk.c Thu Jul 19 19:20:04 2012
@@ -191,12 +191,13 @@
int rtpkeepalive; /*!< Send RTP comfort noice packets for keepalive */
/* DTMF Reception Variables */
- char resp;
- unsigned int lastevent;
- unsigned int dtmf_duration; /*!< Total duration in samples since the digit start event */
- unsigned int dtmf_timeout; /*!< When this timestamp is reached we consider END frame lost and forcibly abort digit */
+ char resp; /*!< The current digit being processed */
+ unsigned int last_seqno; /*!< The last known sequence number for any DTMF packet */
+ unsigned int last_end_timestamp; /*!< The last known timestamp received from an END packet */
+ unsigned int dtmf_duration; /*!< Total duration in samples since the digit start event */
+ unsigned int dtmf_timeout; /*!< When this timestamp is reached we consider END frame lost and forcibly abort digit */
unsigned int dtmfsamples;
- enum ast_rtp_dtmf_mode dtmfmode;/*!< The current DTMF mode of the RTP stream */
+ enum ast_rtp_dtmf_mode dtmfmode; /*!< The current DTMF mode of the RTP stream */
/* DTMF Transmission Variables */
unsigned int lastdigitts;
char sending_digit; /*!< boolean - are we sending digits */
@@ -2155,8 +2156,10 @@
rtp->dtmfsamples = 0;
return &ast_null_frame;
}
- ast_debug(1, "Sending dtmf: %d (%c), at %s\n", rtp->resp, rtp->resp,
- ast_sockaddr_stringify(&remote_address));
+ ast_debug(1, "Creating %s DTMF Frame: %d (%c), at %s\n",
+ type == AST_FRAME_DTMF_END ? "END" : "BEGIN",
+ rtp->resp, rtp->resp,
+ ast_sockaddr_stringify(&remote_address));
if (rtp->resp == 'X') {
rtp->f.frametype = AST_FRAME_CONTROL;
rtp->f.subclass.integer = AST_CONTROL_FLASH;
@@ -2220,12 +2223,12 @@
}
if (ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_DTMF_COMPENSATE)) {
- if ((rtp->lastevent != timestamp) || (rtp->resp && rtp->resp != resp)) {
+ if ((rtp->last_end_timestamp != timestamp) || (rtp->resp && rtp->resp != resp)) {
rtp->resp = resp;
rtp->dtmf_timeout = 0;
f = ast_frdup(create_dtmf_frame(instance, AST_FRAME_DTMF_END, ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_DTMF_COMPENSATE)));
f->len = 0;
- rtp->lastevent = timestamp;
+ rtp->last_end_timestamp = timestamp;
AST_LIST_INSERT_TAIL(frames, f, frame_list);
}
} else {
@@ -2242,30 +2245,40 @@
}
new_duration = (new_duration & ~0xFFFF) | samples;
- /* The second portion of this check is to not mistakenly
- * stop accepting DTMF if the seqno rolls over beyond
- * 65535.
- */
- if (rtp->lastevent > seqno && rtp->lastevent - seqno < 50) {
- /* Out of order frame. Processing this can cause us to
- * improperly duplicate incoming DTMF, so just drop
- * this.
- */
- return;
- }
-
if (event_end & 0x80) {
/* End event */
- if ((rtp->lastevent != seqno) && rtp->resp) {
+ if ((rtp->last_seqno != seqno) && (timestamp > rtp->last_end_timestamp)) {
+ rtp->last_end_timestamp = timestamp;
rtp->dtmf_duration = new_duration;
+ rtp->resp = resp;
f = ast_frdup(create_dtmf_frame(instance, AST_FRAME_DTMF_END, 0));
f->len = ast_tvdiff_ms(ast_samp2tv(rtp->dtmf_duration, rtp_get_rate(&f->subclass.format)), ast_tv(0, 0));
rtp->resp = 0;
rtp->dtmf_duration = rtp->dtmf_timeout = 0;
AST_LIST_INSERT_TAIL(frames, f, frame_list);
+ } else if (rtpdebug) {
+ ast_debug(1, "Dropping duplicate or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n",
+ seqno, timestamp, resp);
}
} else {
/* Begin/continuation */
+
+ /* The second portion of the seqno check is to not mistakenly
+ * stop accepting DTMF if the seqno rolls over beyond
+ * 65535.
+ */
+ if ((rtp->last_seqno > seqno && rtp->last_seqno - seqno < 50)
+ || timestamp <= rtp->last_end_timestamp) {
+ /* Out of order frame. Processing this can cause us to
+ * improperly duplicate incoming DTMF, so just drop
+ * this.
+ */
+ if (rtpdebug) {
+ ast_debug(1, "Dropping out of order DTMF frame (seqno %d, ts %d, digit %c)\n",
+ seqno, timestamp, resp);
+ }
+ return;
+ }
if (rtp->resp && rtp->resp != resp) {
/* Another digit already began. End it */
@@ -2290,7 +2303,7 @@
rtp->dtmf_timeout = timestamp + rtp->dtmf_duration + dtmftimeout;
}
- rtp->lastevent = seqno;
+ rtp->last_seqno = seqno;
}
rtp->dtmfsamples = samples;
Modified: team/twilson/config_docs/res/res_xmpp.c
URL: http://svnview.digium.com/svn/asterisk/team/twilson/config_docs/res/res_xmpp.c?view=diff&rev=370308&r1=370307&r2=370308
==============================================================================
--- team/twilson/config_docs/res/res_xmpp.c (original)
+++ team/twilson/config_docs/res/res_xmpp.c Thu Jul 19 19:20:04 2012
@@ -270,6 +270,10 @@
<para>Sends a message to a Jabber Client.</para>
</description>
</manager>
+ <info name="XMPPMessageToInfo" language="en_US" tech="XMPP">
+ <para>Specifying a prefix of <literal>xmpp:</literal> will send the
+ message as an XMPP chat message.</para>
+ </info>
***/
/*! \brief Supported general configuration flags */
More information about the asterisk-commits
mailing list