views:

52

answers:

2

I am trying to use SIP to do 3rd party Call Control. I am not sure that it's possible, so hopefully someone can enlighten me.

I have the following scenario. On an internal network, there are several phone extensions. Alice has a physical SIP phone, so do all the other people in the office.

What I want to do (for starters), is to allow the following: someone calls Alice. Instead of picking up the physical SIP phone, she instead clicks on some button (let's say one marked Answer) on her computer screen. That forces the physical phone off hook (e.g. it's now on speaker) and she is talking to whoever called her.

Can this be done? Any code projects, especially in c#, would be welcome.

I've done this type of thing with TAPI and it worked out pretty well, but TAPI is a dying technology (there is no 64-bit equivalent), so I am looking for a replacement.

+1  A: 

(Best practices) for 3pcc for SIP are explained in RFC 3725.

Another possibility (that doesn't use 3pcc) is for Alice's softphone to REGISTER with a higher preference than her physical SIP phone. Calls to Alice's Address of Record will go to her softphone, which can REFER the call (so call forwarding/blind transfer) to the SIP phone.

Frank Shearar
@Frank Using your method, after I call forwarded/blind transfered the call from softphone to physical phone, I'd still have to wait for Alice to pick up the physical handset. The action would not cause the phone to go off hook (e.g. the call be on the speaker), correct?
AngryHacker
Indeed that's the case with the REFER. The difficult part is getting your physical phone to actually do stuff: it has to answer the call, for instance. You might need a separate, non-SIP, answer for that part: auto-answer, switching to speakerphone.
Frank Shearar
+1  A: 

The SIP mechanism to let you know that Alice's phone was picked up is an event notification which is documented in RFC 3265 Session Initiation Protocol (SIP)-Specific Event Notification and the specific event package for INVITE relatedd notifications is RFC 4235 An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP).

In short SIP events work on a subscribe/notify basis where one SIP user agent can subscribe to a notification server for notifications about events that happen on a different useragent. Unfortunately support for SIP events is not that widepread and even when it is supported can be a bit flakey, Asterisk for example used to generate very strange NOTIFY requests.

sipwiz