[asterisk-bugs] [Asterisk 0008824]: [patch] Remote (called) Party Identification - chan_sip & chan_skinny implementation

noreply at bugs.digium.com noreply at bugs.digium.com
Thu Oct 11 05:31:22 CDT 2007


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=8824 
====================================================================== 
Reported By:                gareth
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   8824
Category:                   Core/General
Reproducibility:            N/A
Severity:                   feature
Priority:                   normal
Status:                     ready for testing
Asterisk Version:            SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  trunk 
SVN Revision (number only!): 59043 
Disclaimer on File?:        Yes 
Request Review:              
====================================================================== 
Date Submitted:             01-15-2007 18:18 CST
Last Modified:              10-11-2007 05:31 CDT
====================================================================== 
Summary:                    [patch] Remote (called) Party Identification -
chan_sip & chan_skinny implementation
Description: 
Overview:

This patch provides the ability to rewrite the called party information
on
channel types that support it.  Implementations for the SIP (see note
http://bugs.digium.com/view.php?id=1)
and Skinny (see note http://bugs.digium.com/view.php?id=2) channels have been
provided.

Current features are:

1. Make changes whilst the call is progessing though the dial plan, ie:

   exten => s,1,RemoteParty("Voicemail" <123>)
   exten => s,n,Answer()
   exten => s,n,VoiceMailMain()

2. When using call pickup it will rewrite the caller information showing
the caller that was picked up.

3. When unparking a call it will show the caller*id of the parked call.

The ability to rewrite the calling party identification on semi-attended
transfer is planned but doesn't work yet.

Implementation:

Transmission of the remote party data is done using indications with a
new
subtype of AST_CONTROL_REMOTEPARTY, format of the data is:

  "name" <number>|presentation

Any channel specific code is kept in it's _indicate() handler. Once the
channel driver has received the indication it uses the method specific to
it; in the case of SIP it sends a 180/183 response if possible and with
Skinny it uses transmit_callinfo().

Note http://bugs.digium.com/view.php?id=1: The SIP implemenation is only able to
update the remote party
before the call has been answered as there is no re-invite support yet.

Note http://bugs.digium.com/view.php?id=2: I don't have any Skinny phones so no
testing has been done on
that part. 
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0006643 [patch] Implement Called Party Identifi...
has duplicate       0008990 Transfer and Variables
====================================================================== 

---------------------------------------------------------------------- 
 gareth - 10-11-07 05:31  
---------------------------------------------------------------------- 
Part 2 -

Updating on transfers was never going to work because asterisk overwrites
the callerid (if any) of the called channel in Dial().

To fix that, the patch makes two changes. Firstly, it makes the SIP and
IAX channels store the callerid of the peer when it is allocated (most
other channels already did this) and secondly, it adds a second callerid
structure to the channel (dialcid) that is used to pass caller information
and to store a callerid that can be set on trunk lines.

The helper function ast_copy_callerid() has been added to make it easy to
copy callerid information between chan->cid and chan->diacid structures.

I will update the patches shortly, updating the callerid on SIP
semi-attended-transfer now works. Note the change to the p->ocseq check in
chan_sip.c that now also checks against p->lastinvite because the INVITE
response will have the CSeq of the INVITE even if p->ocseq has been
incremented due to an UPDATE. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
10-11-07 05:31  gareth         Note Added: 0071809                          
======================================================================




More information about the asterisk-bugs mailing list