<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Asterisk can know that one of the attached phones is both
      "ringing" and "on the phone".</p>
    <p>However the sip NOTIFY it sends out to interested parties can
      only communicate one state, for example with pidf+xml it can
      either send "Ringing" or "On the phone" and so it sends "Ringing".</p>
    <p>This makes the "busy lights" less than useful, if a call makes
      multiple phones ring you can't tell, looking at the busy lights,
      which ones are busy, and so less likely to answer.</p>
    <p>In the chan_sip configuration there is an option "notifyringing":</p>
    <blockquote>
      <h2 id="chan_sipStateandPresenceOptions-notifyringing">notifyringing</h2>
      <p><strong>notifyringing</strong> enables or disables
        notifications for the RINGING state when an extension is already
        INUSE. Only affects subscriptions using the <strong>dialog-info</strong>
        event package. Option can be configured in the general section
        only. It cannot be set per-peer.</p>
    </blockquote>
    <p>As the doc says this only applies to dialog-info style NOTIFY,
      not the pidf+xml format my phones use.</p>
    <p>Here is a patch that makes notifyringing work for pidf+xml.</p>
    <p>Generalising it for other formats is left as an exercise for the
      reader.</p>
    <p>Of course chan_sip is obsolete.  How might this be done for
      chan_pjsip?  Parts of the code are similar, but the layering is
      vastly different.  How could the
      ast_sip_presence_exten_state_to_str function in
      res/res_pjsip/presence_xml.c get at the pjsip configuration?<br>
    </p>
  </body>
</html>