<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2176/18/9/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/Manipulating+Party+ID+Information">Manipulating Party ID Information</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~mjordan">Matt Jordan</a>
    </h4>
        <br/>
                         <h4>Changes (4)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" > <br>{warning:title=WARNING} <br></td></tr>
            <tr><td class="diff-changed-lines" >Interception macros have been deprecated in Asterisk 11 due to deprecation of [Macro|AST:Asterisk 11 Application_Macro].  Users of the interception functionality should plan to migrate to [Interception <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">routines|#anchor].</span> <span class="diff-added-words"style="background-color: #dfd;">routines|#interception_routines].</span> <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{warning} <br></td></tr>
            <tr><td class="diff-unchanged" > <br>The interception macros give the administrator an opportunity to alter connected line and redirecting information before the channel driver is given the information.  If the macro does not change a value then that is what is going to be passed to the channel driver. <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" > <br>h3. Interception routines <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{anchor:interception_routines} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{note} <br>As Interception routines are implemented internally using the [Gosub|AST:Asterisk 11 Application_Gosub] application, all routines should end with an explicit call to the [Return|AST:Asterisk 11 Application_Return] application. <br>{note} <br> <br>The interception routines give the administrator an opportunity to alter connected line and redirecting information before the channel driver is given the information.  If the routine does not change a value then that is what is going to be passed to the channel driver. <br> <br>The tag string available in CALLERID, CONNECTEDLINE, and REDIRECTING is useful for the interception routines to provide some information about where the information originally came from. <br> <br>The &#39;i&#39; option of the CONNECTEDLINE dialplan function should always be used in the CONNECTED_LINE interception routines.  The interception routine always passes the connected line information on to the channel driver when the routine returns.  Similarly, the &#39;i&#39; option of the REDIRECTING dialplan function should always be used in the REDIRECTING interception routines. <br> <br>* $\{REDIRECTING_CALLEE_SEND_SUB\} <br>Subroutine to call before sending a redirecting update to the callee.  This routine may never be needed since the redirecting updates should only go from the callee to the caller direction.  It is available for completeness. <br> <br>* $\{REDIRECTING_CALLEE_SEND_SUB_ARGS\} <br>Arguments to pass to $\{REDIRECTING_CALLEE_SEND_SUB\}. <br> <br>* $\{REDIRECTING_CALLER_SEND_SUB\} <br>Subroutine to call before sending a redirecting update to the caller. <br> <br>* $\{REDIRECTING_CALLER_SEND_SUB_ARGS\} <br>Arguments to pass to $\{REDIRECTING_CALLER_SEND_SUB\}. <br> <br>* $\{CONNECTED_LINE_CALLEE_SEND_SUB\} <br>Subroutine to call before sending a connected line update to the callee. <br> <br>* $\{CONNECTED_LINE_CALLEE_SEND_SUB_ARGS\} <br>Arguments to pass to $\{CONNECTED_LINE_CALLEE_SEND_SUB\}. <br> <br>* $\{CONNECTED_LINE_CALLER_SEND_SUB\} <br>Subroutine to call before sending a connected line update to the caller. <br> <br>* $\{CONNECTED_LINE_CALLER_SEND_SUB_ARGS\} <br>Arguments to pass to $\{CONNECTED_LINE_CALLER_SEND_SUB\}. <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h1. Manipulation examples <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <div>
<ul>
    <li><span class='TOCOutline'>1</span> <a href='#ManipulatingPartyIDInformation-Introduction'>Introduction</a></li>
    <li><span class='TOCOutline'>2</span> <a href='#ManipulatingPartyIDInformation-Toolsavailable'>Tools available</a></li>
<ul>
    <li><span class='TOCOutline'>2.1</span> <a href='#ManipulatingPartyIDInformation-CALLERIDdialplanfunction'>CALLERID dialplan function</a></li>
    <li><span class='TOCOutline'>2.2</span> <a href='#ManipulatingPartyIDInformation-CONNECTEDLINEdialplanfunction'>CONNECTEDLINE dialplan function</a></li>
    <li><span class='TOCOutline'>2.3</span> <a href='#ManipulatingPartyIDInformation-REDIRECTINGdialplanfunction'>REDIRECTING dialplan function</a></li>
<ul>
    <li><span class='TOCOutline'>2.3.1</span> <a href='#ManipulatingPartyIDInformation-SpecialREDIRECTINGconsiderationsforISDN'>Special REDIRECTING considerations for ISDN</a></li>
</ul>
    <li><span class='TOCOutline'>2.4</span> <a href='#ManipulatingPartyIDInformation-Dial%28%29andQueue%28%29dialplanapplication%27I%27option'>Dial() and Queue() dialplan application 'I' option</a></li>
    <li><span class='TOCOutline'>2.5</span> <a href='#ManipulatingPartyIDInformation-Interceptionmacros'>Interception macros</a></li>
    <li><span class='TOCOutline'>2.6</span> <a href='#ManipulatingPartyIDInformation-Interceptionroutines'>Interception routines</a></li>
</ul>
    <li><span class='TOCOutline'>3</span> <a href='#ManipulatingPartyIDInformation-Manipulationexamples'>Manipulation examples</a></li>
<ul>
    <li><span class='TOCOutline'>3.1</span> <a href='#ManipulatingPartyIDInformation-Simplerecordingplayback'>Simple recording playback</a></li>
    <li><span class='TOCOutline'>3.2</span> <a href='#ManipulatingPartyIDInformation-Straightforwarddialthrough'>Straightforward dial through</a></li>
    <li><span class='TOCOutline'>3.3</span> <a href='#ManipulatingPartyIDInformation-Useofinterceptionmacro'>Use of interception macro</a></li>
    <li><span class='TOCOutline'>3.4</span> <a href='#ManipulatingPartyIDInformation-Simpleredirection'>Simple redirection</a></li>
</ul>
    <li><span class='TOCOutline'>4</span> <a href='#ManipulatingPartyIDInformation-Ideasforusage'>Ideas for usage</a></li>
    <li><span class='TOCOutline'>5</span> <a href='#ManipulatingPartyIDInformation-Troubleshootingtips'>Troubleshooting tips</a></li>
    <li><span class='TOCOutline'>6</span> <a href='#ManipulatingPartyIDInformation-Forfurtherreading...'>For further reading...</a></li>
</ul></div>

<h1><a name="ManipulatingPartyIDInformation-Introduction"></a>Introduction</h1>

<p>This chapter aims to explain how to use some of the features available to manipulate party ID information.  It will not delve into specific channel configuration options described in the respective sample configuration files.  The party ID information can consist of Caller ID, Connected Line ID, redirecting to party ID information, and redirecting from party ID information.  Meticulous control is needed particularly when interoperating between different channel technologies.</p>
<ul>
        <li>Caller ID: The Caller ID information describes who is originating a call.</li>
        <li>Connected Line ID: The Connected Line ID information describes who is connected to the other end of a call while a call is established. Unlike Caller ID, the connected line information can change over the life of a call when call transfers are performed.  The connected line information can also change in either direction because either end could transfer the call.  For ISDN it is known as Connected Line Identification Presentation (COLP), Connected Line Identification Restriction (COLR), and Explicit Call Transfer (ECT).  For SIP it is known either as P-Asserted-Identity or Remote-Party-Id.</li>
        <li>Redirecting information: When a call is forwarded, the call originator is informed that the call is redirecting-to a new destination. The new destination is also informed that the incoming call is redirecting-from the forwarding party.  A call can be forwarded repeatedly until a new destination answers it or a forwarding limit is reached.</li>
</ul>


<h1><a name="ManipulatingPartyIDInformation-Toolsavailable"></a>Tools available</h1>

<p>Asterisk contains several tools for manipulating the party ID information for a call.  Additional information can be found by using the 'core show function' or 'core show application' console commands at the Asterisk CLI. The following list identifies some of the more common tools for manipulating the party ID information:</p>

<ul>
        <li><tt>CALLERID(datatype<a href="/wiki/pages/createpage.action?spaceKey=AST&amp;title=%2Ccaller-id&amp;linkCreation=true&amp;fromPageId=5243183" class="createlink">,caller&#45;id</a>)</tt></li>
        <li><tt>CONNECTEDLINE(datatype<a href="/wiki/pages/createpage.action?spaceKey=AST&amp;title=%2Ci&amp;linkCreation=true&amp;fromPageId=5243183" class="createlink">,i</a>)</tt></li>
        <li><tt>REDIRECTING(datatype<a href="/wiki/pages/createpage.action?spaceKey=AST&amp;title=%2Ci&amp;linkCreation=true&amp;fromPageId=5243183" class="createlink">,i</a>)</tt></li>
        <li><tt>Dial()</tt> and <tt>Queue()</tt> dialplan application 'I' option</li>
        <li>Interception macros</li>
        <li>Channel driver specific configuration options.</li>
</ul>


<h3><a name="ManipulatingPartyIDInformation-CALLERIDdialplanfunction"></a>CALLERID dialplan function</h3>

<p>The CALLERID function has been around for quite a while and its use is straightforward.  It is used to examine and alter the caller information that came into the dialplan with the call.  Then the call with it's caller information passes on to the destination using the Dial() or Queue() application.</p>

<p>The CALLERID information is passed during the initial call setup. However, depending on the channel technology, the caller name may be delayed.  Q.SIG is an example where the caller name may be delayed so your dialplan may need to wait for it.<br class="atl-forced-newline" /></p>

<h3><a name="ManipulatingPartyIDInformation-CONNECTEDLINEdialplanfunction"></a>CONNECTEDLINE dialplan function</h3>

<p>The CONNECTEDLINE function does the opposite of the CALLERID function. CONNECTEDLINE can be used to setup connected line information to be sent when the call is answered.  You can use it to send new connected line information to the remote party on the channel when a call is transferred.  The CONNECTEDLINE information is passed when the call is answered and when the call is transferred.</p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>It is up to the channel technology to determine when to act upon connected line updates before the call is answered.  ISDN will just store the updated information until the call is answered.  SIP will immediately update the caller with a Re-INVITE.</td></tr></table></div>

<p>Since the connected line information can be sent while a call is connected, you may need to prevent the channel driver from acting on a <b>partial</b> update.  The 'i' option is used to inhibit the channel driver from sending the changed information immediately.<br class="atl-forced-newline" /></p>

<h3><a name="ManipulatingPartyIDInformation-REDIRECTINGdialplanfunction"></a>REDIRECTING dialplan function</h3>

<p>The REDIRECTING function allows you to report information about forwarded/deflected calls to the caller and to the new destination.  The use of the REDIRECTING function is the most complicated of the party information functions.</p>

<p>The REDIRECTING information is passed during the initial call setup and while the call is being routed through the network.  Since the redirecting information is sent before a call is answered, you need to prevent the channel driver from acting on a partial update.  The 'i' option is used to inhibit the channel driver from sending the changed information immediately.</p>

<p>The incoming call may have already been redirected.  An incoming call has already been redirected if the REDIRECTING(count) is not zero.  (Alternate indications are if the REDIRECTING(from-num-valid) is non-zero or if the REDIRECTING(from-num) is not empty.)</p>

<p>There are several things to do when a call is forwarded by the dialplan:</p>
<ul>
        <li>Setup the REDIRECTING(to-xxx) values to be sent to the caller.</li>
        <li>Setup the REDIRECTING(from-xxx) values to be sent to the new destination.</li>
        <li>Increment the REDIRECTING(count).</li>
        <li>Set the REDIRECTING(reason).</li>
        <li>Dial() the new destination.</li>
</ul>


<h5><a name="ManipulatingPartyIDInformation-SpecialREDIRECTINGconsiderationsforISDN"></a>Special REDIRECTING considerations for ISDN</h5>

<p>Special considerations for Q.SIG and ISDN point-to-point links are needed to make the DivertingLegInformation1, DivertingLegInformation2, and DivertingLegInformation3 messages operate properly.</p>

<p>You should manually send the COLR of the redirected-to party for an incoming redirected call if the incoming call could experience further redirects.  For chan_misdn, just set the REDIRECTING(to-num,i) = ${EXTEN} and set the REDIRECTING(to-num-pres) to the COLR.  For chan_dahdi, just set the REDIRECTING(to-num,i) = CALLERID(dnid) and set the REDIRECTING(to-num-pres) to the COLR.  (Setting the REDIRECTING(to-num,i) value may not be necessary since the channel driver has already attempted to preset that value for automatic generation of the needed DivertingLegInformation3 message.)</p>

<p>For redirected calls out a trunk line, you need to use the 'i' option on all of the REDIRECTING statements before dialing the redirected-to party. The call will update the redirecting-to presentation (COLR) when it becomes available.<br class="atl-forced-newline" /></p>

<h3><a name="ManipulatingPartyIDInformation-Dial%28%29andQueue%28%29dialplanapplication%27I%27option"></a>Dial() and Queue() dialplan application 'I' option</h3>

<p>In the dialplan applications Dial() and Queue(), the 'I' option is a brute force option to block connected line and redirecting information updates while the application is running.  Blocking the updates prevents the update from overwriting any CONNECTEDLINE or REDIRECTING values you may have setup before running the application.</p>

<p>The option blocks all redirecting updates since they should only happen before a call is answered.  The option only blocks the connected line update from the initial answer.  Connected line updates resulting from call transfers happen after the application has completed.  Better control of connected line and redirecting information is obtained using the interception macros.<br class="atl-forced-newline" /></p>

<h3><a name="ManipulatingPartyIDInformation-Interceptionmacros"></a>Interception macros</h3>

<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>WARNING</b><br />Interception macros have been deprecated in Asterisk 11 due to deprecation of <a href="/wiki/display/AST/Asterisk+11+Application_Macro" title="Asterisk 11 Application_Macro">Macro</a>.  Users of the interception functionality should plan to migrate to <a href="#ManipulatingPartyIDInformation-interceptionroutines">Interception routines</a>.</td></tr></table></div>

<p>The interception macros give the administrator an opportunity to alter connected line and redirecting information before the channel driver is given the information.  If the macro does not change a value then that is what is going to be passed to the channel driver.</p>

<p>The tag string available in CALLERID, CONNECTEDLINE, and REDIRECTING is useful for the interception macros to provide some information about where the information originally came from.</p>

<p>The 'i' option of the CONNECTEDLINE dialplan function should always be used in the CONNECTED_LINE interception macros.  The interception macro always passes the connected line information on to the channel driver when the macro exits.  Similarly, the 'i' option of the REDIRECTING dialplan function should always be used in the REDIRECTING interception macros.</p>

<ul>
        <li>${REDIRECTING_CALLEE_SEND_MACRO}<br/>
Macro to call before sending a redirecting update to the callee.  This macro may never be needed since the redirecting updates should only go from the callee to the caller direction.  It is available for completeness.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLEE_SEND_MACRO_ARGS}<br/>
Arguments to pass to ${REDIRECTING_CALLEE_SEND_MACRO}.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLER_SEND_MACRO}<br/>
Macro to call before sending a redirecting update to the caller.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLER_SEND_MACRO_ARGS}<br/>
Arguments to pass to ${REDIRECTING_CALLER_SEND_MACRO}.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLEE_SEND_MACRO}<br/>
Macro to call before sending a connected line update to the callee.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLEE_SEND_MACRO_ARGS}<br/>
Arguments to pass to ${CONNECTED_LINE_CALLEE_SEND_MACRO}.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLER_SEND_MACRO}<br/>
Macro to call before sending a connected line update to the caller.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLER_SEND_MACRO_ARGS}<br/>
Arguments to pass to ${CONNECTED_LINE_CALLER_SEND_MACRO}.</li>
</ul>


