<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 7, 2019 at 7:28 AM Seán C. McCord <<a href="mailto:ulexus@gmail.com">ulexus@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I would definitely prefer to have it be a "normal" channel, so that it interoperates with everything exactly as any other channel, especially as regarding bridges.  I went back and forth a lot on this during the AudioSocket development.  There are conveniences with having things automated/bundled, but flexibility is more important.</div></blockquote><div><br></div><div>The thinking now is to create an "externalMedia" sub-resource under "channels" so "POST /channels/externalMedia" would give you a back a channel you could do anything you want with.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>DNS is pretty important for me, since my deployments are generally all in an abstracted, dynamic environment (generally kubernetes), but I developed asteriskconfig to be able to reactively handle those kinds of changes and abstractions... so first pass no DNS?  Sure.  Ultimately, it's pretty important.</div></div></blockquote><div><br></div><div>Yeah OK.  I'll might as well do it now then.  The only downside is that you'll have to look for events or do a GET on the channel to see if/when it's connected.  </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 7, 2019 at 9:00 AM George Joseph <<a href="mailto:gjoseph@digium.com" target="_blank">gjoseph@digium.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Thinking more about  code organization and taxonomy...   It might make sense to make ExternalMedia a first-class object in it's own right.  Rather than calling "POST /channels/<channel_id>/externalMedia" or "POST /bridges/<brdge_id>/externalMedia"  to create a new external media session, you'd call "POST /externalMedias" and pass in the bridge or channel id you want to act on.  This prevents having to have external media code in both the channels and bridges modules.</div><div><br></div><div>Also thinking about DNS resolution.  How important is it to be able to specify a hostname for the external server, at least in the first release?  It complicates matters because the lookup has to be done asynchronously or we risk locking ARI up if the lookup response time is slow.  We'd have to solve this later for TCP connection types anyway because the connection handshake could also be be slow but I'm wondering if I can defer the async processing for a bit.</div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 1, 2019 at 6:52 AM George Joseph <<a href="mailto:gjoseph@digium.com" target="_blank">gjoseph@digium.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">So here's where we're at with adding this capability...<div><br></div><div>Initial release:</div><div><ul><li>Two new ARI endpoints, one on channel and one on bridge:</li><ul><li>/channels/<channel_id>/externalMedia</li><li>/bridges/<bridge_id>/externalMedia</li></ul><li>You can specify:</li><ul><li>host: <address>:<port></li><li>encapsulation: rtp (with others added later)</li><li>transport: udp (with tcp, ws, tls, http, etc added later)</li><li>connection_type: client (with server added later)</li><li>format: <any asterisk supported codec/format></li><li>direction: both (with in, out supported later)</li><li>mixed: true (at some later date, we may allow each channel in a bridge or each direction on a channel to be placed in a separate audio channel)</li></ul></ul><div>We'll use chan_rtp (rtp, udp, client) as the initial underlying provider but we'll create a mechanism to easily add other providers.  Also in the initial release, calling externalMedia on a channel that's already in a bridge will fail.  In this case, you should call externalMedia on the bridge.  We'll revisit this after we get some real-world feedback.  We may be able to use the snoop functionality to isolate a single channel in a bridge for instance.</div><div><br></div><div>For later releases:</div><div>What are your priorities for payload encapsulation and transport?</div><div><br></div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 29, 2019 at 9:43 AM George Joseph <<a href="mailto:gjoseph@digium.com" target="_blank">gjoseph@digium.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 22, 2019 at 3:05 AM Jean Aunis <<a href="mailto:jean.aunis@prescom.fr" target="_blank">jean.aunis@prescom.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">
    <p>It may not be suitable for your use case, but you could
      instantiate a UnicastRTP channel. It will allocate an RTP port and
      store it into a channel variable.</p>
    <p>Jean<br></p></div></blockquote><div><br></div><div>I missed this last week, sorry Jean!<div><br></div><div>So yeah, what's wrong with using chan_rtp?  Basically it sets up a two-way rtp instance with an arbitrary destination.</div><div>You can dial the destination as "UnicastRTP/<ip_address>:<port>/c(ulaw)" either from the dialplan, or you can create a channel using ARI and add it to an existing bridge.</div><div>It doesn't solve Dan's need for connecting to asterisk instead of the other way around but I think we can make that work. </div><div> <br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><p>
    </p>
    <div class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail-m_3115122548823670505moz-cite-prefix">Le 22/07/2019 à 10:01, Dan Jenkins a
      écrit :<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Also coming back to this with some real-life case
        issues I'm currently facing and why I can't use audiosocket :(
        <div><br>
        </div>
        <div>I need to be able to ask the ARI/AGI/AMI for an IP/port
          combo and for an external app to then connect into asterisk
          rather than asterisk connecting to a URI elsewhere. Lets say I
          already have a nodejs (or any other language) process taking
          care of controlling that call via ARI or even AGI (all the
          different ways) - I need that same process to handle the media
          I'm sending and receiving to/from asterisk and so if I already
          have that process up and then Asterisk calls out to a generic
          URI then that media will never make it back to the original
          nodejs process.</div>
        <div><br>
        </div>
        <div>I think its of upmost importance that I be able to ask
          asterisk for a host:port pair and then be able to connect to
          that port from my external application.</div>
        <div><br>
        </div>
        <div>What do people think? I thought we'd talked about this
          mechanism at devcon?</div>
        <div><br>
        </div>
        <div>Dan</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Sat, Jul 20, 2019 at 2:39
          PM Dan Jenkins <<a href="mailto:dan@nimblea.pe" target="_blank">dan@nimblea.pe</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">Just  going to chime in and say I don't see a
            one way audio solution as enough and I'd worry that doing
            that would lead to "oh but only so many people need to chuck
            audio in". This has been discussed at at least 3 devcons
            now.</div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Thu, Jul 18, 2019 at
              2:09 PM Seán C. McCord <<a href="mailto:ulexus@gmail.com" target="_blank">ulexus@gmail.com</a>> wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div dir="ltr">I certainly don't mind if a better-designed
                system comes along and obviates my AudioSocket
                implementation.  I built it because I needed it. 
                However, bidirectional audio flow is critical for me
                (speech synthesis, external interfacing, real-time
                processed audio, processed injections, etc).  While I
                would actually prefer a system which was a bit beefier
                than my own (simple protocol aside, there's a good deal
                of range between my protocol and MRCP), my meagre C
                skills (and patience) don't allow me to venture forth
                into those difficult waters.
                <div><br>
                </div>
                <div>I do like the separate connection (unlike Wazo's)
                  and the support of TLS (unlike mine)... and yours is
                  certainly (even without looking) more performant. 
                  Mine also probably needs a multi-threaded,
                  dedicated-receiver approach like most of the other
                  channels which handle socket-received media, rather
                  than the simple non-blocking I/O with null frame
                  insertion.  No perfect solution yet.</div>
                <div><br>
                </div>
                <div><br>
                </div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Thu, Jul 18, 2019
                  at 8:01 AM George Joseph <<a href="mailto:gjoseph@digium.com" target="_blank">gjoseph@digium.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                  <div dir="ltr">Hey Guys,
                    <div><br>
                    </div>
                    <div>I was on vacation when this thread happened but
                      I'm also working on this now.  The implementation
                      uses the existing ARI channel and bridge recording
                      endpoints ands add the ability to specify a URI in
                      the form of (udp|tcp|tls)://hostname:port to
                      stream the media.  This makes use of the existing
                      chan_bridge_media driver and only requires a
                      scheme handler similar to Seán's res_audiosocket. 
                       This implementation is more targeted to real-time
                      speech recognition/transcription/captioning and is
                      therefore one way (outbound).  A future
                      enhancement is planned that would send each
                      channel in a bridge as a separate audio channel in
                      a multi-channel container.</div>
                    <div><br>
                    </div>
                    <div>I'm not suggesting that this should replace
                      Seán's audiosocket stuff but I did want to let you
                      know what was in the pipeline.</div>
                    <div><br>
                    </div>
                    <div>george</div>
                  </div>
                  <br>
                  <div class="gmail_quote">
                    <div dir="ltr" class="gmail_attr">On Fri, Jul 5,
                      2019 at 7:38 AM Seán C. McCord <<a href="mailto:ulexus@gmail.com" target="_blank">ulexus@gmail.com</a>>
                      wrote:<br>
                    </div>
                    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                      <div dir="auto">Solutions such as Jack are
                        non-network oriented and severely limited in
                        scalability.  There are, of course, many other
                        options, but the closest are chan_rtp and
                        chan_nbs.  RTP is a good option except for the
                        difficulty for non-telephony people to interact
                        with it.  NBS is deprecated, undocumented, and
                        unsupported by any locatable resources.
                        <div dir="auto"><br>
                        </div>
                        <div dir="auto">While the original app interface
                          from last year required dialplan, the channel
                          interface does not.  It is a plain channel
                          which can be used by ARI directly.</div>
                        <div dir="auto"><br>
                        </div>
                      </div>
                      <br>
                      <div class="gmail_quote">
                        <div dir="ltr" class="gmail_attr">On Fri, Jul 5,
                          2019, 15:28 Sylvain Boily <<a href="mailto:sylvain@wazo.io" target="_blank">sylvain@wazo.io</a>>
                          wrote:<br>
                        </div>
                        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
                          <div bgcolor="#FFFFFF"> Hello Seán,<br>
                            <br>
                            <div class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail-m_3115122548823670505gmail-m_-6610576394397312497gmail-m_6655909510752751919gmail-m_1294915323101164025gmail-m_3574532234430247964gmail-m_6690327112019832243m_-7160625712045487113moz-cite-prefix">On
                              2019-07-05 4:45 a.m., Seán C. McCord
                              wrote:<br>
                            </div>
                            <blockquote type="cite">
                              <div dir="ltr">A brief update:
                                <div><br>
                                </div>
                                <div>I have adapted my app_audiosocket
                                  from last year to become
                                  chan_audiosocket, a full bidirectional
                                  audio channel interface for Asterisk
                                  to any AudioSocket service (which
                                  itself is a dead-simple
                                  implementation).  I'll be demoing it
                                  in my talk next week at CommCon, for
                                  anyone who might be interested.  I'm
                                  going to try to have it ready to push
                                  to gerrit for review this weekend.</div>
                              </div>
                            </blockquote>
                            <br>
                            I'll be there.<br>
                            <blockquote type="cite">
                              <div dir="ltr">
                                <div><br>
                                </div>
                                <div>For now, you can see it in the
                                  'channel' branch of <a href="http://github.com/CyCoreSystems/audiosocket" rel="noreferrer" target="_blank">github.com/CyCoreSystems/audiosocket</a>.</div>
                              </div>
                            </blockquote>
                            <br>
                            This is very different from what we did. You
                            need dialplan to use it. In our case we
                            don't need any dialplan to use it, it's more
                            ARI approach.<br>
                            <br>
                            Sylvain<br>
                          </div>
                        </blockquote>
                      </div>
                      -- <br>
_____________________________________________________________________<br>
                      -- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a>
                      --<br>
                      <br>
                      asterisk-dev mailing list<br>
                      To UNSUBSCRIBE or update options visit:<br>
                         <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a></blockquote>
                  </div>
                  <br clear="all">
                  <div><br>
                  </div>
                  -- <br>
                  <div dir="ltr" class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail-m_3115122548823670505gmail-m_-6610576394397312497gmail-m_6655909510752751919gmail-m_1294915323101164025gmail-m_3574532234430247964gmail_signature">
                    <div dir="ltr">
                      <div>
                        <div dir="ltr">
                          <div dir="ltr" style="font-size:12.8px"><b style="font-family:arial,helvetica,sans-serif;font-size:12.8px">George
                              Joseph</b><br>
                          </div>
                          <div dir="ltr">
                            <div style="font-size:12.8px"><font size="1" face="arial, helvetica, sans-serif">Digium
                                - A Sangoma Company | Software
                                Developer | Software Engineering</font></div>
                            <font size="1">445 Jan Davis Drive NW -
                              Huntsville, AL 35806 - US</font></div>
                          <div dir="ltr"><font size="1">direct/fax: +1
                              256 428 6012</font>
                            <div style="font-size:12.8px"><font size="1" face="arial, helvetica, sans-serif">Check
                                us out at: <a href="https://digium.com/" style="color:rgb(17,85,204)" target="_blank">https://digium.com</a> · <a href="https://sangoma.com/" style="color:rgb(17,85,204)" target="_blank">https://sangoma.com</a></font></div>
                            <div style="font-size:12.8px"><br>
                            </div>
                            <div style="font-size:12.8px"><img width="96" height="60"></div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </blockquote>
              </div>
              <br clear="all">
              <div><br>
              </div>
              -- <br>
              <div dir="ltr" class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail-m_3115122548823670505gmail-m_-6610576394397312497gmail-m_6655909510752751919gmail_signature">Seán
                C. McCord
                <div><a href="mailto:ulexus@gmail.com" target="_blank">ulexus@gmail.com</a><br>
                  <div>CyCore Systems</div>
                </div>
              </div>
              -- <br>
_____________________________________________________________________<br>
              -- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a>
              --<br>
              <br>
              asterisk-dev mailing list<br>
              To UNSUBSCRIBE or update options visit:<br>
                 <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a></blockquote>
          </div>
        </blockquote>
      </div>
      <br>
      <fieldset class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail-m_3115122548823670505mimeAttachmentHeader"></fieldset>
    </blockquote>
  </div>

-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail-m_6515424908324150345gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr" style="font-size:12.8px"><b style="font-family:arial,helvetica,sans-serif;font-size:12.8px">George Joseph</b><br></div><div dir="ltr"><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Digium - A Sangoma Company | Software Developer | Software Engineering</font></div><font size="1">445 Jan Davis Drive NW - Huntsville, AL 35806 - US</font></div><div dir="ltr"><font size="1">direct/fax: +1 256 428 6012</font><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Check us out at: <a href="https://digium.com/" style="color:rgb(17,85,204)" target="_blank">https://digium.com</a> · <a href="https://sangoma.com/" style="color:rgb(17,85,204)" target="_blank">https://sangoma.com</a></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><img width="96" height="60"></div></div></div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail-m_-485313160720431232gmail-m_-4454479943509338547gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr" style="font-size:12.8px"><b style="font-family:arial,helvetica,sans-serif;font-size:12.8px">George Joseph</b><br></div><div dir="ltr"><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Digium - A Sangoma Company | Software Developer | Software Engineering</font></div><font size="1">445 Jan Davis Drive NW - Huntsville, AL 35806 - US</font></div><div dir="ltr"><font size="1">direct/fax: +1 256 428 6012</font><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Check us out at: <a href="https://digium.com/" style="color:rgb(17,85,204)" target="_blank">https://digium.com</a> · <a href="https://sangoma.com/" style="color:rgb(17,85,204)" target="_blank">https://sangoma.com</a></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><img width="96" height="60"></div></div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_-5791778319769975067gmail-m_-1128787320869167667gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr" style="font-size:12.8px"><b style="font-family:arial,helvetica,sans-serif;font-size:12.8px">George Joseph</b><br></div><div dir="ltr"><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Digium - A Sangoma Company | Software Developer | Software Engineering</font></div><font size="1">445 Jan Davis Drive NW - Huntsville, AL 35806 - US</font></div><div dir="ltr"><font size="1">direct/fax: +1 256 428 6012</font><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Check us out at: <a href="https://digium.com/" style="color:rgb(17,85,204)" target="_blank">https://digium.com</a> · <a href="https://sangoma.com/" style="color:rgb(17,85,204)" target="_blank">https://sangoma.com</a></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><img width="96" height="60"></div></div></div></div></div></div></div>
-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail-m_-5791778319769975067gmail_signature">Seán C. McCord<div><a href="mailto:ulexus@gmail.com" target="_blank">ulexus@gmail.com</a><br><div>CyCore Systems</div></div></div>
-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr" style="font-size:12.8px"><b style="font-family:arial,helvetica,sans-serif;font-size:12.8px">George Joseph</b><br></div><div dir="ltr"><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Digium - A Sangoma Company | Software Developer | Software Engineering</font></div><font size="1">445 Jan Davis Drive NW - Huntsville, AL 35806 - US</font></div><div dir="ltr"><font size="1">direct/fax: +1 256 428 6012</font><div style="font-size:12.8px"><font face="arial, helvetica, sans-serif" size="1">Check us out at: <a href="https://digium.com/" style="color:rgb(17,85,204)" target="_blank">https://digium.com</a> · <a href="https://sangoma.com/" style="color:rgb(17,85,204)" target="_blank">https://sangoma.com</a></font></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><img src="https://www.digium.com/sites/digium/themes/digium/logo.png" width="96" height="60"></div></div></div></div></div></div></div>