summaryrefslogtreecommitdiff
path: root/channels/chan_motif.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_motif.c')
-rw-r--r--channels/chan_motif.c140
1 files changed, 140 insertions, 0 deletions
diff --git a/channels/chan_motif.c b/channels/chan_motif.c
index cc1e370fd..4dbfb8e3a 100644
--- a/channels/chan_motif.c
+++ b/channels/chan_motif.c
@@ -77,6 +77,145 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/abstract_jb.h"
#include "asterisk/xmpp.h"
+/*** DOCUMENTATION
+ <configInfo name="chan_motif" language="en_US">
+ <synopsis>Jingle Channel Driver</synopsis>
+ <description>
+ <para><emphasis>Transports</emphasis></para>
+ <para>There are three different transports and protocol derivatives
+ supported by <literal>chan_motif</literal>. They are in order of
+ preference: Jingle using ICE-UDP, Google Jingle, and Google-V1.</para>
+ <para>Jingle as defined in XEP-0166 supports the widest range of
+ features. It is referred to as <literal>ice-udp</literal>. This is
+ the specification that Jingle clients implement.</para>
+ <para>Google Jingle follows the Jingle specification for signaling
+ but uses a custom transport for media. It is supported by the
+ Google Talk Plug-in in Gmail and by some other Jingle clients. It
+ is referred to as <literal>google</literal> in this file.</para>
+ <para>Google-V1 is the original Google Talk signaling protocol
+ which uses an initial preliminary version of Jingle. It also uses
+ the same custom transport as Google Jingle for media. It is
+ supported by Google Voice, some other Jingle clients, and the
+ Windows Google Talk client. It is referred to as <literal>google-v1</literal>
+ in this file.</para>
+ <para>Incoming sessions will automatically switch to the correct
+ transport once it has been determined.</para>
+ <para>Outgoing sessions are capable of determining if the target
+ is capable of Jingle or a Google transport if the target is in the
+ roster. Unfortunately it is not possible to differentiate between
+ a Google Jingle or Google-V1 capable resource until a session
+ initiate attempt occurs. If a resource is determined to use a
+ Google transport it will initially use Google Jingle but will fall
+ back to Google-V1 if required.</para>
+ <para>If an outgoing session attempt fails due to failure to
+ support the given transport <literal>chan_motif</literal> will
+ fall back in preference order listed previously until all
+ transports have been exhausted.</para>
+ <para><emphasis>Dialing and Resource Selection Strategy</emphasis></para>
+ <para>Placing a call through an endpoint can be accomplished using the
+ following dial string:</para>
+ <para><literal>Motif/[endpoint name]/[target]</literal></para>
+ <para>When placing an outgoing call through an endpoint the requested
+ target is searched for in the roster list. If present the first Jingle
+ or Google Jingle capable resource is specifically targeted. Since the
+ capabilities of the resource are known the outgoing session initiation
+ will disregard the configured transport and use the determined one.</para>
+ <para>If the target is not found in the roster the target will be used
+ as-is and a session will be initiated using the transport specified
+ in this configuration file. If no transport has been specified the
+ endpoint defaults to <literal>ice-udp</literal>.</para>
+ <para><emphasis>Video Support</emphasis></para>
+ <para>Support for video does not need to be explicitly enabled.
+ Configuring any video codec on your endpoint will automatically enable
+ it.</para>
+ <para><emphasis>DTMF</emphasis></para>
+ <para>The only supported method for DTMF is RFC2833. This is always
+ enabled on audio streams and negotiated if possible.</para>
+ <para><emphasis>Incoming Calls</emphasis></para>
+ <para>Incoming calls will first look for the extension matching the
+ name of the endpoint in the configured context. If no such extension
+ exists the call will automatically fall back to the <literal>s</literal> extension.</para>
+ <para><emphasis>CallerID</emphasis></para>
+ <para>The incoming caller id number is populated with the username of
+ the caller and the name is populated with the full identity of the
+ caller. If you would like to perform authentication or filtering
+ of incoming calls it is recommended that you use these fields to do so.</para>
+ <para>Outgoing caller id can <emphasis>not</emphasis> be set.</para>
+ <warning>
+ <para>Multiple endpoints using the
+ same connection is <emphasis>NOT</emphasis> supported. Doing so
+ may result in broken calls.</para>
+ </warning>
+ </description>
+ <configFile name="motif.conf">
+ <configObject name="endpoint">
+ <synopsis>The configuration for an endpoint.</synopsis>
+ <configOption name="context">
+ <synopsis>Default dialplan context that incoming sessions will be routed to</synopsis>
+ </configOption>
+ <configOption name="callgroup">
+ <synopsis>A callgroup to assign to this endpoint.</synopsis>
+ </configOption>
+ <configOption name="pickupgroup">
+ <synopsis>A pickup group to assign to this endpoint.</synopsis>
+ </configOption>
+ <configOption name="language">
+ <synopsis>The default language for this endpoint.</synopsis>
+ </configOption>
+ <configOption name="musicclass">
+ <synopsis>Default music on hold class for this endpoint.</synopsis>
+ </configOption>
+ <configOption name="parkinglot">
+ <synopsis>Default parking lot for this endpoint.</synopsis>
+ </configOption>
+ <configOption name="accountcode">
+ <synopsis>Accout code for CDR purposes</synopsis>
+ </configOption>
+ <configOption name="allow">
+ <synopsis>Codecs to allow</synopsis>
+ </configOption>
+ <configOption name="disallow">
+ <synopsis>Codecs to disallow</synopsis>
+ </configOption>
+ <configOption name="connection">
+ <synopsis>Connection to accept traffic on and on which to send traffic out</synopsis>
+ </configOption>
+ <configOption name="transport">
+ <synopsis>The transport to use for the endpoint.</synopsis>
+ <description>
+ <para>The default outbound transport for this endpoint. Inbound
+ messages are inferred. Allowed transports are <literal>ice-udp</literal>,
+ <literal>google</literal>, or <literal>google-v1</literal>. Note
+ that <literal>chan_motif</literal> will fall back to transport
+ preference order if the transport value chosen here fails.</para>
+ <enumlist>
+ <enum name="ice-udp">
+ <para>The Jingle protocol, as defined in XEP 0166.</para>
+ </enum>
+ <enum name="google">
+ <para>The Google Jingle protocol, which follows the Jingle
+ specification for signaling but uses a custom transport for
+ media.</para>
+ </enum>
+ <enum name="google-v1">
+ <para>Google-V1 is the original Google Talk signaling
+ protocol which uses an initial preliminary version of Jingle.
+ It also uses the same custom transport as <literal>google</literal> for media.</para>
+ </enum>
+ </enumlist>
+ </description>
+ </configOption>
+ <configOption name="maxicecandidates">
+ <synopsis>Maximum number of ICE candidates to offer</synopsis>
+ </configOption>
+ <configOption name="maxpayloads">
+ <synopsis>Maximum number of pyaloads to offer</synopsis>
+ </configOption>
+ </configObject>
+ </configFile>
+ </configInfo>
+***/
+
/*! \brief Default maximum number of ICE candidates we will offer */
#define DEFAULT_MAX_ICE_CANDIDATES "10"
@@ -406,6 +545,7 @@ static int jingle_endpoint_cmp(void *obj, void *arg, int flags)
static struct aco_type endpoint_option = {
.type = ACO_ITEM,
+ .name = "endpoint",
.category_match = ACO_BLACKLIST,
.category = "^general$",
.item_alloc = jingle_endpoint_alloc,