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

noreply at bugs.digium.com noreply at bugs.digium.com
Sun Jul 6 04:12:06 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=8824 
====================================================================== 
Reported By:                gareth
Assigned To:                oej
====================================================================== 
Project:                    Asterisk
Issue ID:                   8824
Category:                   Channels/NewFeature
Reproducibility:            N/A
Severity:                   feature
Priority:                   normal
Status:                     assigned
Asterisk Version:           1.6.0-beta9 
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:              07-06-2008 04:11 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
related to          0011036 Crush at unknown place
related to          0012511 transfer number of caller to callee whe...
====================================================================== 

---------------------------------------------------------------------- 
 gareth - 07-06-08 04:11  
---------------------------------------------------------------------- 
Hi oej

I have uploaded a new patch against svn trunk now (and one for 1.4.21.1),
you may delete any patches previous to these two.

Some comments on your document regarding the need for struct
ast_connectedline:

Most of the connected line updates are done _before_ a channel has been
bridged so we cannot grab the callerid from the bridged channel. Typical
call scenarios are:

1. When calling a channel, we need to pass the called party information to
the new channel as we no longer overwrite that channel's callerid.

I did look at extending the prototype for ast_call to include a struct
ast_callerid argument but this would have required a lot more additional
code.

2. When dialing a trunk device (ie: somehing we receive callerid from) we
need somewhere to store the callerid information before it has been
allocated.

3. When using call pickup we are taking over the ringing channel which
hasn't been bridged yet.

4. When doing a semi-attended transfer we use the connecte line
information of the transferrer to tell the transferree whom they are now
connected to.

I would liked to have reused struct ast_callerid, however that was
undesirable due to the cid_ prefix on its members. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
07-06-08 04:11  gareth         Note Added: 0089789                          
======================================================================




More information about the asterisk-bugs mailing list