<h3><a name="ManipulatingPartyIDInformation-Interceptionroutines"></a>Interception routines</h3>
<p><a name="ManipulatingPartyIDInformation-interceptionroutines"></a></p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>As Interception routines are implemented internally using the <a href="/wiki/display/AST/Asterisk+11+Application_Gosub" title="Asterisk 11 Application_Gosub">Gosub</a> application, all routines should end with an explicit call to the <a href="/wiki/display/AST/Asterisk+11+Application_Return" title="Asterisk 11 Application_Return">Return</a> application.</td></tr></table></div>

<p>The interception routines give the administrator an opportunity to alter connected line and redirecting information before the channel driver is given the information.  If the routine does not change a value then that is what is going to be passed to the channel driver.</p>

<p>The tag string available in CALLERID, CONNECTEDLINE, and REDIRECTING is useful for the interception routines to provide some information about where the information originally came from.</p>

<p>The 'i' option of the CONNECTEDLINE dialplan function should always be used in the CONNECTED_LINE interception routines.  The interception routine always passes the connected line information on to the channel driver when the routine returns.  Similarly, the 'i' option of the REDIRECTING dialplan function should always be used in the REDIRECTING interception routines.</p>

<ul>
        <li>${REDIRECTING_CALLEE_SEND_SUB}<br/>
