<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> 
<base href="https://wiki.asterisk.org/wiki" /> 
<title>Message Title</title>  
<style type="text/css">@media only screen and (max-device-width: 480px) {.mobile-only {
        width: auto !important;
        height: auto !important;
        overflow: visible !important;
        line-height: normal !important;
        font-size: inherit !important;
        mso-hide: all;
}

.desktop-only {
        display: none !important;
}

/* iPhone 3GS fix for unwanted 20px right margin */
body { min-width: 100% !important; padding: 0; margin: 0; }

#center-content-table { max-width: none; !important; }
#header-pattern-container { padding: 10px 10px 10px 10px !important; line-height: 20px !important; }
#header-avatar-image-container { padding-right: 8px !important; }
#email-content-container { padding: 0 !important; }
.mobile-expand { border-radius: 0 !important; border-left: 0 !important; border-right: 0 !important; padding-left: 26px !important;}
.mobile-resize-text { font-size: 16px !important; line-height: 22px !important; }
#page-title-pattern-header { font-size: 20px !important; line-height: 28px !important; }
#page-title-pattern-icon-image-container-cell { padding-top: 7px !important; }
#inline-user-pattern { display: block !important; }
#inline-user-pattern-avatar { padding-top: 3px !important; }
.contextual-area-pattern { border-bottom: 1px solid #ccc !important; padding: 15px 10px 0 10px !important;}
.users-involved-pattern-column-table { width: 100% !important;  }
.users-involved-pattern-avatar-table-cell { padding: 3px 5px 5px 0 !important; }
.users-involved-pattern-column-container { padding-right: 0 !important; }
.contextual-excerpt-pattern, #users-involved-pattern { border: 0 !important; }

/** Aui Typography upsized for mobile **/
#content-excerpt-pattern-container, #contextual-excerpt-pattern-text-container { font-size: 16px !important; line-height: 22px !important; }
#content-excerpt-pattern-container h1, #contextual-excerpt-pattern-text-container h1 { font-size: 24px !important; line-height: 28px !important; }
#content-excerpt-pattern-container h2, #contextual-excerpt-pattern-text-container h2 { font-size: 20px !important; line-height: 28px !important; }
#content-excerpt-pattern-container h3, #contextual-excerpt-pattern-text-container h3 { font-size: 18px !important; line-height: 24px !important; }
#content-excerpt-pattern-container h4, #contextual-excerpt-pattern-text-container h4 { font-size: 16px !important; line-height: 22px !important; }
#content-excerpt-pattern-container h5, #contextual-excerpt-pattern-text-container h5 { font-size: 14px !important; line-height: 20px !important; }
#content-excerpt-pattern-container h6, #contextual-excerpt-pattern-text-container h6 { font-size: 14px !important; line-height: 20px !important; }
.user-mention { line-height: 18px !important; }
/** Aui Typography end **/

/* Show appropriate footer logo on mobile, display links vertically */
#footer-pattern { padding: 15px 10px !important; }
#footer-pattern-logo-desktop-container { padding: 0 !important; }
#footer-pattern-logo-desktop { width: 0 !important; height: 0 !important; }
#footer-pattern-logo-mobile {
    padding-top: 10px !important;
    width: 30px !important;
    height: 27px !important;
    display: inline !important;
}
#footer-pattern-text {
    display: block !important;
}
#footer-pattern-links-container { line-height: 0 !important;}
.footer-pattern-links.mobile-resize-text,
.footer-pattern-links.mobile-resize-text,
#footer-pattern-text.mobile-resize-text,
#footer-pattern-links-container.no-footer-links {
    font-size: 14px !important;
    line-height: 20px !important;
}
.footer-link { display: block !important; }
#footer-pattern-links-container table { display: inline-block !important; float: none !important; }
#footer-pattern-links-container, #footer-pattern-text { text-align: center !important; }
#footer-pattern-links { padding-bottom: 5px !important; }

