<html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <base href="https://wiki.asterisk.org/wiki" />
        <style type="text/css">
    body, #email-content, #email-content-inner { font-family: Arial,FreeSans,Helvetica,sans-serif; }
    body, p, blockquote, pre, code, td, th, li, dt, dd { font-size: 13px; }
    small { font-size: 11px; }

    body { width:100% !important; -webkit-font-smoothing: antialiased; }

    body,
    #email-wrapper { background-color: #f0f0f0; }
    #email-wrapper-inner { padding: 20px; text-align: center; }
    #email-content-inner { background-color: #fff; border: 1px solid #bbb; color: $menuTxtColour; padding:20px; text-align:left; }
    #email-wrapper-inner > table { width: 100%; }
    #email-wrapper-inner.thin > table { margin: 0 auto; width: 50%; }
    #email-footer { padding: 0 16px 32px 16px; margin: 0; }

    .email-indent { margin: 8px 0 16px 0; }
    .email-comment { margin: 0 0 0 56px; }
    .email-comment.removed { background-color: #ffe7e7; border: 1px solid #df9898; padding: 0 8px;}

    #email-title-avatar { text-align: left; vertical-align: top; width: 48px; padding-right: 8px; }
    #email-title-flavor { margin: 0; padding: 0 0 4px 0; }
    #email-title-heading { font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0; }
    #email-title .icon { border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle; }

    #email-actions { border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; }
    #email-actions td { padding-top: 8px; }
    #email-actions .left { max-width: 45%; text-align: left; }
    #email-actions .right { text-align: right; }
    .email-reply-divider { border-top: 1px solid #bbb; color: #505050; margin: 32px 0 8px 0; padding: 8px 0; }
    .email-section-title { border-bottom: 1px solid #bbb; margin: 8px 0; padding: 8px 0 0 0; }

    .email-metadata { color: #505050; }

    a { color: #326ca6; text-decoration: none; }
    a:hover { color: #336ca6; text-decoration: underline; }
    a:active {color: #326ca6; }

    a.email-footer-link { color: #505050; font-size: 11px; }

    .email-item-list { list-style: none; margin: 4px 0; padding-left: 0; }
    .email-item-list li { list-style: none; margin: 0; padding: 4px 0; }
    .email-list-divider { color: #505050; padding: 0 0.35em; }
    .email-operation-icon { padding-right: 5px; }

    .avatar { -ms-interpolation-mode: bicubic; border-radius: 3px;}
    .avatar-link { margin: 2px; }

    .tableview th { border-bottom: 1px solid #69C; font-weight: bold; text-align: left; }
    .tableview td { border-bottom: 1px solid #bbbbbb; text-align: left; padding: 4px 16px 4px 0; }

    .aui-message {  margin: 1em 0; padding: 8px; }
    .aui-message.info { background-color: #e0f0ff; border: 1px solid #9eb6d4; }
    .aui-message.success { background-color: #ddfade; border: 1px solid #93c49f; }
    .aui-message.error,
    .aui-message.removed { background-color: #ffe7e7; border: 1px solid #df9898; color: #000; }

    .call-to-action-table { margin: 10px 1px 1px 1px;}
    .call-to-cancel-container, .call-to-action-container { padding: 5px 20px; }
    .call-to-cancel-container { border: 1px solid #aaa; background-color: #eee; border-radius: 3px; }
    .call-to-cancel-container a.call-to-cancel-button { background-color: #eee; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #666; font-family: sans-serif;}
    .call-to-action-container { border: 1px solid #486582;  background-color: #3068A2; border-radius: 3px; padding: 4px 10px; }
    .call-to-action-container a.call-to-action-button { background-color: #3068A2; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #fff; font-weight: bold; font-family: sans-serif; }

    /** The span around the inline task checkbox image */
    .diff-inline-task-overlay {
        display: inline-block;
        text-align: center;
        height: 1.5em;
        padding: 5px 0px 1px 5px;
        margin-right: 5px;
        /** Unfortunately, the negative margin-left is stripped out in gmail */
        margin-left: -5px;
    }

            @media handheld, only screen and (max-device-width: 480px) {
        div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }
        small, small a { -webkit-text-size-adjust: 90%; }

        td[id=email-wrapper-inner] { padding: 2px !important; }
        td[id=email-content-inner] { padding: 8px !important; }
        td[id="email-wrapper-inner"][class="thin"] > table { text-align: left !important; width: 100% !important; }
        td[id=email-footer] { padding: 8px 12px !important; }
        div[class=email-indent] { margin: 8px 0px !important; }
        div[class=email-comment] { margin: 0 !important; }

        p[id=email-title-flavor] a { display: block; } /* puts the username and the action on separate lines */
        p[id=email-permalink] { padding: 4px 0 0 0 !important; }

        table[id=email-actions] td { padding-top: 0 !important; }
        table[id=email-actions] td.right { text-align: right !important; }
        table[id=email-actions] .email-list-item { display: block; margin: 1em 0 !important; word-wrap: normal !important; }
        span[class=email-list-divider] { display: none; }
    }



        </style>
    </head>
    <body style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; width: 100%; -webkit-font-smoothing: antialiased; background-color: #f0f0f0">
        <table id="email-wrapper" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f0f0f0">
            <tbody>
                <tr valign="middle">
                    <td id="email-wrapper-inner" style="font-size: 13px; padding: 20px; text-align: center">
                        <table id="email-content" cellspacing="0" cellpadding="0" border="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif; width: 100%">
                            <tbody>
                                <tr valign="top">
                                    <td id="email-content-inner" align="left" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; background-color: #fff; border: 1px solid #bbb; padding: 20px; text-align: left">
                                        <table id="email-title" cellpadding="0" cellspacing="0" border="0" width="100%">
                                            <tbody>
                                                <tr>
                                                    <td id="email-title-avatar" rowspan="2" style="font-size: 13px; text-align: left; vertical-align: top; width: 48px; padding-right: 8px"> <img class="avatar" src="cid:avatar_ce51dcf276530e4a4b00548e2a6d0905" border="0" height="48" width="48" style="-ms-interpolation-mode: bicubic; border-radius: 3px" /> </td>
                                                    <td valign="top" style="font-size: 13px">
                                                        <div id="email-title-flavor" class="email-metadata" style="margin: 0; padding: 0 0 4px 0; color: #505050">
                                                            <a href="    https://wiki.asterisk.org/wiki/display/~mjordan " style="color:#326ca6;text-decoration:none;; color: #326ca6; text-decoration: none">Matt Jordan</a> created a page:
                                                        </div> </td>
                                                </tr>
                                                <tr>
                                                    <td valign="top" style="font-size: 13px"> <h2 id="email-title-heading" style="font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0"> <a href="https://wiki.asterisk.org/wiki/display/AST/New+in+12" style="color: #326ca6; text-decoration: none"> <img class="icon" src="cid:page-icon" alt="" style="border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle" /> <strong style="font-size:16px;line-height:20px;vertical-align:top;">New in 12</strong> </a> </h2> </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                        <div class="email-indent" style="margin: 8px 0 16px 0">
                                            <div class="email-page">
                                                <h1 id="Newin12-Overview">Overview</h1>
                                                <p style="font-size: 13px">Asterisk 12 is a standard release of the Asterisk project. As such, the&nbsp;focus of development for this release was on core architectural changes and&nbsp;major new features. This includes:</p>
                                                <ul>
                                                    <li style="font-size: 13px">A more flexible bridging core based on the Bridging API</li>
                                                    <li style="font-size: 13px">A new internal message bus, Stasis</li>
                                                    <li style="font-size: 13px">Major standardization and consistency improvements to AMI</li>
                                                    <li style="font-size: 13px">Addition of the Asterisk RESTful Interface (ARI)</li>
                                                    <li style="font-size: 13px">A new SIP channel driver, chan_pjsip</li>
                                                </ul>
                                                <p style="font-size: 13px">In addition, as the vast majority of bridging in Asterisk was migrated to the&nbsp;Bridging API used by ConfBridge, major changes were made to most of the&nbsp;interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.</p>
                                                <p style="font-size: 13px">Specifications have been written for the affected interfaces. These&nbsp;specifications are available on the Asterisk wiki:<br /> * AMI - <a href="https://wiki.asterisk.org/wiki/x/dAFRAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/dAFRAQ</a> <br /> * CEL - <a href="https://wiki.asterisk.org/wiki/x/4ICLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/4ICLAQ</a> <br /> * CDRs - <a href="https://wiki.asterisk.org/wiki/x/pwpRAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/pwpRAQ</a> </p>
                                                <p style="font-size: 13px">It is <strong>highly</strong> recommended that anyone migrating to Asterisk 12 read the&nbsp;information regarding its release both in this file and in the accompanying&nbsp;UPGRADE.txt file. More detailed information on the major changes can be found&nbsp;on the Asterisk wiki at <a href="https://wiki.asterisk.org/wiki/x/0YCLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/0YCLAQ</a>.</p>
                                                <p style="font-size: 13px">
                                                    <style type="text/css">/**/
div.rbtoc1377746885793 {padding: 0px;}
div.rbtoc1377746885793 ul {list-style: disc;margin-left: 0px;}
div.rbtoc1377746885793 li {margin-left: 0px;padding-left: 0px;}

/**/
                                                    </style> </p>
                                                <div class="toc-macro rbtoc1377746885793" style="padding: 0px">
                                                    <ul class="toc-indentation" style="list-style: disc; margin-left: 0px">
                                                        <li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <a href="#Newin12-Overview" style="color: #326ca6; text-decoration: none">Overview</a> </li>
                                                        <li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <a href="#Newin12-BuildSystem" style="color: #326ca6; text-decoration: none"><span style="line-height: 1.25;">Build System</span></a> </li>
                                                        <li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <a href="#Newin12-Applications" style="color: #326ca6; text-decoration: none"> <br />Applications</a> </li>
                                                    </ul>
                                                </div>
                                                <p style="font-size: 13px"></p>
                                                <h1 id="Newin12-BuildSystem"> <span style="line-height: 1.25;">Build System</span> </h1>
                                                <ul>
                                                    <li style="font-size: 13px">Added build option <code style="font-size: 13px">DISABLE_INLINE</code>. This option can be used to work around a&nbsp;bug in gcc. For more information, see&nbsp;<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816</a> </li>
                                                    <li style="font-size: 13px">Removed the <code style="font-size: 13px">CHANNEL_TRACE</code>&nbsp;development mode build option. Certain aspects of&nbsp;the <code style="font-size: 13px">CHANNEL_TRACE</code>&nbsp;build option were incompatible with the new bridging&nbsp;architecture.</li>
                                                    <li style="font-size: 13px">Asterisk now optionally uses <code style="font-size: 13px">libxslt</code>&nbsp;to improve XML documentation generation&nbsp;and maintainability. If libxslt is not available on the system, some XML&nbsp;documentation will be incomplete.</li>
                                                    <li style="font-size: 13px">Asterisk now depends on <code style="font-size: 13px">libjansson</code>. If a package of <code style="font-size: 13px">libjansson</code>&nbsp;is not&nbsp;available on your distro, please see <a href="http://www.digip.org/jansson/" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">http://www.digip.org/jansson/</a>.</li>
                                                    <li style="font-size: 13px">Asterisk now depends on <code style="font-size: 13px">libuuid</code>&nbsp;and, optionally, <code style="font-size: 13px">uriparser</code>. It is&nbsp;recommended that you install <code style="font-size: 13px">uriparser</code>, even if it is optional.</li>
                                                    <li style="font-size: 13px">The new SIP stack and channel driver currently use a particular version of PJSIP.&nbsp;Please see <a href="https://wiki.asterisk.org/wiki/x/J4GLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/J4GLAQ</a> for more information on&nbsp;configuring and installing PJSIP for usage with Asterisk.</li>
                                                </ul>
                                                <h1 id="Newin12-Applications"> <br />Applications</h1>
                                                <h2 id="Newin12-AgentLogin">AgentLogin</h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.5;">Along with AgentRequest, this application has been modified to be a&nbsp;</span>replacement for <code style="font-size: 13px">chan_agent</code>. The act of a channel calling the AgentLogin&nbsp;application places the channel into a pool of agents that can be&nbsp;requested by the AgentRequest application. Note that this application, as&nbsp;well as all other agent related functionality, is now provided by the&nbsp;<code style="font-size: 13px">app_agent_pool</code>&nbsp;module. See <a href="#Newin12-channels_chan_agent" style="color: #326ca6; text-decoration: none">chan_agent</a> and <a href="https://wiki.asterisk.org/wiki/display/AST/New+in+12" style="color: #326ca6; text-decoration: none">AgentRequest</a> for more information.</li>
                                                    <li style="font-size: 13px">This application no longer performs agent authentication. If authentication&nbsp;is desired, the dialplan needs to perform this function using the&nbsp;Authenticate or VMAuthenticate application or through an AGI script before&nbsp;running AgentLogin.</li>
                                                    <li style="font-size: 13px">If this application is called and the agent is already logged in, the&nbsp;dialplan will continue exection with the AGENT_STATUS channel variable set&nbsp;to ALREADY_LOGGED_IN.</li>
                                                    <li style="font-size: 13px">The <em>agents.conf</em> schema has changed. Rather than specifying agents on a&nbsp;single line in comma delineated fashion, each agent is defined in a separate&nbsp;context. This allows agents to use the power of context templates in their&nbsp;definition.</li>
                                                    <li style="font-size: 13px">A number of parameters from <em>agents.conf</em> have been removed. This includes:
                                                        <ul>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">maxloginretries</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">autologoffunavail</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">updatecdr</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">goodbye</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">group</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">recordformat</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">urlprefix</code> </li>
                                                            <li style="font-size: 13px"> <code style="font-size: 13px">savecallsin</code> </li>
                                                        </ul>These options were obsoleted by the move from&nbsp;a channel driver model to the bridging/application model provided by&nbsp;<code style="font-size: 13px">app_agent_pool</code>.</li>
                                                </ul>
                                                <p style="font-size: 13px"> <span class="confluence-anchor-link" id="Newin12-app_AgentRequest"></span> </p>
                                                <h2 id="Newin12-AgentRequest">AgentRequest</h2>
                                                <ul>
                                                    <li style="font-size: 13px">A new application, this will request a logged in agent from the pool and&nbsp;<span style="line-height: 1.4285715;">bridge the requested channel with the channel calling this application.&nbsp;</span><span style="line-height: 1.4285715;">Logged in agents are those channels that called the AgentLogin application.&nbsp;</span><span style="line-height: 1.4285715;">If an agent cannot be requested from the pool, the <code style="font-size: 13px">AGENT_STATUS</code>&nbsp;dialplan&nbsp;</span><span style="line-height: 1.4285715;">application will be set with an appropriate error value.</span> </li>
                                                </ul>
                                                <h2 id="Newin12-AgentMonitorOutgoing">AgentMonitorOutgoing</h2>
                                                <ul>
                                                    <li style="font-size: 13px">This application has been removed. It was a holdover from when&nbsp;AgentCallbackLogin was removed in Asterisk 1.6.0.</li>
                                                </ul>
                                                <h2 id="Newin12-AlarmReceiver">AlarmReceiver</h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <h2 id="Newin12-AddedsupportforadditionalAdemcoDTMFsignallingformats%2CincludingExpress4%2B1%2CExpress4%2B2%2CHighSpeedandSuperFast."> <span style="color: rgb(51,51,51);font-family: &quot;Helvetica Neue&quot; , Helvetica , Arial , sans-serif;font-size: 14.0px;line-height: 1.4285715;">Added support for additional Ademco DTMF signalling formats, including</span>&nbsp;<span style="color: rgb(51,51,51);font-family: &quot;Helvetica Neue&quot; , Helvetica , Arial , sans-serif;font-size: 14.0px;line-height: 1.4285715;">Express 4+1, Express 4+2, High Speed and Super Fast.</span> </h2> </li>
                                                    <li style="font-size: 13px">Added channel variable <code style="font-size: 13px">ALARMRECEIVER_CALL_LIMIT</code>. This sets the maximum&nbsp;<span style="line-height: 1.4285715;">call time, in milliseconds, to run the application.</span> </li>
                                                    <li style="font-size: 13px">Added channel variable <code style="font-size: 13px">ALARMRECEIVER_RETRIES_LIMIT</code>. This sets the&nbsp;<span style="line-height: 1.4285715;">maximum number of times to retry the call.</span> </li>
                                                    <li style="font-size: 13px">Added a new configuration option <code style="font-size: 13px">answait</code>. If set, the AlarmReceiver&nbsp;<span style="line-height: 1.4285715;">application will wait the number of milliseconds specified by&nbsp;<code style="font-size: 13px">answait</code>&nbsp;</span><span style="line-height: 1.4285715;">after the channel has answered. Valid values range between 500&nbsp;</span><span style="line-height: 1.4285715;">milliseconds and 10000 milliseconds.</span> </li>
                                                    <li style="font-size: 13px">Added configuration option&nbsp;<code style="font-size: 13px">no_group_meta</code>. If enabled, grouping of metadata&nbsp;<span style="line-height: 1.4285715;">information in the AlarmReceiver log file will be skipped.</span> </li>
                                                </ul>
                                                <h2 id="Newin12-BridgeWait">BridgeWait</h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.4285715;">A new application in Asterisk, this will place the calling channel&nbsp;</span>into a holding bridge, optionally entertaining them with some form of&nbsp;media. Channels participating in a holding bridge do not interact with&nbsp;<span style="line-height: 1.4285715;">other channels in the same holding bridge. Optionally, however, a channel&nbsp;</span><span style="line-height: 1.4285715;">may join as an announcer. Any media passed from an announcer channel is&nbsp;</span><span style="line-height: 1.4285715;">played to all channels in the holding bridge. Channels leave a holding&nbsp;</span><span style="line-height: 1.4285715;">bridge either when an optional timer expires, or via the ChannelRedirect&nbsp;</span><span style="line-height: 1.4285715;">application or AMI Redirect action.</span> </li>
                                                </ul>
                                                <h2 id="Newin12-ConfBridge">ConfBridge</h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.5;">All participants in a bridge can now be kicked out of a conference room&nbsp;</span>by specifying the channel parameter as 'all' in the ConfBridge kick CLI&nbsp;command, i.e.,&nbsp;<code style="font-size: 13px">confbridge kick &lt;conference&gt; all</code> </li>
                                                    <li style="font-size: 13px">CLI output for the <code style="font-size: 13px">confbridge list</code>&nbsp;command has been improved. When&nbsp;displaying information about a particular bridge, flags will now be shown&nbsp;for the participating users indicating properties of that user.</li>
                                                    <li style="font-size: 13px">The ConfbridgeList event now contains the following fields: <code style="font-size: 13px">WaitMarked</code>,&nbsp;<code style="font-size: 13px">EndMarked</code>, and <code style="font-size: 13px">Waiting</code>. This displays additional properties about the&nbsp;user's profile, as well as whether or not the user is waiting for a&nbsp;Marked user to enter the conference.</li>
                                                    <li style="font-size: 13px">Added a new option for conference recording, <code style="font-size: 13px">record_file_append</code>. If enabled,&nbsp;when the recording is stopped and then re-started, the existing recording&nbsp;will be used and appended to.</li>
                                                </ul>
                                                <h2 id="Newin12-ControlPlayback"> <span style="line-height: 1.4285715;">ControlPlayback</span> </h2>
                                                <ul>
                                                    <li style="font-size: 13px">The channel variable <code style="font-size: 13px">CPLAYBACKSTATUS</code>&nbsp;may now return the value <code style="font-size: 13px">REMOTESTOPPED</code>. This occurs when playback is stopped by a remote interface,&nbsp;such as AMI. See the AMI action ControlPlayback for more information.</li>
                                                </ul>
                                                <h2 id="Newin12-Directory"> <span style="line-height: 1.4285715;">Directory</span> </h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">Added the <code style="font-size: 13px">a</code>&nbsp;option, which allows the caller to enter in an additional&nbsp;</span><span style="line-height: 1.4285715;">alias for the user in the directory. This option must be used in conjunction&nbsp;</span><span style="line-height: 1.4285715;">with the <code style="font-size: 13px">f</code>, <code style="font-size: 13px">l</code>, or <code style="font-size: 13px">b</code>&nbsp;options. Note that the alias for a user can be&nbsp;</span><span style="line-height: 1.4285715;">specified in <em>voicemail.conf</em>.</span> </li>
                                                </ul>
                                                <h2 id="Newin12-DumpChan"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">DumpChan</span> </h2>
                                                <ul>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.4285715;">The output of DumpChan no longer includes the <code style="font-size: 13px">DirectBridge</code>&nbsp;or <code style="font-size: 13px">IndirectBridge</code>&nbsp;</span><span style="line-height: 1.4285715;">fields. Instead, if a channel is in a bridge, it includes a <code style="font-size: 13px">BridgeID</code>&nbsp;field&nbsp;</span><span style="line-height: 1.4285715;">containing the unique ID of the bridge that the channel happens to be in.</span> </li>
                                                </ul>
                                                <h2 id="Newin12-ForkCDR"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">ForkCDR</span> </h2>
                                                <ul>
                                                    <li style="font-size: 13px">ForkCDR no longer automatically resets the forked CDR. See the <code style="font-size: 13px">r</code>&nbsp;option&nbsp;for more information.</li>
                                                    <li style="font-size: 13px"> <span style="line-height: 1.4285715;">Variables are no longer purged from the original CDR. See the <code style="font-size: 13px">v</code>&nbsp;option for&nbsp;</span><span style="line-height: 1.4285715;">more information.</span> </li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">A</code>&nbsp;option has been removed. The Answer time on a CDR is never updated&nbsp;once set.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">d</code>&nbsp;option has been removed. The disposition on a CDR is a function of&nbsp;the state of the channel and cannot be altered.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">D</code>&nbsp;option has been removed. Who the Party B is on a CDR is a function&nbsp;of the state of the respective channels involved in the CDR and cannot be&nbsp;altered.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">r</code>&nbsp;option has been changed. Previously, ForkCDR always reset the CDR&nbsp;such that the start time and, if applicable, the answer time was updated.&nbsp;Now, by default, ForkCDR simply forks the CDR, maintaining any times. The <code style="font-size: 13px">r</code>&nbsp;option now triggers the Reset, setting the start time (and answer time&nbsp;if applicable) to the current time. Note that the <code style="font-size: 13px">a</code>&nbsp;option still sets&nbsp;the answer time to the current time if the channel was already answered.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">s</code>&nbsp;option has been removed. A variable can be set on the original CDR&nbsp;if desired using the CDR function, and removed from a forked CDR using the&nbsp;same function.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">T</code>&nbsp;option has been removed. The concept of <code style="font-size: 13px">DONT_TOUCH</code>&nbsp;and <code style="font-size: 13px">LOCKED</code>&nbsp;no&nbsp;longer applies in the CDR engine.</li>
                                                    <li style="font-size: 13px">The <code style="font-size: 13px">v</code>&nbsp;option now prevents the copy of the variables from the original CDR&nbsp;to the forked CDR. Previously the variables were always copied but were&nbsp;removed from the original. This was changed as removing variables from a CDR&nbsp;can have unintended side effects - this option allows the user to prevent&nbsp;propagation of variables from the original to the forked without modifying&nbsp;the original.</li>
                                                </ul>
                                                <h2 id="Newin12-MeetMe"> <span style="line-height: 1.4285715;">MeetMe</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* Added the <code style="font-size: 13px">n</code>&nbsp;option to MeetMe to prevent application of the DENOISE&nbsp;</span><span style="line-height: 1.4285715;">function to a channel joining a conference. Some channel drivers that vary&nbsp;</span><span style="line-height: 1.4285715;">the number of audio samples in a voice frame will experience significant&nbsp;</span><span style="line-height: 1.4285715;">quality problems if a denoiser is attached to the channel; this option gives&nbsp;</span><span style="line-height: 1.4285715;">them the ability to remove the denoiser without having to unload <code style="font-size: 13px">func_speex</code>.</span> </p>
                                                <h2 id="Newin12-MixMonitor"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">MixMonitor</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The 'b' option now includes conferences as well as sounds played to the&nbsp;</span><span style="line-height: 1.4285715;">participants.</span> </p>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor&nbsp;</span><span style="line-height: 1.4285715;">running during a transfer. If a MixMonitor is started on a channel,&nbsp;</span><span style="line-height: 1.4285715;">the MixMonitor will continue to record the audio passing through the&nbsp;</span><span style="line-height: 1.4285715;">channel even in the presence of transfers.</span> </p>
                                                <h2 id="Newin12-NoCDR"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">NoCDR</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The NoCDR application is deprecated. Please use the CDR_PROP function to&nbsp;</span><span style="line-height: 1.4285715;">disable CDRs.</span> </p>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* While the NoCDR application will prevent CDRs for a channel from being&nbsp;propagated to registered CDR backends, it will not prevent that data from&nbsp;being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP&nbsp;function that enables CDRs on a channel will restore those records that have&nbsp;not yet been finalized.</span> </p>
                                                <h2 id="Newin12-ParkAndAnnounce"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">ParkAndAnnounce</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The app_parkandannounce module has been removed. The application&nbsp;</span><span style="line-height: 1.4285715;">ParkAndAnnounce is now provided by the res_parking module. See the&nbsp;</span><span style="line-height: 1.4285715;">res_parking changes for more information.</span> </p>
                                                <h2 id="Newin12-Queue"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">Queue</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* Added queue available hint. The hint can be added to the dialplan using the&nbsp;</span><span style="line-height: 1.4285715;">following syntax: exten,hint,Queue:{queue_name}_avail&nbsp;</span><span style="line-height: 1.4285715;">For example, if the name of the queue is 'markq':&nbsp;</span><span style="line-height: 1.4285715;">exten =&gt; 8501,hint,Queue:markq_avail&nbsp;</span><span style="line-height: 1.4285715;">This will report 'InUse' if there are no logged in agents or no free agents.&nbsp;</span><span style="line-height: 1.4285715;">It will report 'Idle' when an agent is free.</span> </p>
                                                <p style="font-size: 13px">* Queues now support a hint for member paused state. The hint uses the form&nbsp;'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}&nbsp;are the name of the queue and the name of the member to subscribe to,&nbsp;respectively. For example: exten =&gt; 8501,hint,Queue:sales_pause_mark.&nbsp;Members will show as In Use when paused.</p>
                                                <p style="font-size: 13px">* The configuration options eventwhencalled and eventmemberstatus have been&nbsp;removed. As a result, the AMI events QueueMemberStatus, AgentCalled,&nbsp;AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be&nbsp;sent. The &quot;Variable&quot; fields will also no longer exist on the Agent* events.&nbsp;These events can be filtered out from a connected AMI client using the&nbsp;eventfilter setting in manager.conf.</p>
                                                <p style="font-size: 13px">* The queue log now differentiates between blind and attended transfers. A&nbsp;blind transfer will result in a BLINDTRANSFER message with the destination&nbsp;context and extension. An attended transfer will result in an&nbsp;ATTENDEDTRANSFER message. This message will indicate the method by which&nbsp;the attended transfer was completed: &quot;BRIDGE&quot; for a bridge merge, &quot;APP&quot;&nbsp;for running an application on a bridge or channel, or &quot;LINK&quot; for linking&nbsp;two bridges together with local channels. The queue log will also now detect&nbsp;externally initiated blind and attended transfers and record the transfer&nbsp;status accordingly.</p>
                                                <p style="font-size: 13px">* When performing queue pause/unpause on an interface without specifying an&nbsp;individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at&nbsp;least one member of any queue exists for that interface.</p>
                                                <p style="font-size: 13px">* Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT&nbsp;for realtime queue log entries.</p>
                                                <h2 id="Newin12-ResetCDR"> <span style="line-height: 1.4285715;">ResetCDR</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The 'e' option has been deprecated. Use the CDR_PROP function to re-enable&nbsp;</span><span style="line-height: 1.4285715;">CDRs when they were previously disabled on a channel.</span> </p>
                                                <p style="font-size: 13px">* The 'w' and 'a' options have been removed. Dispatching CDRs to registered&nbsp;backends occurs on an as-needed basis in order to preserve linkedid&nbsp;propagation and other needed behavior.</p>
                                                <h2 id="Newin12-SayAlphaCase"> <span style="line-height: 1.4285715;">SayAlphaCase</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* A new application, this is similar to SayAlpha except that it supports&nbsp;</span><span style="line-height: 1.4285715;">case sensitive playback of the specified characters. For example,&nbsp;</span><span style="line-height: 1.4285715;">SayAlphaCase(u,aBc) will result in 'a uppercase b c'.</span> </p>
                                                <h2 id="Newin12-SetAMAFlags"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">SetAMAFlags</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* This application is deprecated in favor of CHANNEL(amaflags).</span> </p>
                                                <h2 id="Newin12-SendDTMF"> <span style="line-height: 1.4285715;">S</span><span style="line-height: 1.4285715;">endDTMF</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The SendDTMF application will now accept 'W' as valid input. This will cause&nbsp;</span><span style="line-height: 1.4285715;">the application to delay one second while streaming DTMF.</span> </p>
                                                <h2 id="Newin12-Stasis"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">Stasis</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* A new application in Asterisk 12, this hands control of the channel calling&nbsp;</span><span style="line-height: 1.4285715;">the application over to an external system. Currently, external systems&nbsp;</span><span style="line-height: 1.4285715;">manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).</span> </p>
                                                <h2 id="Newin12-UserEvent"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">UserEvent</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* UserEvent will now handle duplicate keys by overwriting the previous value&nbsp;</span><span style="line-height: 1.4285715;">assigned to the key.</span> </p>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* In addition to AMI, UserEvent invocations will now be distributed to any&nbsp;</span><span style="line-height: 1.4285715;">interested Stasis applications.</span> </p>
                                                <h2 id="Newin12-VoiceMail"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">VoiceMail</span> </h2>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">&nbsp;</span><span style="line-height: 1.4285715;">* The voicemail.conf configuration file now has an 'alias' configuration&nbsp;</span><span style="line-height: 1.4285715;">parameter for use with the Directory application. The voicemail realtime&nbsp;</span><span style="line-height: 1.4285715;">database table schema has also been updated with an 'alias' column.</span> </p>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;"> <br /> </span> </p>
                                                <p style="font-size: 13px"> <span style="line-height: 1.4285715;">Codecs</span> </p>
                                                <p style="font-size: 13px">------------------<br /> * Pass through support has been added for both VP8 and Opus.</p>
                                                <p style="font-size: 13px">* Added format attribute negotiation for the Opus codec. Format attribute<br /> negotiation is provided by the res_format_attr_opus module.</p>
                                                <p style="font-size: 13px"> <br />Core<br />------------------<br /> * Masquerades as an operation inside Asterisk have been effectively hidden<br /> by the migration to the Bridging API. As such, many 'quirks' of Asterisk<br /> no longer occur. This includes renaming of channels, &quot;&lt;ZOMBIE&gt;&quot; channels,<br /> dropping of frame/audio hooks, and other internal implementation details<br /> that users had to deal with. This fundamental change has large implications<br /> throughout the changes documented for this version. For more information<br /> about the new core architecture of Asterisk, please see the Asterisk wiki.</p>
                                                <p style="font-size: 13px">* Multiple parties in a bridge may now be transferred. If a participant in a<br /> multi-party bridge initiates a blind transfer, a Local channel will be used<br /> to execute the dialplan location that the transferer sent the parties to. If<br /> a participant in a multi-party bridge initiates an attended transfer,<br /> several options are possible. If the attended transfer results in a transfer<br /> to an application, a Local channel is used. If the attended transfer results<br /> in a transfer to another channel, the resulting channels will be merged into<br /> a single bridge.</p>
                                                <p style="font-size: 13px">* The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel<br /> driver specific. If the channel variable is set on the transferrer channel,<br /> the sound will be played to the target of an attended transfer.</p>
                                                <p style="font-size: 13px">* The channel variable BRIDGEPEER becomes a comma separated list of peers in<br /> a multi-party bridge. The BRIDGEPEER value can have a maximum of 10 peers<br /> listed. Any more peers in the bridge will not be included in the list.<br /> BRIDGEPEER is not valid in holding bridges like parking since those channels<br /> do not talk to each other even though they are in a bridge.</p>
                                                <p style="font-size: 13px">* The channel variable BRIDGEPVTCALLID is only valid for two party bridges<br /> and will contain a value if the BRIDGEPEER's channel driver supports it.</p>
                                                <p style="font-size: 13px">* A channel variable ATTENDEDTRANSFER is now set which indicates which channel<br /> was responsible for an attended transfer in a similar fashion to<br /> BLINDTRANSFER.</p>
                                                <p style="font-size: 13px">* Modules using the Configuration Framework or Sorcery must have XML<br /> configuration documentation. This configuration documentation is included<br /> with the rest of Asterisk's XML documentation, and is accessible via CLI<br /> commands. See the CLI changes for more information.</p>
                                                <p style="font-size: 13px">AMI (Asterisk Manager Interface)<br />------------------<br /> * Major changes were made to both the syntax as well as the semantics of the<br /> AMI protocol. In particular, AMI events have been substantially improved<br /> in this version of Asterisk. For more information, please see the AMI<br /> specification at <a href="https://wiki.asterisk.org/wiki/x/dAFRAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/dAFRAQ</a> </p>
                                                <p style="font-size: 13px">* AMI events that reference a particular channel or bridge will now always<br /> contain a standard set of fields. When multiple channels or bridges are<br /> referenced in an event, fields for at least some subset of the channels<br /> and bridges in the event will be prefixed with a descriptive name to avoid<br /> name collisions. See the AMI event documentation on the Asterisk wiki for<br /> more information.</p>
                                                <p style="font-size: 13px">* The CLI command 'manager show commands' no longer truncates command names<br /> longer than 15 characters and no longer shows authorization requirement<br /> for commands. 'manager show command' now displays the privileges needed<br /> for using a given manager command instead.</p>
                                                <p style="font-size: 13px">* The SIPshowpeer action will now include a 'SubscribeContext' field for a<br /> peer in its response if the peer has a subscribe context set.</p>
                                                <p style="font-size: 13px">* The SIPqualifypeer action now acknowledges the request once it has<br /> established that the request is against a known peer. It also issues a new<br /> event, 'SIPQualifyPeerDone', once the qualify action has been completed.</p>
                                                <p style="font-size: 13px">* The PlayDTMF action now supports an optional 'Duration' parameter. This<br /> specifies the duration of the digit to be played, in milliseconds.</p>
                                                <p style="font-size: 13px">* Added VoicemailRefresh action to allow an external entity to trigger mailbox<br /> updates when changes occur instead of requiring the use of pollmailboxes.</p>
                                                <p style="font-size: 13px">* Added a new action 'ControlPlayback'. The ControlPlayback action allows an<br /> AMI client to manipulate audio currently being played back on a channel. The<br /> supported operations depend on the application being used to send audio to<br /> the channel. When the audio playback was initiated using the ControlPlayback<br /> application or CONTROL STREAM FILE AGI command, the audio can be paused,<br /> stopped, restarted, reversed, or skipped forward. When initiated by other<br /> mechanisms (such as the Playback application), the audio can be stopped,<br /> reversed, or skipped forward.</p>
                                                <p style="font-size: 13px">* Channel related events now contain a snapshot of channel state, adding new<br /> fields to many of these events.</p>
                                                <p style="font-size: 13px">* The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed<br /> in a future release. Please use the common 'Exten' field instead.</p>
                                                <p style="font-size: 13px">* The AMI event 'UserEvent' from app_userevent now contains the channel state<br /> fields. The channel state fields will come before the body fields.</p>
                                                <p style="font-size: 13px">* The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and<br /> 'UnParkedCall' have changed significantly in the new res_parking module.</p>
                                                <p style="font-size: 13px">The 'Channel' and 'From' headers are gone. For the channel that was parked<br /> or is coming out of parking, a 'Parkee' channel snapshot is issued and it<br /> has a number of fields associated with it. The old 'Channel' header relayed<br /> the same data as the new 'ParkeeChannel' header.</p>
                                                <p style="font-size: 13px">The 'From' field was ambiguous and changed meaning depending on the event.<br /> for most of these, it was the name of the channel that parked the call<br /> (the 'Parker'). There is no longer a header that provides this channel name,<br /> however the 'ParkerDialString' will contain a dialstring to redial the<br /> device that parked the call.</p>
                                                <p style="font-size: 13px">On UnParkedCall events, the 'From' header would instead represent the<br /> channel responsible for retrieving the parkee. It receives a channel<br /> snapshot labeled 'Retriever'. The 'from' field is is replaced with<br /> 'RetrieverChannel'.</p>
                                                <p style="font-size: 13px">Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.</p>
                                                <p style="font-size: 13px">* The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar<br /> fashion has changed the field names 'StartExten' and 'StopExten' to<br /> 'StartSpace' and 'StopSpace' respectively.</p>
                                                <p style="font-size: 13px">* The deprecated use of | (pipe) as a separator in the channelvars setting in<br /> manager.conf has been removed.</p>
                                                <p style="font-size: 13px">* Channel Variables conveyed with a channel no longer contain the name of the<br /> channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now<br /> ChanVariable: bar=baz. When multiple channels are present in a single AMI<br /> event, the various ChanVariable fields will contain a suffix that specifies<br /> which channel they correspond to.</p>
                                                <p style="font-size: 13px">* The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI<br /> event always conveys the AMI event for a particular channel.</p>
                                                <p style="font-size: 13px">* All 'Reload' events have been consolidated into a single event type. This<br /> event will always contain a Module field specifying the name of the module<br /> and a Status field denoting the result of the reload. All modules now issue<br /> this event when being reloaded.</p>
                                                <p style="font-size: 13px">* The 'ModuleLoadReport' event has been removed. Most AMI connections would<br /> fail to receive this event due to being connected after modules have loaded.<br /> AMI connections that want to know when Asterisk is ready should listen for<br /> the 'FullyBooted' event.</p>
                                                <p style="font-size: 13px">* app_fax now sends the same send fax/receive fax events as res_fax. The<br /> 'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is<br /> now the 'ReceiveFAX' event.</p>
                                                <p style="font-size: 13px">* The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and<br /> 'MusicOnHoldStop'. The sub type field has been removed.</p>
                                                <p style="font-size: 13px">* The 'JabberEvent' event has been removed. It is not AMI's purpose to be a<br /> carrier for another protocol.</p>
                                                <p style="font-size: 13px">* The Bridge Manager action's 'Playtone' header now accepts more fine-grained<br /> options. 'Channel1' and 'Channel2' may be specified in order to play a tone<br /> to the specific channel. 'Both' may be specified to play a tone to both<br /> channels. The old 'yes' option is still accepted as a way of playing the<br /> tone to Channel2 only.</p>
                                                <p style="font-size: 13px">* The AMI 'Status' response event to the AMI Status action replaces the<br /> 'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to<br /> indicate what bridge the channel is currently in.</p>
                                                <p style="font-size: 13px">* The AMI 'Hold' event has been moved out of individual channel drivers, into<br /> core, and is now two events: 'Hold' and 'Unhold'. The status field has been<br /> removed.</p>
                                                <p style="font-size: 13px">* The AMI events in app_queue have been made more consistent with each other.<br /> Events that reference channels (QueueCaller* and Agent*) will show<br /> information about each channel. The (infamous) 'Join' and 'Leave' AMI<br /> events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.</p>
                                                <p style="font-size: 13px">* The 'MCID' AMI event now publishes a channel snapshot when available and<br /> its non-channel-snapshot parameters now use either the &quot;MCallerID&quot; or<br /> 'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead<br /> of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named<br /> parameters in the channel snapshot.</p>
                                                <p style="font-size: 13px">* The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed<br /> 'AgentLogin' and 'AgentLogoff' respectively.</p>
                                                <p style="font-size: 13px">* The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been<br /> renamed &quot;DAHDIChannel&quot; since it does not convey an Asterisk channel name.</p>
                                                <p style="font-size: 13px">* 'ChannelUpdate' events have been removed.</p>
                                                <p style="font-size: 13px">* All AMI events now contain a 'SystemName' field, if available.</p>
                                                <p style="font-size: 13px">* Local channel optimization is now conveyed in two events:<br /> 'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent<br /> when the Local channel driver begins attempting to optimize itself out of<br /> the media path; the End event is sent after the channel halves have<br /> successfully optimized themselves out of the media path.</p>
                                                <p style="font-size: 13px">* Local channel information in events is now prefixed with 'LocalOne' and<br /> 'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of<br /> the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',<br /> and 'LocalOptimizationEnd' events.</p>
                                                <p style="font-size: 13px">* The option 'allowmultiplelogin' can now be set or overriden in a particular<br /> account. When set in the general context, it will act as the default<br /> setting for defined accounts.</p>
                                                <p style="font-size: 13px">* The 'BridgeAction' event was removed. It technically added no value, as the<br /> Bridge Action already receives confirmation of the bridge through a<br /> successful completion Event.</p>
                                                <p style="font-size: 13px">* The 'BridgeExec' events were removed. These events duplicated the events that<br /> occur in the Briding API, and are conveyed now through BridgeCreate,<br /> BridgeEnter, and BridgeLeave events.</p>
                                                <p style="font-size: 13px">* The 'RTCPSent'/'RTCPReceived' events have been significantly modified from<br /> previous versions. They now report all SR/RR packets sent/received, and<br /> have been restructured to better reflect the data sent in a SR/RR. In<br /> particular, the event structure now supports multiple report blocks.</p>
                                                <p style="font-size: 13px">* Added 'BlindTransfer' and 'AttendedTransfer' events. These events are<br /> raised when a blind transfer/attended transfer completes successfully.<br /> They contain information about the transfer that just completed, including<br /> the location of the transfered channel.</p>
                                                <p style="font-size: 13px">CDR (Call Detail Records)<br />------------------<br /> * Significant changes have been made to the behavior of CDRs. The CDR engine<br /> was effectively rewritten and built on the Stasis message bus. For a full<br /> definition of CDR behavior in Asterisk 12, please read the specification<br /> on the Asterisk wiki (wiki.asterisk.org).</p>
                                                <p style="font-size: 13px">* CDRs will now be created between all participants in a bridge. For each<br /> pair of channels in a bridge, a CDR is created to represent the path of<br /> communication between those two endpoints. This lets an end user choose who<br /> to bill for what during bridge operations with multiple parties.</p>
                                                <p style="font-size: 13px">* The duration, billsec, start, answer, and end times now reflect the times<br /> associated with the current CDR for the channel, as opposed to a cumulative<br /> measurement of all CDRs for that channel.</p>
                                                <p style="font-size: 13px">* When a CDR is dispatched, user defined CDR variables from both parties are<br /> included in the resulting CDR. If both parties have the same variable, only<br /> the Party A value is provided.</p>
                                                <p style="font-size: 13px">* Added a new option to cdr.conf, 'debug'. When enabled, significantly more<br /> information regarding the CDR engine is logged as verbose messages. This<br /> option should only be used if the behavior of the CDR engine needs to be<br /> debugged.</p>
                                                <p style="font-size: 13px">* Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting<br /> normally configured in cdr.conf.</p>
                                                <p style="font-size: 13px">* Added CLI command 'cdr show active {channel}'. When {channel} is not<br /> specified, this command provides a summary of the channels with CDR<br /> information and their statistics. When {channel} is specified, it shows<br /> detailed information about all records associated with {channel}.</p>
                                                <p style="font-size: 13px">CEL (Channel Event Logging)<br />------------------<br /> * CEL has undergone significant rework in Asterisk 12, and is now built on the<br /> Stasis message bus. Please see the specification for CEL on the Asterisk<br /> wiki at <a href="https://wiki.asterisk.org/wiki/x/4ICLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/4ICLAQ</a> for more detailed<br /> information.</p>
                                                <p style="font-size: 13px">* The 'extra' field of all CEL events that use it now consists of a JSON blob<br /> with key/value pairs which are defined in the Asterisk 12 CEL documentation.</p>
                                                <p style="font-size: 13px">* BLINDTRANSFER events now report the transferee bridge unique<br /> identifier, extension, and context in a JSON blob as the extra string<br /> instead of the transferee channel name as the peer.</p>
                                                <p style="font-size: 13px">* ATTENDEDTRANSFER events now report the peer as NULL and additional<br /> information in the 'extra' string as a JSON blob. For transfers that occur<br /> between two bridged channels, the 'extra' JSON blob contains the primary<br /> bridge unique identifier, the secondary channel name, and the secondary<br /> bridge unique identifier. For transfers that occur between a bridged channel<br /> and a channel running an app, the 'extra' JSON blob contains the primary<br /> bridge unique identifier, the secondary channel name, and the app name.</p>
                                                <p style="font-size: 13px">* LOCAL_OPTIMIZE events have been added to convey local channel<br /> optimizations with the record occurring for the semi-one channel and<br /> the semi-two channel name in the peer field.</p>
                                                <p style="font-size: 13px">* BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,<br /> CONF_EXIT, CONF_START, and CONF_END events have all been removed. These<br /> events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER<br /> and BRIDGE_EXIT events are raised when a channel enters/exits any bridge,<br /> regardless of whether or not that bridge happens to contain multiple<br /> parties.</p>
                                                <p style="font-size: 13px">CLI<br />-------------------<br /> * When compiled with '--enable-dev-mode', the astobj2 library will now add<br /> several CLI commands that allow for inspection of ao2 containers that<br /> register themselves with astobj2. The CLI commands are 'astobj2 container<br /> dump', 'astobj2 container stats', and 'astobj2 container check'.</p>
                                                <p style="font-size: 13px">* Added specific CLI commands for bridge inspection. This includes 'bridge<br /> show all', which lists all bridges in the system, and 'bridge show {id}',<br /> which provides specific information about a bridge.</p>
                                                <p style="font-size: 13px">* Added CLI command 'bridge destroy'. This will destroy the specified bridge,<br /> ejecting the channels currently in the bridge. If the channels cannot<br /> continue in the dialplan or application that put them in the bridge, they<br /> will be hung up.</p>
                                                <p style="font-size: 13px">* Added command 'bridge kick'. This will eject a single channel from a bridge.</p>
                                                <p style="font-size: 13px">* Added commands to inspect and manipulate the registered bridge technologies.<br /> This include 'bridge technology show', which lists the registered bridge<br /> technologies, as well as 'bridge technology {suspend|unsuspend} {tech}',<br /> which controls whether or not a registered bridge technology can be used<br /> during smart bridge operations. If a technology is suspended, it will not<br /> be used when a bridge technology is picked for channels; when unsuspended,<br /> it can be used again.</p>
                                                <p style="font-size: 13px">* The command 'config show help {module} {type} {option}' will show<br /> configuration documentation for modules with XML configuration<br /> documentation. When {module}, {type}, and {option} are omitted, a listing<br /> of all modules with registered documentation is displayed. When {module}<br /> is specified, a listing of all configuration types for that module is<br /> displayed, along with their synopsis. When {module} and {type} are<br /> specified, a listing of all configuration options for that type are<br /> displayed along with their synopsis. When {module}, {type}, and {option}<br /> are specified, detailed information for that configuration option is<br /> displayed.</p>
                                                <p style="font-size: 13px">* Added 'core show sounds' and 'core show sound' CLI commands. These display<br /> a listing of all installed media sounds available on the system and<br /> detailed information about a sound, respectively.</p>
                                                <p style="font-size: 13px">* 'xmldoc dump' has been added. This CLI command will dump the XML<br /> documentation DOM as a string to the specified file. The Asterisk core<br /> will populate certain XML elements pulled from the source files with<br /> additional run-time information; this command lets a user produce the<br /> XML documentation with all information.</p>
                                                <p style="font-size: 13px">Features<br />-------------------<br /> * Parking has been pulled from core and placed into a separate module called<br /> res_parking. See Parking changes below for more details. Configuration for<br /> parking should now be performed in res_parking.conf. Configuration for<br /> parking in features.conf is now unsupported.</p>
                                                <p style="font-size: 13px">* Core attended transfers now have several new options. While performing an<br /> attended transfer, the transferer now has the following options:<br /> - *1 - cancel the attended transfer (configurable via atxferabort)<br /> - *2 - complete the attended transfer, dropping out of the call<br /> (configurable via atxfercomplete)<br /> - *3 - complete the attended transfer, but stay in the call. This will turn<br /> the call into a multi-party bridge (configurable via atxferthreeway)<br /> - *4 - swap to the other party. Once an attended transfer has begun, this<br /> options may be used multiple times (configurable via atxferswap)</p>
                                                <p style="font-size: 13px">* For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT<br /> must be on the channel initiating the transfer to have any effect.</p>
                                                <p style="font-size: 13px">* The BRIDGE_FEATURES channel variable would previously only set features for<br /> the calling party and would set this feature regardless of whether the<br /> feature was in caps or in lowercase. Use of a caps feature for a letter<br /> will now apply the feature to the calling party while use of a lowercase<br /> letter will apply that feature to the called party.</p>
                                                <p style="font-size: 13px">* Add support for automixmon to the BRIDGE_FEATURES channel variable.</p>
                                                <p style="font-size: 13px">* The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is<br /> removed. The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that<br /> activated the dynamic feature.</p>
                                                <p style="font-size: 13px">* The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set<br /> only on the channel executing the dynamic feature. Executing a dynamic<br /> feature on the bridge peer in a multi-party bridge will execute it on all<br /> peers of the activating channel.</p>
                                                <p style="font-size: 13px">* You can now have the settings for a channel updated using the FEATURE()<br /> and FEATUREMAP() functions inherited to child channels by setting<br /> FEATURE(inherit)=yes.</p>
                                                <p style="font-size: 13px">* automixmon now supports additional channel variables from automon including:<br /> TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START,<br /> and TOUCH_MIXMONITOR_MESSAGE_STOP</p>
                                                <p style="font-size: 13px">* A new general features.conf option 'recordingfailsound' has been added which<br /> allowssetting a failure sound for a user tries to invoke a recording feature<br /> such as automon or automixmon and it fails.</p>
                                                <p style="font-size: 13px">* It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in<br /> features.c for atxferdropcall=no to work properly. This option now just<br /> works.</p>
                                                <p style="font-size: 13px">Logging<br />-------------------<br /> * Added log rotation strategy 'none'. If set, no log rotation strategy will<br /> be used. Given that this can cause the Asterisk log files to grow quickly,<br /> this option should only be used if an external mechanism for log management<br /> is preferred.</p>
                                                <p style="font-size: 13px">Realtime<br />------------------<br /> * Dynamic realtime tables for SIP Users can now include a 'path' field. This<br /> will store the path information for that peer when it registers. Realtime<br /> tables can also use the 'supportpath' field to enable Path header support.</p>
                                                <p style="font-size: 13px">* LDAP realtime configurations for SIP Users now have the AstAccountPathSupport<br /> objectIdentifier. This maps to the supportpath option in sip.conf.</p>
                                                <p style="font-size: 13px">Sorcery<br />------------------<br /> * Sorcery is a new data abstraction and object persistence API in Asterisk. It<br /> provides modules a useful abstraction on top of the many storage mechanisms<br /> in Asterisk, including the Asterisk Database, static configuration files,<br /> static Realtime, and dynamic Realtime. It also provides a caching service.<br /> Users can configure a hierarchy of data storage layers for specific modules<br /> in sorcery.conf.</p>
                                                <p style="font-size: 13px">* All future modules which utilize Sorcery for object persistence must have a<br /> column named &quot;id&quot; within their schema when using the Sorcery realtime module.<br /> This column must be able to contain a string of up to 128 characters in length.</p>
                                                <p style="font-size: 13px">Security Events Framework<br />------------------<br /> * Security Event timestamps now use ISO 8601 formatted date/time instead of<br /> the &quot;seconds-microseconds&quot; format that it was using previously.</p>
                                                <p style="font-size: 13px">Stasis Message Bus<br />------------------<br /> * The Stasis message bus is a publish/subscribe message bus internal to<br /> Asterisk. Many services in Asterisk are built on the Stasis message bus,<br /> including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of<br /> Stasis can be configured in stasis.conf. Note that these parameters operate<br /> at a very low level in Asterisk, and generally will not require changes.</p>
                                                <p style="font-size: 13px"> <br />Channel Drivers<br />------------------<br /> * When a channel driver is configured to enable jiterbuffers, they are now<br /> applied unconditionally when a channel joins a bridge. If a jitterbuffer<br /> is already set for that channel when it enters, such as by the JITTERBUFFER<br /> function, then the existing jitterbuffer will be used and the one set by<br /> the channel driver will not be applied.</p>
                                                <p style="font-size: 13px"> <span class="confluence-anchor-link" id="Newin12-channels_chan_agent"></span> </p>
                                                <p style="font-size: 13px">chan_agent<br />------------------<br /> * chan_agent has been removed and replaced with AgentLogin and AgentRequest<br /> dialplan applications provided by the app_agent_pool module. Agents are<br /> connected with callers using the new AgentRequest dialplan application.<br /> The Agents:&lt;agent-id&gt; device state is available to monitor the status of an<br /> agent. See agents.conf.sample for valid configuration options.</p>
                                                <p style="font-size: 13px">* The updatecdr option has been removed. Altering the names of channels on a<br /> CDR is not supported - the name of the channel is the name of the channel,<br /> and pretending otherwise helps no one. The AGENTUPDATECDR channel variable<br /> has also been removed, for the same reason.</p>
                                                <p style="font-size: 13px">* The endcall and enddtmf configuration options are removed. Use the<br /> dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent<br /> channel before calling AgentLogin.</p>
                                                <p style="font-size: 13px">chan_bridge<br />------------------<br /> * chan_bridge has been removed. Its functionality has been incorporated<br /> directly into the ConfBridge application itself.</p>
                                                <p style="font-size: 13px">chan_dahdi<br />------------------<br /> * Added the CLI command 'pri destroy span'. This will destroy the D-channel<br /> of the specified span and its B-channels. Note that this command should<br /> only be used if you understand the risks it entails.</p>
                                                <p style="font-size: 13px">* The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.<br /> A range of channels can be specified to be destroyed. Note that this command<br /> should only be used if you understand the risks it entails.</p>
                                                <p style="font-size: 13px">* Added the CLI command 'dahdi create channels'. A range of channels can be<br /> specified to be created, or the keyword 'new' can be used to add channels<br /> not yet created.</p>
                                                <p style="font-size: 13px">chan_local<br />------------------<br /> * The /b option has been removed.</p>
                                                <p style="font-size: 13px">* chan_local moved into the system core and is no longer a loadable module.</p>
                                                <p style="font-size: 13px">chan_mobile<br />------------------<br /> * Added general support for busy detection.</p>
                                                <p style="font-size: 13px">* Added ECAM command support for Sony Ericsson phones.</p>
                                                <p style="font-size: 13px">chan_pjsip<br />------------------<br /> * A new SIP channel driver for Asterisk, chan_pjsip is built on the PJSIP<br /> SIP stack. A collection of resource modules provides the bulk of the SIP<br /> functionality. For more information on the new SIP channel driver, see<br /> <a href="https://wiki.asterisk.org/wiki/x/JYGLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/JYGLAQ</a> </p>
                                                <p style="font-size: 13px">chan_sip<br />------------------<br /> * Added support for RFC 3327 &quot;Path&quot; headers. This can be enabled in sip.conf<br /> using the 'supportpath' setting, either on a global basis or on a peer basis.<br /> This setting enables Asterisk to route outgoing out-of-dialog requests via a<br /> set of proxies by using a pre-loaded route-set defined by the Path headers in<br /> the REGISTER request. See Realtime updates for more configuration information.</p>
                                                <p style="font-size: 13px">* The SIP_CODEC family of variables may now specify more than one codec. Each<br /> codec must be separated by a comma. The first codec specified is the<br /> preferred codec for the offer. This allows a dialplan writer to specify both<br /> audio and video codecs, e.g., Set(SIP_CODEC=ulaw,h264)</p>
                                                <p style="font-size: 13px">* The 'callevents' parameter has been removed. Hold AMI events are now raised<br /> in the core, and can be filtered out using the 'eventfilter' parameter<br /> in manager.conf.</p>
                                                <p style="font-size: 13px">* Added 'ignore_requested_pref'. When enabled, this will use the preferred<br /> codecs configured for a peer instead of the requested codec.</p>
                                                <p style="font-size: 13px">chan_skinny<br />------------------<br /> * Added the 'immeddialkey' parameter. If set, when the user presses the<br /> configured key the already entered number will be immediately dialed. This<br /> is useful when the dialplan allows for variable length pattern matching.<br /> Valid options are '*' and '#'.</p>
                                                <p style="font-size: 13px">* Added the 'callfwdtimeout' parameter. This configures the amount of time (in<br /> milliseconds) before a call forward is considered to not be answered.</p>
                                                <p style="font-size: 13px">* The 'serviceurl' parameter allows Service URLs to be attached to line<br /> buttons.</p>
                                                <p style="font-size: 13px"> <br />Functions<br />------------------</p>
                                                <p style="font-size: 13px">AGENT<br />------------------<br /> * The password option has been disabled, as the AgentLogin application no<br /> longer provides authentication.</p>
                                                <p style="font-size: 13px">AUDIOHOOK_INHERIT<br />------------------<br /> * Due to changes in the Asterisk core, this function is no longer needed to<br /> preserve a MixMonitor on a channel during transfer operations and dialplan<br /> execution. It is effectively obsolete.</p>
                                                <p style="font-size: 13px">CDR (function)<br />------------------<br /> * The 'amaflags' and 'accountcode' attributes for the CDR function are<br /> deprecated. Use the CHANNEL function instead to access these attributes.</p>
                                                <p style="font-size: 13px">* The 'l' option has been removed. When reading a CDR attribute, the most<br /> recent record is always used. When writing a CDR attribute, all non-finalized<br /> CDRs are updated.</p>
                                                <p style="font-size: 13px">* The 'r' option has been removed, for the same reason as the 'l' option.</p>
                                                <p style="font-size: 13px">* The 's' option has been removed, as LOCKED semantics no longer exist in the<br /> CDR engine.</p>
                                                <p style="font-size: 13px">CDR_PROP<br />------------------<br /> * A new function CDR_PROP has been added. This function lets you set properties<br /> on a channel's active CDRs. This function is write-only. Properties accept<br /> boolean values to set/clear them on the channel's CDRs. Valid properties<br /> include:<br /> - 'party_a' - make this channel the preferred Party A in any CDR between two<br /> channels. If two channels have this property set, the creation time of the<br /> channel is used to determine who is Party A. Note that dialed channels are<br /> never Party A in a CDR.<br /> - 'disable' - disable CDRs on this channel. This is analogous to the NoCDR<br /> application when set to True, and analogous to the 'e' option in ResetCDR<br /> when set to False.</p>
                                                <p style="font-size: 13px">CHANNEL<br />------------------<br /> * Added the argument 'dtmf_features'. This sets the DTMF features that will be<br /> enabled on a channel when it enters a bridge. Allowed values are 'T', 'K',<br /> 'H', 'W', and 'X', and are analogous to the parameters passed to the Dial<br /> application.</p>
                                                <p style="font-size: 13px">* Added the argument 'after_bridge_goto'. This can be set to a parseable Goto<br /> string, i.e., [[context],extension],priority. If set on a channel, if a<br /> channel leaves a bridge but is not hung up it will resume dialplan execution<br /> at that location.</p>
                                                <p style="font-size: 13px">JITTERBUFFER<br />------------------<br /> * JITTERBUFFER now accepts an argument of 'disabled' which can be used<br /> to remove jitterbuffers previously set on a channel with JITTERBUFFER.<br /> The value of this setting is ignored when disabled is used for the argument.</p>
                                                <p style="font-size: 13px">PJSIP_DIAL_CONTACTS<br />------------------<br /> * A new function provided by chan_pjsip, this function can be used in<br /> conjunction with the Dial application to construct a dial string that will<br /> dial all contacts on an Address of Record associated with a chan_pjsip<br /> endpoint.</p>
                                                <p style="font-size: 13px">PJSIP_MEDIA_OFFER<br />------------------<br /> * Provided by chan_pjsip, this function sets the codecs to be offerred on the<br /> outbound channel prior to dialing.</p>
                                                <p style="font-size: 13px">REDIRECTING<br />------------------<br /> * Redirecting reasons can now be set to arbitrary strings. This means<br /> that the REDIRECTING dialplan function can be used to set the redirecting<br /> reason to any string. It also allows for custom strings to be read as the<br /> redirecting reason from SIP Diversion headers.</p>
                                                <p style="font-size: 13px">SPEECH_ENGINE<br />------------------<br /> * The SPEECH_ENGINE function now supports read operations. When read from, it<br /> will return the current value of the requested attribute.</p>
                                                <p style="font-size: 13px"> <br />Resources<br />------------------</p>
                                                <p style="font-size: 13px">res_agi (Asterisk Gateway Interface)<br />------------------<br /> * The manager event AGIExec has been split into AGIExecStart and AGIExecEnd.</p>
                                                <p style="font-size: 13px">* The manager event AsyncAGI has been split into AsyncAGIStart, AsyncAGIExec,<br /> and AsyncAGIEnd.</p>
                                                <p style="font-size: 13px">* The CONTROL STREAM FILE command now accepts an offsetms parameter. This<br /> will start the playback of the audio at the position specified. It will<br /> also return the final position of the file in 'endpos'.</p>
                                                <p style="font-size: 13px">* The CONTROL STREAM FILE command will now populate the CPLAYBACKSTATUS<br /> channel variable if the user stopped the file playback or if a remote<br /> entity stopped the playback. If neither stopped the playback, it will<br /> indicate the overall success/failure of the playback. If stopped early,<br /> the final offset of the file will be set in the CPLAYBACKOFFSET channel<br /> variable.</p>
                                                <p style="font-size: 13px">* The SAY ALPHA command now accepts an additional parameter to control<br /> whether it specifies the case of uppercase, lowercase, or all letters to<br /> provide functionality similar to SayAlphaCase.</p>
                                                <p style="font-size: 13px">res_ari (Asterisk RESTful Interface) (and others)<br />------------------<br /> * The Asterisk RESTful Interface (ARI) provides a mechanism to expose and<br /> control telephony primitives in Asterisk by remote client. This includes<br /> channels, bridges, endpoints, media, and other fundamental concepts. Users<br /> of ARI can develop their own communications applications, controlling<br /> multiple channels using an HTTP RESTful interface and receiving JSON events<br /> about the objects via a WebSocket connection. ARI can be configured in<br /> Asterisk via ari.conf. For more information on ARI, see<br /> <a href="https://wiki.asterisk.org/wiki/x/0YCLAQ" rel="nofollow" style="color: #326ca6; text-decoration: none">https://wiki.asterisk.org/wiki/x/0YCLAQ</a> </p>
                                                <p style="font-size: 13px">res_parking<br />-------------------<br /> * Parking has been extracted from the Asterisk core as a loadable module,<br /> res_parking. Configuration for parking is now provided by res_parking.conf.<br /> Configuration through features.conf is no longer supported.</p>
                                                <p style="font-size: 13px">* res_parking uses the configuration framework. If an invalid configuration is<br /> supplied, res_parking will fail to load or fail to reload. Previously,<br /> invalid configurations would generally be accepted, with certain errors<br /> resulting in individually disabled parking lots.</p>
                                                <p style="font-size: 13px">* Parked calls are now placed in bridges. While this is largely an<br /> architectural change, it does have implications on how channels in a parking<br /> lot are viewed. For example, commands that display channels in bridges will<br /> now also display the channels in a parking lot.</p>
                                                <p style="font-size: 13px">* The order of arguments for the new parking applications have been modified.<br /> Timeout and return context/exten/priority are now implemented as options,<br /> while the name of the parking lot is now the first parameter. See the<br /> application documentation for Park, ParkedCall, and ParkAndAnnounce for more<br /> in-depth information as well as syntax.</p>
                                                <p style="font-size: 13px">* Extensions are by default no longer automatically created in the dialplan to<br /> park calls or pickup parked calls. Generation of dialplan extensions can be<br /> enabled using the 'parkext' configuration option.</p>
                                                <p style="font-size: 13px">* ADSI functionality for parking is no longer supported. The 'adsipark'<br /> configuration option has been removed as a result.</p>
                                                <p style="font-size: 13px">* The PARKINGSLOT channel variable has been deprecated in favor of<br /> PARKING_SPACE to match the naming scheme of the new system.</p>
                                                <p style="font-size: 13px">* PARKING_SPACE and PARKEDLOT channel variables will now be set for a parked<br /> channel even when the configuration option 'comebactoorigin' is enabled.</p>
                                                <p style="font-size: 13px">* A new CLI command 'parking show' has been added. This allows a user to<br /> inspect the parking lots that are currently in use.<br /> 'parking show &lt;parkinglot&gt;' will also show the parked calls in a specific<br /> parking lot.</p>
                                                <p style="font-size: 13px">* The CLI command 'parkedcalls' is now deprecated in favor of<br /> 'parking show &lt;parkinglot&gt;'.</p>
                                                <p style="font-size: 13px">* The AMI command 'ParkedCalls' will now accept a 'ParkingLot' argument which<br /> can be used to get a list of parked calls for a specific parking lot.</p>
                                                <p style="font-size: 13px">* The AMI command 'Park' field 'Channel2' has been deprecated and replaced<br /> with 'TimeoutChannel'. If both 'Channel2' and 'TimeoutChannel' are<br /> specified, 'TimeoutChannel' will be used. The field 'TimeoutChannel' is no<br /> longer a required argument.</p>
                                                <p style="font-size: 13px">* The ParkAndAnnounce application is now provided through res_parking instead<br /> of through the separate app_parkandannounce module.</p>
                                                <p style="font-size: 13px">* ParkAndAnnounce will no longer go to the next position in dialplan on timeout<br /> by default. Instead, it will follow the timeout rules of the parking lot. The<br /> old behavior can be reproduced by using the 'c' option.</p>
                                                <p style="font-size: 13px">* Dynamic parking lots will now fail to be created under the following<br /> conditions:<br /> - if the parking lot specified by PARKINGDYNAMIC does not exist<br /> - if they require exclusive park and parkedcall extensions which overlap<br /> with existing parking lots.</p>
                                                <p style="font-size: 13px">* Dynamic parking lots will be cleared on reload for dynamic parking lots that<br /> currently contain no calls. Dynamic parking lots containing parked calls<br /> will persist through the reloads without alteration.</p>
                                                <p style="font-size: 13px">* If 'parkext_exclusive' is set for a parking lot and that extension is<br /> already in use when that parking lot tries to register it, this is now<br /> considered a parking system configuration error. Configurations which do<br /> this will be rejected.</p>
                                                <p style="font-size: 13px">* Added channel variable PARKER_FLAT. This contains the name of the extension<br /> that would be used if 'comebacktoorigin' is enabled. This can be useful when<br /> comebacktoorigin is disabled, but the dialplan or an external control<br /> mechanism wants to use the extension in the park-dial context that was<br /> generated to re-dial the parker on timeout.</p>
                                                <p style="font-size: 13px">res_pjsip (and many others)<br />------------------<br /> * A large number of resource modules make up the SIP stack based on pjsip.<br /> The chan_pjsip channel driver users these resource modules to provide<br /> various SIP functionality in Asterisk. The majority of configuration for<br /> these modules is performed in pjsip.conf. Other modules may use their<br /> own configuration files.</p>
                                                <p style="font-size: 13px">res_rtp_asterisk<br />------------------<br /> * ICE/STUN/TURN support in res_rtp_asterisk has been made optional. To enable<br /> them, an Asterisk-specific version of PJSIP needs to be installed.<br /> Tarballs are available from <a href="https://github.com/asterisk/pjproject/tags/" class="external-link" rel="nofollow" style="color: #326ca6; text-decoration: none">https://github.com/asterisk/pjproject/tags/</a>.</p>
                                                <p style="font-size: 13px">res_statsd/res_chan_stats<br />------------------<br /> * A new resource module, res_statsd, has been added, which acts as a statsd<br /> client. This module allows Asterisk to publish statistics to a statsd<br /> server. In conjunction with res_chan_stats, it will publish statistics about<br /> channels to the statsd server. It can be configured via res_statsd.conf.</p>
                                                <p style="font-size: 13px">res_xmpp<br />------------------<br /> * Device state for XMPP buddies is now available using the following format:<br /> XMPP/&lt;client name&gt;/&lt;buddy address&gt;<br /> If any resource is available the device state is considered to be not in use.<br /> If no resources exist or all are unavailable the device state is considered<br /> to be unavailable.</p>
                                                <p style="font-size: 13px"> <br />Scripts<br />------------------</p>
                                                <p style="font-size: 13px">Realtime/Database Scripts<br />------------------<br /> * Asterisk previously included example db schemas in the contrib/realtime/<br /> directory of the source tree. This has been replaced by a set of database<br /> migrations using the Alembic framework. This allows you to use alembic to <br /> initialize the database for you. It will also serve as a database migration<br /> tool when upgrading Asterisk in the future.</p>
                                                <p style="font-size: 13px">See contrib/ast-db-manage/README.md for more details.</p>
                                                <p style="font-size: 13px">safe_asterisk<br />------------------<br /> * The safe_asterisk script will now install over previously installations.<br /> In previous versions of Asterisk, once installed a 'make install' would<br /> skip over safe_asterisk if it was already installed.</p>
                                                <p style="font-size: 13px">* Certain options in safe_asterisk can now be configured from the<br /> safe_asterisk.conf file. A sample version of this is located in the<br /> configs/ folder.</p>
                                                <p style="font-size: 13px">sip_to_res_pjsip.py<br />-------------------<br /> * A new script has been added in the contrib/scripts/sip_to_res_pjsip folder.<br /> This python script will convert an existing sip.conf file to a<br /> pjsip.conf file, for use with the chan_pjsip channel driver. This script<br /> is meant to be an aid in converting an existing chan_sip configuration to<br /> a chan_pjsip configuration, but it is expected that configuration beyond<br /> what the script provides will be needed.</p>
                                                <p style="font-size: 13px">&nbsp;</p>
                                            </div>
                                        </div>
                                        <table id="email-actions" class="email-metadata" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; color: #505050">
                                            <tbody>
                                                <tr>
                                                    <td class="left" valign="top" style="font-size: 13px; padding-top: 8px; max-width: 45%; text-align: left"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/New+in+12" style="color: #326ca6; text-decoration: none">View Online</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/plugins/likes/like.action?contentId=26476750" style="color: #326ca6; text-decoration: none">Like</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/New+in+12?showComments=true&amp;showCommentArea=true#addcomment" style="color: #326ca6; text-decoration: none">Add Comment</a> </span> </td>
                                                    <td class="right" width="50%" valign="top" style="font-size: 13px; padding-top: 8px; text-align: right"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST" style="color: #326ca6; text-decoration: none">Stop watching space</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">&middot;</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action" style="color: #326ca6; text-decoration: none">Manage Notifications</a> </span> </td>
                                                </tr>
                                            </tbody>
                                        </table> </td>
                                </tr>
                            </tbody>
                        </table> </td>
                </tr>
                <tr>
                    <td id="email-footer" align="center" style="font-size: 13px; padding: 0 16px 32px 16px; margin: 0"> <small style="font-size: 11px"> This message was sent by <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence">Atlassian Confluence</a> 5.1.5, <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence/overview/team-collaboration-software?utm_source=email-footer">Team Collaboration Software</a> </small> </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>