Subroutine to call before sending a redirecting update to the callee.  This routine may never be needed since the redirecting updates should only go from the callee to the caller direction.  It is available for completeness.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLEE_SEND_SUB_ARGS}<br/>
Arguments to pass to ${REDIRECTING_CALLEE_SEND_SUB}.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLER_SEND_SUB}<br/>
Subroutine to call before sending a redirecting update to the caller.</li>
</ul>


<ul>
        <li>${REDIRECTING_CALLER_SEND_SUB_ARGS}<br/>
Arguments to pass to ${REDIRECTING_CALLER_SEND_SUB}.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLEE_SEND_SUB}<br/>
Subroutine to call before sending a connected line update to the callee.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLEE_SEND_SUB_ARGS}<br/>
Arguments to pass to ${CONNECTED_LINE_CALLEE_SEND_SUB}.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLER_SEND_SUB}<br/>
Subroutine to call before sending a connected line update to the caller.</li>
</ul>


<ul>
        <li>${CONNECTED_LINE_CALLER_SEND_SUB_ARGS}<br/>
Arguments to pass to ${CONNECTED_LINE_CALLER_SEND_SUB}.</li>
</ul>


<h1><a name="ManipulatingPartyIDInformation-Manipulationexamples"></a>Manipulation examples</h1>

