Hi,
When a SIP call is blind-transferred with REFER and forwarded with "302 moved temporarily", UA would start a brand new call. The problem is how to log and account for their calls. For example, A calls B, B sends 302 and uses C's number as contact. The new call is made from A to C. The call log would show it is from A to C. The call log should at least have an indication of B forwarding the call. Also B is supposed to pay the bill. It is not A although the call log shows it is A to C. A has no knowledge that a toll call is made when calling B.
Anyone has the same problem?
Thanks, Richard
Richard writes:
richard,
i disagree that in case of 302, b should pay the bill. 302 means "b has moved to c and it is up to you if you want to try this new uri".
if you want b to pay the bill, then b should configure ser to FORWARD the call to c, not to REDIRECT a to c.
-- juha
bill.
The issue is that A has no choice to be forwarded or not. When a 302 is received by A, there is no option for A to continue or reject the call. In this example, B (an IP phone) sets his phone forwarding to C which is a long distance number. A is from PSTN. When A makes a call to B, B sends 302 to the PSTN gateway. The gateway forwards the call to ser which routes it back to C via the PSTN gatway. So in ser's call log, I see a call from A to C. Apparently I can't charge A or C. Only B is in my domain. But B is not even in the second call log. In my understanding, if B sets the forward setting on his phone to a toll number, he should be the one paying the bill.
This also applies even if A is in my domain.
Cheers, Richard
At the moment SER does'nt do recursion on 302. If ser had done this, The world would be a bether place for all us. Anyhow. in a A-B-C-D scenario.. A should pay to B, B to C and C to D.
-Atle
* Richard richard@o-matrix.org [041222 09:04]:
Atle Samuelsen writes:
At the moment SER does'nt do recursion on 302. If ser had done this, The world would be a bether place for all us.
it can be made to recurse on 302. in fact, i once patched ser to do so by turning 302 into a new invite. but then i started to think that the called user MUST have the choice of not paying for the forwarding and 302 is meant for that very purpose. if the user wishes to pay, then (as i said earlier) you instructs ser to FORWARD the call. if the called user does not want to pay, but wants to give the caller the choice, the user replies with 302.
so both options are and should be possible. talk to your SIP UA vendors if they don't properly support 302.
-- juha
Richard writes:
well, this is purely a SIP UA issue. try, for example, kphone. when it receives 302, it asks the user if the user wishes to place another call to the referred (possibly expensive) destination. many SIP UAs don't do it, which is VERY dangerous for the user.
regarding pstn gws, i recommend that you turn off 302 processing, since otherwise your gw may end up paying for the forwarded (expensive) leg of the call, since, as you say, you cannot charge the PSTN caller.
-- juha
Since logging and accounting is a problem, I want to only allow local numbers in the forward field. Is there any function available to match and modify the contact field. For example, if it is "Contact: sip:18085551212@mydomain.com", I should change it to "Contact: vm+(original-callee-number)@mydomain.com" which goes to voicemail. Are search() and append_urihf() good for this?
I think the same issue applies to REFER. However I won't be able to disallow a toll call on REFER. It is possible a secretary makes a toll call, then REFREs to the boss. So I have to find some way to log and account this.
Thanks, Richard
richard,
ser has permission module and it would take some work to add a parameter that would support checking of refer and 302. then in case permission check fails, there could be a new function that would rewrite 302 contact or refer-to.
-- juha