/** Team Calendar overrides, these should be removed when notifications are updated in Team Calendars. For now CSS
    overrides are being used because the structure of the content can't change without rereleasing the plugin */
.mail-calendar-container .day-header + table tr td:first-child {
    vertical-align: top !important;
    padding-top: 5px !important;
}}
@media (min-width: 900px) {#center-content-table { width: 900px; }}
@media all {#outlook a {padding:0;} /* Force Outlook to provide a "view in browser" menu link. */
/* Prevent Webkit and Windows Mobile platforms from changing default font sizes.*/
body{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;}
.ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */
#background-table {margin:0; padding:0; width:100% !important; }
/* Needed to override highlighting on date and time links in iOS */
.grey a {color: #707070; text-decoration: none; }/* These styles are appended to the head element of a notification in order to prevent Apple Mail and similar
   clients from underlining the due dates with a blue hyperlink */
/* a lozenge outside an inline task should always be #333, lozenges inside an inline task should be
   colored according to their upcoming due dates, a completed task date lozenge or deleted task date
   lozenge should always be #707070 */
.date-time-lozenge a {color: #333333; text-decoration: none; }
.inline-task-text-container .date-time-lozenge.date-upcoming a {color: #DF6F00; text-decoration: none; }
.inline-task-text-container .date-time-lozenge.date-past a {color: #D04437; text-decoration: none; }
.inline-task-text-container.content-deleted-color .date-time-lozenge a,
.inline-task-text-container.checked .date-time-lozenge a {
    color: #707070; text-decoration: none;
}}
</style> 
</head>
<body>
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; background-color: #f5f5f5"> 
<tbody> 
<tr> 
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px"> 
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 9px"><a href="https://wiki.asterisk.org/wiki/display/~bford?src=email" style="color: #3b73af; text-decoration: none"><img id="header-avatar-image" class="image_fix" src="cid:avatar_69f4768fe914a834abed04bedb6511a8" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top" /></a></td>
<td id="header-text-container" valign="middle" style="padding: 0px; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">Benjamin Keith Ford <strong>edited</strong> a page</td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<!-- End Header pattern --> 
<tr> 
<td id="email-content-container" style="padding: 0px; border-collapse: collapse; padding: 0 20px"> 
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; border-spacing: 0; border-collapse: separate"> 
<tbody> 
<tr> 
<td class="email-content-rounded-top mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px"> </td> 
</tr> 
<tr> 
<td class="email-content-main mobile-expand" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 15px 16px; background-color: #fff"> 
<table id="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td id="page-title-pattern-icon-image-container" valign="top" style="padding: 0px; border-collapse: collapse; width: 16px; vertical-align: top"> 
<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td id="page-title-pattern-icon-image-container-cell" style="padding: 0px; border-collapse: collapse; width: 16px; padding: 9px 8px 0px 0px; mso-text-raise: 5px; mso-line-height-rule: exactly"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?src=email" title="page icon" style="vertical-align: top;; color: #3b73af; text-decoration: none"><img style="vertical-align: top; display: block;" src="cid:page-icon" alt="page icon" title="page icon" height="16" width="16" border="0" /></a></td> 
</tr> 
</tbody> 
</table> </td>
<td style="vertical-align: top;; padding: 0px; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" id="page-title-pattern-header-container"><span id="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?src=email" title="Agenda 2019" style="color: #3b73af; text-decoration: none">Agenda 2019</a></span></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-main mobile-expand" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 15px 16px; background-color: #fff"> 
<table class="content-excerpt-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
<tbody> 
<tr> 
<td class="content-excerpt-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 0 24px"> 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0" class="diff-block-target"> 
<li>Talks 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <strong><span class="diff-html-changed" id="changed-diff-0" style="background-color: #d6f0ff;">Matt Fredrickson - Introduction</span></strong> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"></ul> </li> 
<li> <span class="diff-html-removed" id="removed-diff-0" style="font-size: 100%; background-color: #ffe7e7; text-decoration: line-through;">Josh Colp - PJSI</span> </li> 
<li> 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-0" style="font-size: 100%; background-color: #ddfade;">ARI changes</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Automatic context creation, no need for dialplan</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ability to move from one stasis application to another</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Stasis caching underwent a lot of internal changes to make it easier to use</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">MWI is different, lots of work done internally</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Attended and BlindTransfer dialplan applications for DTMF custom features</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Variables for post dial delay calcs</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Bundled pjproject 2.9</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Additional ICE mappings in rtp.conf</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Asterisk can mimic a STUN server by setting the IP</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">DTLS fragmentation support</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">MWI devstate allows subscribing to a voice mailbox as if i t were a device</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Per member wrap up time using AddQueueMember</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Performance improvements with internal media indexer by reducing indexing</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP_PARSE_URI dialplan function for URI parsing</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ability to change strict RTP learning to only care about sequence numbers and not incorporate time</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Improved CDR/CEL time calcs by using message time instead of processing time</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AMI actions now also logged when manager debugging is on</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">New internal MWI API improving performance and reducing memory usage</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All 3 app_voicemail variants can now be built</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">TRANSFERSTATUS from app_transfer</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ast 13 security fix only in 2020</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ast 15 is end of life</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ast 16 is LTS and is security fix only in 2022</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Ast 17 is a standard release and goes security fix only in 2020</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_sip marked deprecated this time last year</span></span> </p> </li> 
</ul> </li> 
<li> <strong><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Josh Colp - PJSIP</span></strong> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP recommended for new installs and to migrate existing</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_sip will still be around for at least 4 years</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP used exclusively in switchvox since Feb 2016</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP created and maintained by Teluu</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Since Feb 2005</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Wide platform availability (Linux, Windows, iOS, Android, embedded)</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We use PJSIP as low level SIP stack</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Some high level features used when it makes sense (pubsub, outbound reg)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We build on top of it, and contribute to it</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">12.0.0 was the first release including PJSIP support, back in Dec 2013</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Things we’ve contributed</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Pluggable DNS support</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Numerous crash fixes</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Transport related fixes</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP has been heavily tested on our end</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We don’t use pjmedia (RTP/RTCP/codecs)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We don’t use DNS (we use our own)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We don’t use pjsia (too high level)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The PJSIP approach needed to be modular and reasonable as possible (and pluggable)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We wanted the configuration to be explicit with sensible defaults</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Bundled is recommended (and automatically included in 16 and above - configuration option for 13)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Uses a recent version of PJSIP rested against the Asterisk version in use</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Includes unreleased PJSIP fixes</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Each PJSIP build is different and can be customized for Asterisk</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We have sorcery for “magic” PJSIP configuration</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Maps configuration into objects using “wizards”, which provide a backend (realtime config file)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Configuration values must be validated and make sense</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can be controlled using AMI or CLI</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Sorcery caching is highly configurable memory cache for keeping ephemeral objects in memory</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Great for use in realtime (Switchvox uses this)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Configurable per object type</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Full backend caching is also possible</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Won’t allow invalid objects to be created as a result of invalid configuration</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Outbound registration is simpler compared to chan_sip</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Creates the needed objects for you based on simple configuration</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Using templates can reduce the size of config files</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">res_pjsip binds asterisk to PJSIP</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Provides low level functionality, APIs, and helpers</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_sip threading</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread for all UDP traffic and scheduled items</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread for each TCP/TLS/WS/WSS connection</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread for each channel (generally)</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip threading</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread for network traffic (UDP/TCP/TLS)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">N threads for network traffic handling (configurable and can grow)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread of each WE/WSS connection</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread for each channel (generally)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">1 thread of scheduled items</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Thread pool is configurable</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Traffic distributor</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All network traffic is received in 1 thread</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Network traffic is distributed to worker threads for handling</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All traffic is associated with an endpoint</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Order is not fixed and is instead controlled in the global section</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Endpoints identifiers are pluggable</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Always guaranteed to have an endpoint</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Low level hooks for handling SIP messages of given types</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip_session</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Handles SIP sessions and lifecycle</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Provides session level helpers</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Session supplements</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Higher level hooks</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">When you register one, you tell it when it should be invoked</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Example: res_pjsip_caller_id</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_pjsip</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Glue between asterisk core and res_pjsip_session</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Implements API defined by core for channels</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Implements session supplement API defined by res_pjsip_session</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip_sdp_rtp</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Handle SDP negotiation of RTP streams including attributes</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Acts as glue between RTP engine API and PJSIP sessions</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Manages lifecycle of RTP sessions themselves</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip_registrar</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Provides functionality for REGISTER SIP requests</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Manages AORs and contacts on them</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Enforces configuration of AORS</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip_pubsub</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Provides functionality for SUBSCRIBE SIP requests</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Uses PJSIP provided “evsub” API</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Provides “Subscription/Notifier Handler” API to allow pluggable even and body types</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Handles lifecycle of subscriptions</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_pjsip_exten_state</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Handles subs for extension state (hints)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Acts as glue between asterisk core and PJSIP</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">PJSIP vs chan_sip</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">“Line” support in outbound registrations</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Adds randomly generated token to outbound reg</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If received the request is associated with the configured endpoint</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Removes need for IP matching and other matching mechanisms</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Not supported by all SIP implementations, even though RFC says it should be</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Multiple IP matching of inbound traffic</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Identify section allows multiple IP addresses to be specified or discovered</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Subnet masks can also be specified to allow ranges</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All traffic is associated back to a single endpoint, so no need to configure multiple</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">SRV/NAPTR load balancing and failover</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">DNS resolution occurs when a SIP request is sent, result is not stored except in external DNS cache</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Load balancing will occur based on DNS lookup</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We get back a list of targets to send the request to</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If connection fails or certain response is received failover to new target occurs</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Both A and AAA records are supported with preference for AAA records</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Media stream support</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Multiple streams can be negotiated in SDP</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Streams can be added/removed as needed by Asterisk applications</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Used for WebRTC SFU video support</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Multiple contacts on AOR</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AOR can be configured to allow multiple contacts with policy</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Allows multiple phones to register using same endpoint/auth/AOR</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Can all be called at once</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Music on hold passthrough</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If configured causes PJSIP to emit re-invite for hold/unhold</span></span> </p> </li> 
</ul> 
</ul> 
</ul> </li> 
<li> <strong><span class="diff-html-changed" id="changed-diff-2" style="background-color: #d6f0ff;">Sean McCord - Real time speech processing w/ Asterisk</span></strong> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-1" style="font-size: 100%; background-color: #ddfade;">Benefits of external media</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Speech recognition</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Speech synthesis</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Dynamic generation</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">External DSP</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Machine learning</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Realtime fraud detection</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Live feedback</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_alsa (or oss)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">App_jack</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_nbs</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">MRCP (Media Resource COntrol Protocol)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_rtp</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AudioSocket</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Network-first</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">No telephony knowledge</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Simple TCP protocol</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Dialplan application interface</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Channel interface</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Go reference server library</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Fully open source</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">GPL (Asterisk side)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Apache 2.0 (Go library)</span></span> </p> </li> 
</ul> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Chan_audiosocket and app_audiosocket</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AudioSocket/ip:port/UUID</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Exten => 100,1,Answer()</span></span><span> <br /> </span><span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;"> Same => n,AUdioSocket(UUID, ip:port)</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AudioSocket: </span><a href="http://github.com/CyCoreSystems/audiosocket" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">github.com/CyCoreSystems/audiosocket</span></a></span> </p> </li> 
</ul> </li> 
<li> <strong><span class="diff-html-changed" id="changed-diff-4" style="background-color: #d6f0ff;">George Joseph - Update on Realtime speech processing</span></strong> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-2" style="font-size: 100%; background-color: #ddfade;">Focus on call transcription with external media</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Asterisk to ARI app to cloud speech recognition provider and vice versa</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The audio needs to be transcoded into a format that the speech recognition server can read</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Demo uses chan_rtp</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">For the demo, node ARI is used to communicate with Asterisk</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">There’s a UDP network listener that takes in RTP packets and strips off the RTP header</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The speech adapter just pipes the packets that come in from the UDP socket and pipe them to Google’s libraries</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Google sends back the transcript and we take it and use the websocket broadcaster to send it to anyone who wants to consume it</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Using cyber mega phone for the demo, you can see the transcript appear in the chat box</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The websocket server is the server that pipes the transcription from the provider to interested parties</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The transcriber is the main entry point. It starts an ARI controller and sits there</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">We start the websocket server and the RTP/UDP server socket</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Then we pass that config to Google and connect the ARI controller</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The ARI controller connects back to ARI and starts setting things up, like creating the bridge, etc</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">For cyber mega phone, we had to create a local channel that goes into a mixing bridge, but the other side actually dials the confbridge</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The speech provider is largely provided by Google</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">All you have to do is pass in the socket from the UDP RTP datagram socket and pipe it to the input stream</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Google will send back a final transcription once it detects a long enough pause</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Video would be a good addition but will more than likely be more difficult than audio</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Websocket is another transport option that should be on the radar</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Goals to make an external media type channel that can generically encapsulate all the necessary information and make it possible to originate via dialplan</span></span> </p> </li> 
</ul> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <strong><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Pascal MIchaud - More Websocket</span></strong> </p> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Another websocket implementation</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">You get a stream channel, give it an ID, and you can start receiving voice over the websocket</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Sends audio to URL and prints out transcript, similar to George’s demonstration with cyber mega phone</span></span> </p> </li> 
</ul> </li> 
<li> <strong><span class="diff-html-changed" id="changed-diff-6" style="background-color: #d6f0ff;">Sylvain Boily - AMQP</span></strong> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-3" style="font-size: 100%; background-color: #ddfade;">AMQP support for Asterisk</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Find solutions to abstract telephony complexity</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Simplify the scaling without any proxy</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Multiple applications on single stasis</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Remove direction connection to AMI (no parsing)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Auto-scaling</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Remove external proxy for ARI</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">First version presented at astricon 2017</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AMQP support for Stasis in</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">AMI</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ARI</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Channels</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">But it wasn’t possible to use websocket and AMQP at same time</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Now, additions made to use websocket or AMQP for an application</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Added ARI endpoint to activate the application</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Add support for subscribing to ARMP for res_amqp</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">3 modules now</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">With vision of adding for (pluggable systems)</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_amqp</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Client for Asterisk</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Publish and subscribe (on a branch)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Based on librabbitmq</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Configuration in /etc/asterisk/amqp.conf</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Serves solely as a client</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_stasis_amqp</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Publish stasis messages to AMQP</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Support for stasis AMI, ARI, channel</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Depends on res_aqmp</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Res_ari_aqmp</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Activate application to use AMQP instead of websocket</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Stateless and not stateful</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Application is not connected, bt events are still sent</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Create a new endpoint on ARI to permit to activate an application</span></span> </p> </li> 
</ul> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Asterisk is used to send and receive messages for AMQP</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">You can subscribe to specific events as well</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Future integration to Asterisk with Gerrit</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Addresses the issue of having a single event to multiple clients</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Disassociate a singular presence with the existence of an ARI application</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If this could be added in a way that multiple people would be able to support it (or have an agreed upon approach rather than many ways of doing the same thing), then integration into Asterisk (or with Asterisk) would make more sense</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If a connection is present on said websocket, event goes out to that application</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Something to think about: event filtering</span></span> </p> </li> 
</ul> </li> 
</ul> </li> 
<li>Lunch ? (12 - 1)</li> 
<li>Topical Discussion: 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <span><span style="color: rgb(0,0,0);"><span class="diff-html-added" id="added-diff-4" style="font-size: 100%; background-color: #ddfade;">Test coverage: ok, can always use more tests. Test status: not as ok. We should really focus on ensuring that the tests we do have pass, so we aren’t worried about test failures that aren’t relevant when testing new code, especially for new (and old) contributors</span></span></span> </li> 
<li> <span><span style="color: rgb(0,0,0);"><span><span style="color: rgb(0,0,0);"><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Some confusion on core support vs extended support, “burden” on Sangoma (in the sense that someone needs to be responsible for issues coming in that are extended support), community picking up the torch for support on modules, etc</span></span></span></span></span> </li> 
<li>Multiple applications being registered as a single Stasis applications 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-5" style="font-size: 100%; background-color: #ddfade;">Separate connection from application</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Establish n number of connections and bind to applications</span></span> </p> </li> 
</ul> </li> 
<li>Allowing a Stasis application to connect to a URI. 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-6" style="font-size: 100%; background-color: #ddfade;">Kind of like FastAGI for ARI</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Pass in a URI instead of app name</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Then you can pass in the parameters in the URI and so on</span></span> </p> </li> 
</ul> </li> 
<li>PJSIP DNS question by Fred Posner.</li> 
<li>Open ended discussion about external media streaming. 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-7" style="font-size: 100%; background-color: #ddfade;">Adding more transports like websocket, TCP, etc</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Codec selection is important</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">ARI support is nice because you can specify all the different options you want</span></span> </p> </li> 
</ul> </li> 
<li>Moving swagger forward to a more modern/actual version. 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-8" style="font-size: 100%; background-color: #ddfade;">We’ve just not had the resources to switch to a newer spec</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Upgrading caused so many problems</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Their upgrade path was all over the place at the time we looked at this</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">It sounds like it’s completely different now than what it was</span></span> </p> </li> 
</ul> </li> 
<li>Future Development in Asterisk - What are fun new frontiers?<br /> 
<ul style="list-style-type: square;; margin: 10px 0 0 0"> 
<li>High availability (active call failover) 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-9" style="font-size: 100%; background-color: #ddfade;">Minimal configuration to have defense against a call being dropped (active call failover / Asterisk failover)</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">Way down the road, what happens with bridges? Stasis? State in general?</span></span> </p> </li> 
</ul> </li> 
<li>WebRTC simulcast / layered encoding 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li> <span><span style="color: rgb(0,0,0);"><span class="diff-html-added" id="added-diff-10" style="font-size: 100%; background-color: #ddfade;">With certain codecs, you can encode multiple qualities in stream, and then extract them out</span></span></span> </li> 
</ul> </li> 
<li>STIR/SHAKEN (maybe not "fun", but definitely important)</li> 
<li>Missing ARI functionality? 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li>Ability to hook dialplan applications into ARI execution flow.</li> 
<li>Lower transaction count necessary to setup SIP headers on outbound channels in ARI.</li> 
</ul> </li> 
</ul> </li> 
<li>Opus improvements 
<ul style="list-style-type: square;; margin: 10px 0 0 0; margin-top: 0"> 
<li>Adaptive bitrate support</li> 
<li>Has anybody done multichannel</li> 
<li> <span class="diff-html-added" id="added-diff-11" style="font-size: 100%; background-color: #ddfade;">Allowing Opus to be more than a single channel</span> </li> 
</ul> </li> 
<li>Bindings of ARI to AGI like we had with AMI</li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" id="added-diff-12" style="font-size: 100%; background-color: #ddfade;">Opportunistic DTLS</span></span> </p> </li> 
<ul style="margin: 10px 0 0 0"> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">The sending side</span></span> </p> </li> 
<li> <p style="margin: 10px 0 0 0; margin-top: 0"> <span><span class="diff-html-added" style="font-size: 100%; background-color: #ddfade;">If the first try fails, what do we do?</span></span> </p> </li> 
</ul> 
</ul> </li> 
</ul> <p class="diff-block-context" style="margin: 10px 0 0 0"> </p> </td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-main mobile-expand action-padding last-row-padding" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 15px 16px; background-color: #fff; padding-bottom: 10px; padding-bottom: 10px"> 
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> 
<tbody> 
<tr> 
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 15px 0 0 24px; vertical-align: middle"> 
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?src=email" title="View page Icon" style="color: #3b73af; text-decoration: none"><img class="actions-pattern-action-icon-image" height="16" width="16" border="0" title="View page Icon" src="cid:com.atlassian.confluence.plugins.confluence-email-resources%3Aview-page-email-adg-footer-item%3Aicon" alt="View page Icon" style="vertical-align: middle" /></a></td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px; white-space: nowrap"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?src=email" title="View page" style="color: #3b73af; text-decoration: none">View page</a></td>
<td class="actions-pattern-action-bull" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; color: #999; padding: 0 5px">•</td> 
</tr> 
</tbody> 
</table> 
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?showComments=true&showCommentArea=true&src=email#addcomment" title="Add comment Icon" style="color: #3b73af; text-decoration: none"><img class="actions-pattern-action-icon-image" height="16" width="16" border="0" title="Add comment Icon" src="cid:com.atlassian.confluence.plugins.confluence-email-resources%3Aadd-comment-to-content-email-adg-footer-item%3Aicon" alt="Add comment Icon" style="vertical-align: middle" /></a></td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px; white-space: nowrap"><a href="https://wiki.asterisk.org/wiki/display/AST/Agenda+2019?showComments=true&showCommentArea=true&src=email#addcomment" title="Add comment" style="color: #3b73af; text-decoration: none">Add comment</a></td>
<td class="actions-pattern-action-bull" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; color: #999; padding: 0 5px">•</td> 
</tr> 
</tbody> 
</table> 
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"><a href="https://wiki.asterisk.org/wiki/plugins/likes/like.action?contentId=42566556&src=email" title="Like Icon" style="color: #3b73af; text-decoration: none"><img class="actions-pattern-action-icon-image" height="16" width="16" border="0" title="Like Icon" src="cid:com.atlassian.confluence.plugins.confluence-like%3Aview-email-adg-content-item%3Aicon" alt="Like Icon" style="vertical-align: middle" /></a></td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px; white-space: nowrap"><a href="https://wiki.asterisk.org/wiki/plugins/likes/like.action?contentId=42566556&src=email" title="Like" style="color: #3b73af; text-decoration: none">Like</a></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0px; border-collapse: collapse; color: #fff; height: 5px; line-height: 5px; padding: 0 15px 0 16px; background-color: #fff; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; mso-line-height-rule: exactly"> </td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px"> 
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333"> 
<tbody> 
<tr> 
<td id="footer-pattern-links-container" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
<tbody> 
<tr> 
<td class="footer-pattern-links mobile-resize-text" style="padding: 0px; border-collapse: collapse"><a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST&src=email" title="" style="color: #3b73af; text-decoration: none">Stop watching space</a></td>
<td class="footer-pattern-links-bull" style="padding: 0px; border-collapse: collapse; padding: 0 5px; color: #999">•</td> 
</tr> 
</tbody> 
</table> 
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> 
<tbody> 
<tr> 
<td class="footer-pattern-links mobile-resize-text" style="padding: 0px; border-collapse: collapse"><a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action?src=email" title="" style="color: #3b73af; text-decoration: none">Manage notifications</a></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px; display: none">This message was sent by Atlassian Confluence 5.6.6</td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
</tbody> 
</table> 
<table id="sealed-section" border="0" cellpadding="0" cellspacing="0" width="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333; display: none"> 
<tbody> 
<tr> 
<td style="padding: 0px; border-collapse: collapse; border: 0; font-size: 0px; line-height: 0; mso-line-height-rule: exactly"></td> 
</tr> 
</tbody> 
</table>
</body>
</html>