SipTheeSkype Skype Adapter
- 1 Interconnectivity Architecture
- 2 Example implementation
- 2.1 Outline
- 2.2 SipTheeSkype Configuration
- 2.3 Usage
- 3 Limitations
- 4 Known issues
- 5 References
This project is likely deprecated. The last update for the SipToSIS home page was in 2009.
Interconnectivity Architecture
SipTheeSkype interconnects with FreeSWITCH as an add-on adapter to Skype client. The adapter acts as a single-line client User-agent to FreeSWITCH that can send and receive calls just like any other UA. SipTheeSkype also allow for some basic switching capabilities in both directions. It can distribute calls coming from FreeSWITCH to different Skype contacts based on the Caller-ID field and can also send incoming Skype calls to different URI's based on the incoming Skype contact ID. It also has a very basic IVR mechanism allowing to dial through the SkypeOut / SpeedDials services.
Applicable interconnectivity settings
- Signaling: SIP/UDP or SIP/TCP
- Codecs: G.711μ,G.711a,iLBC,GSM
- DTMF: RFC2833, Info and analogue (in-band).
Limitations
- Supports only one simultaneous call per instance
Prerequisites
- SipTheeSkype has to run on the same machine as the Skype client
- Windows requires Skype client version 3 and above
- Java runtime version 1.5 and above
- Any OS that Skype2Java (Skype's Java API) works: Windows, Linux, OSX
Example implementation
Outline
This implementation example is based on the existing out-of-the-box FreeSWITCH XML configuration with relevant additions. In this example, the italic settings should be customized to your deployment:
- Freeswitch machine: 192.168.0.100
- Skype machine: 192.168.0.200
- skypeuser1 - Preconfigured Skype contact in the client
- skypeuser2 - Preconfigured Skype contact in the client
- skypeuser3 - Preconfigured Skype contact in the client
- Extension 7770 – A number designated to general Skype outgoing calls with PIN code 1234
- Extension 7771 – An extension map to skypeuser1
- Extension 7772 – An extension map to skypeuser2
- Extension 7773 – An extension map to skypeuser3
- The SipTheeSkype SIP port is mapped to UDP port 5077 for no reason at all
- Incoming calls coming from these three contacts will be directed respectively to extension 1001, 1002.
- For demonstration purposes, all calls coming from skypeuser3 are rejected.
- All other incoming calls will be directed to extension 9664 (MoH).
SipTheeSkype Configuration
siptheeskype.cfg settings
siptoskypeauthfile=SipToSkypeAuth.props
skypetosipauthfile=SkypeToSipAuth.props
skype_connect=yes
skype_audiooutport=64432
skype_audioinport=64433
skype_audiooutgain=1
skype_audioingain=1.5
enableSkypeDtmfDetector=no
autoShutdownMinutes=0
pintimeout=8
pinretrylimit=3
destinationtimeout=12
destinationretrylimit=3
pinFile=clips/enterPin.au
destinationFile=clips/enterDest.wav
dialingFile=clips/dialing.wav
invalidPinFile=clips/invalidPin.wav
invalidDestFile=clips/invalidDest.wav
handleEarlyMedia=yes
sendSkypeIM=no
host_port=5077
transport_protocols=udp
ua_jar=ua.jar
contact_url=sip:skype@192.168.1.200:5077
from_url="SipTheeSkype" <sip:skype@192.168.1.100:5060>
username=skype
realm=192.168.1.100
passwd=1234
keepalive_time=45000
audio=yes
audio_port=63200
audio_avp=0
audio_codec=PCMU
audio_sample_rate=8000
audio_sample_size=1
audio_frame_size=320
dtmf2833payloadtype=101
do_register=yes
SipToSkypeAuth.props settings
7770,*,*,pin:1234
#Prompt for pin authorization, then prompt for destination (use Skype's speeddials or skypeout for skype destinations)
7771,*,*,skypeuser1
#Incoming sip caller with callerid of 7771 from any IP will dial the skypeuser1
7772,*,*,skypeuser2
7773,*,*,skypeuser3
SkypeToSipAuth.props settings
<include>
<user id="skype" ip="192.168.1.200">
<variables>
<variable name="user_context" value="default"/>
<variable name="process_cdr" value="true"/>
</variables>
</user>
</include>
Set up the Dial Plan extensions handling (i.e. /conf/dialplan/default.xml):
<extension name="skype">
<condition field="destination_number" expression="^(777[0-3])$">
<action application="set" data="effective_caller_id_number=$1"/>
<action application="bridge" data="user/skype@$${domain}"/>
</condition>
</extension>
Usage
- Dialing from extension 1001 to 7770 - Being prompt for PIN, entering 1234 and then making a SkypeOut / SpeedDials call
- Dialing from extension 1001 to 7771 - Make a call to Skype contact skypeuser1
- Dialing from extension 1001 to 7772 - Make a call to Skype contact skypeuser2
- Dialing from extension 1001 to 7773 - Make a call to Skype contact skypeuser3
- Accepting incoming call from Skype contact skypeuser1 - Call will be transfered to FreeSWITCH extension 1001
- Accepting incoming call from Skype contact skypeuser2 - Call will be transfered to FreeSWITCH extension 1002
- Accepting incoming call from Skype contact skypeuser3 - Call will be denied
- Accepting incoming call from any other Skype contact - Call with be transfered to FreeSWITCH extension 9664 (MoH)
Limitations
Testing was done on:
- FreeSWITCH version 1.0.0 build 8691
- SipTheeSkype version V2 2008/06/28
Wasn't tested:
- SIP/TCP
- DTMF INFO and analogue
Known issues
- Authentication - It appears as the SipTheeSkype SIP authentication mechanism is not compatible with the FreeSWITCH one therefore authenticated registration doesn't seem to work.
Worked when I tried it.