<p>The following examples show several common scenarios in which you may need to manipulate party ID information from the dialplan.<br class="atl-forced-newline" /></p>

<h3><a name="ManipulatingPartyIDInformation-Simplerecordingplayback"></a>Simple recording playback</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1000,1,NoOp
; The CONNECTEDLINE information is sent when the call is answered.
exten =&gt; 1000,n,Set(CONNECTEDLINE(name,i)=Company Name)
exten =&gt; 1000,n,Set(CONNECTEDLINE(name-pres,i)=allowed)
exten =&gt; 1000,n,Set(CONNECTEDLINE(num,i)=5551212)
exten =&gt; 1000,n,Set(CONNECTEDLINE(num-pres)=allowed)
exten =&gt; 1000,n,Answer
exten =&gt; 1000,n,Playback(tt-weasels)
exten =&gt; 1000,n,Hangup
</pre>
</div></div>

<h3><a name="ManipulatingPartyIDInformation-Straightforwarddialthrough"></a>Straightforward dial through</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1000,1,NoOp
; The CONNECTEDLINE information is sent when the call is answered.
exten =&gt; 1000,n,Set(CONNECTEDLINE(name,i)=Company Name)
exten =&gt; 1000,n,Set(CONNECTEDLINE(name-pres,i)=allowed)
exten =&gt; 1000,n,Set(CONNECTEDLINE(num,i)=5551212)
exten =&gt; 1000,n,Set(CONNECTEDLINE(num-pres)=allowed)
; The I option prevents overwriting the CONNECTEDLINE information
; set above when the call is answered.
exten =&gt; 1000,n,Dial(SIP/1000,20,I)
exten =&gt; 1000,n,Hangup
</pre>
</div></div>

<h3><a name="ManipulatingPartyIDInformation-Useofinterceptionmacro"></a>Use of interception macro</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>[macro-add_pfx]
; ARG1 is the prefix to add.
; ARG2 is the number of digits at the end to add the prefix to.
; When the macro ends the CONNECTEDLINE data is passed to the
; channel driver.
exten =&gt; s,1,NoOp(Add prefix to connected line)
exten =&gt; s,n,Set(NOPREFIX=${CONNECTEDLINE(number):-${ARG2}})
exten =&gt; s,n,Set(CONNECTEDLINE(num,i)=${ARG1}${NOPREFIX})
exten =&gt; s,n,MacroExit

exten =&gt; 1000,1,NoOp
exten =&gt; 1000,n,Set(__CONNECTED_LINE_CALLER_SEND_MACRO=add_pfx)
exten =&gt; 1000,n,Set(__CONNECTED_LINE_CALLER_SEND_MACRO_ARGS=45,4)
exten =&gt; 1000,n,Dial(SIP/1000,20)
exten =&gt; 1000,n,Hangup
</pre>
</div></div>

<h3><a name="ManipulatingPartyIDInformation-Simpleredirection"></a>Simple redirection</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>exten =&gt; 1000,1,NoOp
; For Q.SIG or ISDN point-to-point we should determine the COLR for this
; extension and send it if the call was redirected here.
exten =&gt; 1000,n,GotoIf($[${REDIRECTING(count)}&gt;0]?redirected:notredirected)
exten =&gt; 1000,n(redirected),Set(REDIRECTING(to-num,i)=${CALLERID(dnid)})
exten =&gt; 1000,n,Set(REDIRECTING(to-num-pres)=allowed)
exten =&gt; 1000,n(notredirected),NoOp
; Determine that the destination has forwarded the call.
; ...
exten =&gt; 1000,n,Set(REDIRECTING(from-num,i)=1000)
exten =&gt; 1000,n,Set(REDIRECTING(from-num-pres,i)=allowed)
exten =&gt; 1000,n,Set(REDIRECTING(to-num,i)=2000)
; The DivertingLegInformation3 message is needed because at this point
; we do not know the presentation (COLR) setting of the redirecting-to
; party.
exten =&gt; 1000,n,Set(REDIRECTING(count,i)=$[${REDIRECTING(count)} + 1])
exten =&gt; 1000,n,Set(REDIRECTING(reason,i)=cfu)
; The call will update the redirecting-to presentation (COLR) when it
; becomes available with a redirecting update.
exten =&gt; 1000,n,Dial(DAHDI/g1/2000,20)
exten =&gt; 1000,n,Hangup
</pre>
</div></div>

<h1><a name="ManipulatingPartyIDInformation-Ideasforusage"></a>Ideas for usage</h1>

<p>The following is a list of ideas in which the manipulation of party ID information would be beneficial.</p>
<ul>
        <li>IVR that updates connected name on each selection made.</li>
        <li>Disguise the true number of an individual with a generic company number.</li>
        <li>Use interception macros to make outbound connected number E.164 formatted.</li>
        <li>You can do a lot more in an interception macro than just manipulate party information...</li>
</ul>


<h1><a name="ManipulatingPartyIDInformation-Troubleshootingtips"></a>Troubleshooting tips</h1>

<ul>
        <li>For CONNECTEDLINE and REDIRECTING, check the usage of the 'i' option.</li>
        <li>Check channel configuration settings.  The default settings may not be what you want or expect.</li>
        <li>Check packet captures.  Your equipment may not support what Asterisk sends.</li>
</ul>


<h1><a name="ManipulatingPartyIDInformation-Forfurtherreading..."></a>For further reading...</h1>

<ul>
        <li>Relevant ETSI ISDN redirecting specification: EN 300 207-1</li>
        <li>Relevant ETSI ISDN COLP specification: EN 300 097-1</li>
        <li>Relevant ETSI ISDN ECT specification: EN 300 369-1</li>
        <li>Relevant Q.SIG ISDN redirecting specification: ECMA-174</li>
        <li>Relevant Q.SIG ISDN COLP specification: ECMA-148</li>
        <li>Relevant Q.SIG ISDN ECT specification: ECMA-178</li>
        <li>Relevant SIP RFC for P-Asserted-Id: RFC3325</li>
        <li>The expired draft (draft-ietf-sip-privacy-04.txt) defines Remote-Party-Id.  Since Remote-Party-Id has not made it into an RFC at this time, its use is non-standard by definition.</li>
</ul>

    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/Manipulating+Party+ID+Information">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=5243183&revisedVersion=23&originalVersion=22">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/Manipulating+Party+ID+Information?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>