Friday, March 30, 2012

Mount NTFS partition on Centos 6

5 Steps :


1. open the terminal window with the root account.

2. download rpmforge for centos 6 to your system:

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

3. now install the rpmforge for centos 6:

rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

4. just install/update the package fuse-ntfs-3g:

# yum update fuse-ntfs-3g

5. mount your units:

# mount -a


you are using a bit of the wrong commands 
a few questions 
1) do you want this AUTO mounted at boot 
or
2) ONLY mounted sometimes when YOU MANUALLY mount it 

for auto mount , but REQUIRING the root password to access it (a good idea )
add a line to the fstab file 
1) make a folder /mnt/windows
2) add line to file fstab
Code:
/dev/sd??  /mnt/indows       ntfs-3g         defaults        1 0
and replace the two ?? with the partition you get from 
Code:
su -
fdisk -l
for the MANUAL mount do the above but put a # infront of the line and run 
Code:
mount /dev/sd??
replace the two ??

or
the use the FULL command
Code:
su -
mount  -t ntfs-3g /dev/sd?? /mnt/windows
again replace the two ?? with the partition.

-- 
A.Shahbazi

Tuesday, January 31, 2012

How to run and upgrade to Python 2.7 on CentOS

# nohup python yApp.py &

yum -y groupinstall 'Development Tools'
yum -y install openssl-devel* ncurses-devel* zlib*.x86_64</pre>
yum -y install bzip2 bzip2-devel bzip2-libs

#Download the latest available at this time
curl -O http://python.org/ftp/python/2.7/Python-2.7.tgz
#Unzip/expand file
tar xfz Python-2.7.tgz
#Change Directory to the unzipped folder
cd Python-2.7
#read README file or you can follow the lines below
./configure
#you could also run configure with threads and shared enabled
#./configure --prefix=/opt/python2.7 --with-threads --enable-shared
#Compile
make
#Install
make install
#To verify if the install succeeded
python -V
#Use UPPERCASE 'V' - not lower-case.
#Output will be "Python 2.7"
#Sometimes you may need to exit out of your shell
#and them come back in to see the version changes.
#So best exit your current shell prompt and reopen
#a new before checking the version.



I would completely remove that and install 2.7 rpms instead.
rm -rf /usr/local/python27/

Tuesday, December 6, 2011

Building a telephony server with FreeSwitch


Articles to read in the Freeswitch wiki

  1. DONE Docs/MainPage http://wiki.freeswitch.org/
  2. DONE Download http://wiki.freeswitch.org/wiki/Download_FreeSWITCH
  3. DONE Install guide http://wiki.freeswitch.org/wiki/Installation_Guide
  4. DONE Configuring FreeSWITCH http://wiki.freeswitch.org/wiki/Getting_Started_Guide
  5. DONE http://wiki.freeswitch.org/wiki/Default_config
  6. Admin documentation http://wiki.freeswitch.org/wiki/Documentation (Includes examples, debugging, JavaScript examples, etc.)
  7. User documentation http://wiki.freeswitch.org/wiki/Documentation/User_Documentation
  8. conf/freeswitch.xml
  9. conf/Vars.xml
  10. conf/autoload_configs/modules.conf.xml
  11. conf/autoload_configs/sofia.conf.xml
  12. conf/directory/ (user configuration)
  13. conf/sip_profiles/ (internal, external)
  14. conf/dialplan/ (Dialplan_XML, recipes)
  15. From Asterisk to Freeswitch
  16. Freeswitch FAQ
  17. http://wiki.freeswitch.org/wiki/SPA3102_FreeSwitch_HowTo
  18. Home VOIP system using FreeSwitch and a Linksys 3102 voice gateway (UK Guide) by Rob Smart
  19. How To Set Up a Linksys SPA3102 VOIP Router/ATA for BT UK

Other stuff to read

SIP and NAT firewalls
  • local setup (FreeSwitch and SIP phones)
  • remote setup (SIP phone + possible utility to check that the firewall is SIP-friendly)
Options: STUN + port maping, UPnP or nat-pmp (to automate port mapping), IAX
ATCOM IAX Hard phones (530P?)
DIAX softphone (looks ugly)
I've used both AT530 and AT530P ip phones, they have good voice quality and somehow resistent to harsh environment like offices ;) , except the keypad which after a year or more just sometimes types two digits with one push on a button. The AG188N ATA is also a good choise and we have some installation which work without any problem yet.
http://www.snomindia.com/snomsoftphone.htm
http://www.zoiper.com
Pika Warp: their support and development enviroment sucks
http://www.pikatechnologies.com
http://pikawarp.org/?page_id=172
http://blackfin.uclinux.org/gf/project/asterisk/forum/?_forum_action=ForumMessageBrowse&thread_id=36059&action=ForumBrowse&forum_id=120http://www.rowetel.com/ucasterisk/baps.html
http://www.rowetel.com/ucasterisk/http://forum.voiptel.no/index.php?board=1.0
http://forum.voiptel.no/index.php?board=3.0http://blog.voiptel.no/
http://www.plugcomputer.org/
http://hackaday.com/2009/02/25/sheevaplug-tiny-linux-server/
http://www.dataevolution.com/dectop%20info%202.htm
http://www.cartft.com/catalog/il/1081
http://www.intel.com/products/desktop/motherboards/D945GSEJT/D945GSEJT-overview.htm
http://www.cartft.com/catalog/il/1058
http://www.cartft.com/catalog/il/1087
http://www.amazon.com/IEEE802-11N-Wireless-Broadband-MZK-W04NU-Designed/dp/B000YDS0YG
What to Do With a $99 Wall Wart Linux Server
GSM gateways: EdgePBX, PORTech MV-370, OpenVox G400P (+ at least one GSM module + SIM card)
http://blogs.zdnet.com/Greenfield/?p=233http://robsmart.co.uk/2009/06/02/freeswitch_linksys3102/
http://www.aoakley.com/articles/2008-01-08.php
http://wiki.freeswitch.org/wiki/SPA3102_FreeSwitch_HowTo

Introduction

Freeswitch is an alternative to Asterisk to build a telephony server. It is also open-source, was launched by a member of the Asterisk development teamp who wanted to rewrite the whole thing from scratch to cleanly separate the switching part from the PBX part (Asterisk mixes the two due to its monolithic architecture). Unlike Asterisk, Freeswitch was meant to be cross-platform from the the start, and is available for Windows in addition to *nix.
OpenZAP supports direct access to Sangoma cards through the wanpipe interface, and indirect access to Digium-compatible cards through the Zaptel interface; Because of this, as of April 2009, Windows users can only use Sangoma cards, or rely on an external VoIP gateway.
Here's a list of hardware that have been tested with Freeswitch. What can you do with Freeswitch? Here's a list. A web-based interface to the FS users mailing list is available here.
And here's the reason why Freeswitch authors chose XML over eg. INI files.

The big picture

Freeswitch is configured through different XML files loaded through the main freeswitch.xml. At runtime when FreeSwitch parses all the files, the resultant file is located as log/freeswitch.xml.fsxml.
Contexts are a set of extensions located in conf/dialplan/ (eg. Default, Public, etc.), and effectively define the dialplan. A call can go through different contexts over the length of the call, eg. an  unauthenticated call from a VoIP provider first go through the Public context before before forwarded to an IVR context, and end up being connected to an internal extension.
Profiles define User Agents ("end points of a phone call", says Wikipedia), and handles connections on a given IP and port number. This enables Freeswitch to support multiple companies on the same host while providing enhanced security. By default, Freeswitch comes with two profiles: Internal (private LAN), and External (Internet-accessible, public LAN.)
In a dialplan, profiles make use of contexts (eg. <param name="context" value="public"/>). What users can do depends on whether they authenticated (eg. local users making internal and outgoing calls) or not (eg. incoming calls from remote VoIP provider.) For security reason, it's a good idea to have the Internal and External profiles use their own dialplan.
Users (extensions) are configured through files in conf/directory/. Each extension maps to a context (<variable name="user_context" value="default"/>). If you need to perform more complex actions, use the dialplan to call external scripts.

Gateways, a.k.a. trunks, don't need to authenticate with Freeswitch, and are configured in conf/directory/default/
conf/autoload_configs contains a lot of XML files, but only those listed in modules.conf.xml will actually be loaded automatically by Freeswitch.
IVR sound files in English are located under sounds/en/us/callie/ivr/8000/
Voice mail is saved under storage

Setup

Pre-compiled binaries for Windows

Freeswitch requires the "Microsoft VisualC++ 2005 Redistributable Package", a.k.a. msvcr80d.dll (source)
By default, the Windows package does not install Freeswitch as a service. To do this, open a DOS box, and run "c:\freeswitch\freeswitch -install"
http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ#Q:_How_can_I_use_FreeSWITCH_as_a_Win32_service.3F

Running FS on a SheevaPlug

http://computingplugs.com/index.php/Main_Page
http://www.globalscaletechnologies.com/p-26-sheevaplug-dev-kit-europe.aspx
http://plugcomputer.org/plugforum/
http://plugcomputer.org/plugwiki/index.php/Frequently_Asked_Questions

Downloading the latest source code with SVN

Here, we'll download and compile the latest source code using SVN.
Note: As of March 2009, the config script will compile for ODBC instead of SQLite if it detects that unixODBC is installed... but doesn't check whether its counterpart unixODBC-devel is also installed. If not, in Suse Desktop: rpm -qa | grep -i odbc ; rpm -Uvh unixODBC-devel-2.2.11-21.4.i586.rpm (or rpm install unixODBC-devel.i386 or yum install unixODBC-devel)
  1. If installed, remove Asterisk (ps aux | grep -i asterisk)
  2. (prerequisites) yum install subversion autoconf automake libtool gcc-c++ ncurses-devel make
  3. svn co http://svn.freeswitch.org/svn/freeswitch/trunk /usr/src/freeswitch
  4. cd /usr/src/freeswitch
  5. ./bootstrap.sh
  6. ./configure
  7. If you know what you are doing, edit modules.conf so that it will build the modules you desire (eg. OpenZap to talk to the Dahdi/Zaptel API and drive a PCI telephony card); Otherwise, leave this alone, as FreeSWITCH comes with a good set of modules by default
  8. make
  9. make install
  10. make cd-sounds-install && make cd-moh-install

    The sound file are available for some languages, and can be installed thusly: make cd-sounds-XX-install & make cd-moh-XX-install, where XX stands for the two-letter ISO name of the country (eg. ru, de, fr, etc.)
     
  11. make samples
  12. /usr/local/freeswitch/bin/freeswitch
  13. Make sure the server is not running a firewall that would block incoming SIP connections (eg. rpm -qa | grep -i iptable ; /etc/init.d/iptables stop ; yum remove iptable)
  14. On a remote host, configure an SIP client: user=1000/password=1234/domain=server IP address, dial 9999 for music on hold or 5000 for an IVR
  15. "shutdown" to stop Freeswitch
  16. Edit PATH to include path to Freeswitch binaries (/usr/local/freeswitch/bin; for CentOS: Create /etc/profile.d/freeswitch.sh, add the line "export PATH=$PATH:/usr/local/freeswitch/bin", change access rights to this file: chmod 755 /etc/profile.d/freeswitch.sh, log off and log back on, echo $PATH)
  17. adduser freeswitch ; chown -R freeswitch:freeswitch /usr/local/freeswitch
  18. vipw (or vi /etc/password)

    freeswitch:x:500:500:Freeswitch:/home/freeswitch:/sbin/nologin
     
  19. To have Freeswitch start automatically at boot-time on a Suse host:
    1. cp /usr/src/freeswitch/build/freeswitch.init.suse /etc/init.d/freeswitch
    2. vi /etc/init.d/freeswitch

      FREESWITCH_BIN=/usr/local/freeswitch/bin/freeswitch
      (BAD!) FREESWITCH_CONFIG=/usr/local/freeswitch/conf/freeswitch.xml
      FREESWITCH_PARAMS="-nc"
       
  20. To have Freeswitch start automatically at boot-time on a CentOS host:
    1. cp /usr/src/freeswitch/build/freeswitch.init.redhat /etc/init.d/freeswitch
    2. vim /etc/init.d/freeswitch

      PID_FILE=${PID_FILE-/usr/local/freeswitch/log/freeswitch.pid}
      FS_FILE=${FS_FILE-/usr/local/freeswitch/bin/freeswitch}
      FS_HOME=${FS_HOME-/usr/local/freeswitch}
       
  21. chmod 755 /etc/init.d/freeswitch
  22. chkconfig --level 345 freeswitch on
  23. chkconfig --list freeswitch
  24. (Really needed in addition to chkconfig?) ln -s /etc/init.d/freeswitch /usr/sbin/rcfreeswitch
  25. Launch the server through the rc.d script: /etc/init.d/freeswitch start
  26. Check that the server is running: ps aux | grep -i freeswitch
  27. Wait a few seconds for Freeswitch to be  up and running, and connect to the server through the console: fs_cli
  28. Check SIP status: sofia status
  29. Check a specific SIP profile: sofia status profile internal
  30. To exit the console, type "/exit" or "..."; To stop the Freeswitch server and exit the console, type "fsctl shutdown elegant"

Updating the source code and recompiling Freeswitch

  1. cd /usr/src/freeswitch
  2. make current
  3. /etc/init.d/freeswitch restart

Trixswitch

Another option is the Trixswitch ISO install package, a CentOS-based CD-ROM image that creates a boot CD that will automatically install CentOS and FreeSWITCH.

Connecting to the PSTN

A Freeswitch server can handle conversations over the analog phone network either by connecting out through ADSL to a VoIP provider on the Internet, or by connecting the server to a phone line on the premises through an SIP/PSTN gateway.
In this latter case, there are two options: Either an external device like the Linksys SPA-3102, or a PCI card from Digium, Sangoma, OpenVox, Atcom, etc. Sangoma also offers a two-FXO USB device.

AdvantagesDisadvantages
External device
  • OS-independent, so Freeswitch can run on any computer
  • Cheaper than PCI cards
  • Provides an FXS port to connect an analog handset
  • More cables than a PCI card (power, Ethernet, PSTN)
  • Possible echo issue with SIP/PSTN connections
PCI card
  • More compact (onlye one cable: From card to PSTN wall plug)
  • More reliable than entry-level, external SIP/PSTN gateways
  • Requires a desktop computer
  • With one exception, only run under Linux
  • Possible incompatibility with some motherboards

Connecting Freeswitch to a PSTN line through the Linksys 3102

Here are few things to keep in mind:
  • contexts = diaplans
  • SIP profiles = for enhanced security, an extension must belong to a given profile
  • extensions = belongs to an SIP profile and is set to use a given dialplan
  • settings in XML files under autoload_configs/*.xml are loaded even if the relevant module is not loaded through modules.conf.xml (list of modules)
http://www.aoakley.com/articles/2008-01-08.php (uses the 3102 independantly, without Freeswitch)
Home VOIP system using FreeSwitch and a Linksys 3102 voice gateway (UK Guide)
SPA3102 FreeSwitch HowTo
  1. Reset the unit by plugging a handset in the Phone plug, and dialing **** followed by 73738#, and confirm with 1
  2. Since we won't use the 3102 as a router to connect two Ethernet networks, plug the 3102 to the LAN through its "Internet" connector, dial *** to enter the voice menu, followed by 110# to get its IP address, and 7932# followed by 1#, and 1 to enable the embedded web server
  3. Aim your browser at http://linksys-ip/admin/advanced (where linksys-ip is the 3102 IP address)

Router

Wan Setup
Connection Type = Static IP
Static IP = 192.168.0.253
Netmask = 255.255.255.0
Gateway = 192.168.0.254
Primary DNS = 212.27.54.252
Secondary DNS = 208.67.220.220
Primary NTP Server = 0.fr.pool.ntp.org
Secondary NTP Server = 1.fr.pool.ntp.org
Enable WAN Web Server = yes
Lan Setup
Networking service = Bridge (so we can connect to the 3102 through either its Internet or Ethernet port; The LAN IP address is ignored)

Voice

System
Enable Web Admin Access = yes
Syslog/debug server = 192.168.0.1
SIP
SIP TCP Port Min/Max = 5060
RTP Port Min/Max (Must be port-mapped on NAT router, or can 3102 punch holes itself?)
"RTP Packet Size" should be changed from 0.030 to 0.020 to avoid problems ("When you make outbound call using analog phone attached to the FXS port and the person you call hears choppy voice")
NAT Support Parameters : what is VIA?
STUN Enable = yes
STUN Test Enable = ?
STUN Server = stun.ekiga.net
EXT IP?
EXT RTP Port Min
Regional (France)
Dial Tone = 440@-10; 10(*/0/1)
Second Dial Tone = 420@-19,520@-19;10(*/0/1+2)
Busy Tone = 440@-10; 10(0.5/0.5/1)
Ring Back Tone = 440@-10; 10(1.5/3.5/1)
Time Zone = GTM +1
DST Rule = start=3/-1/7/2;end=10/-1/7/3;save=1
FXS Port Impedance = 600
Caller ID Method = ETSI FSK
Caller ID FSK Standard = bell 202
Line 1
Line Enable = yes
NAT Mapping Enable = no
SIP Port = 5062
Proxy = FS server
User ID + Password = SIP account on FS server
Register = ?
Make/Ans Call Without Reg = ?
Dial Plan = ?
PSTN Line
Line Enable = yes
NAT Mapping Enable = no
SIP Port = 5061
Proxy = FS server
User ID + Password
Preferred Codec = G711U
Dial Plan 1 = (S0<:9999>) //Incoming calls from POTS sent to extension 9999 on FS server
VoIP-To-PSTN Gateway Enable = ?
Line 1 VoIP Caller DP = 1
PSTN-To-VoIP Gateway Enable = ?
PSTN Ring Thru Line 1 = no
PSTN CID For VoIP CID = yes
PSTN Caller Default DP = 1
VoIP Answer Delay = 0
PSTN Answer Delay = 0
PSTN Ring Thru Delay = 1
PSTN Ring Timeout = 5
Detect CPC = yes
Detect Polarity Reversal = yes
Detect Disconnect Tone = yes
Disconnect Tone = 480@-30,620@-30;4(.25/.25/1+2)
FXO Port Impedance = 370+620||310nF
User 1
PSTN User

Connecting Freeswitch to a PTSN line through a PCI card

Install Dahdi

  1. Check that the card was detected: lspci -v
  2. Download and install the Dahdi (ex-Zaptel) complete package (driver + tools) from the Asterisk web site: make all ; make install ; make config
  3. Edit /etc/dahdi/system.conf:

    #For France; Single FXO module on TDM card
    loadzone        =  fr
    defaultzone     = fr
    fxsks=1
     
  4. Edit /etc/dahdi/modules:

    #wcfxo
    wctdm
    dahdi
     
  5. /etc/init.d/dahdi start
  6. dahdi_cfg -vvv
  7. ls -la /proc/dahdi/
  8. dahdi_test -vv
More information on Dahdi: DAHDI Telephony Interface Driver and http://www.voip-info.org/wiki/view/DAHDI
If you experience echo, one thing to try is using the Open-source Line Echo Canceller (OSLEC).

Install OpenZap

Configure FreeSwitch

Installing an X100P card from www.x100p.com

  1. cd /usr/src
  2. wget http://downloads.asterisk.org/pub/telephony/zaptel/zaptel-1.4.12.1.tar.gz
  3. tar xzvf ./zaptel-1.4.12.1.tar.gz
  4. cd zaptel-1.4.12.1/
  5. ./configure
  6. make
  7. make install
  8. make config
  9. vim /etc/sysconfig/zaptel, and comment out modules you don't need (keep $MODULES wcfxo)
  10. cd /etc ; mv zaptel.conf zaptel.conf.orig
  11. vim /etc/zaptel.conf (for France):
    loadzone=fr
    defaultzone=fr
    fxsks=1
  12. modprobe wctdm OR modprobe wcfxo?
  13. modprobe zaptel
  14. lsmod, and check that wcfxo, zaptel, and crc_ccitt are loaded
  15. ztcfg -vv (if it says "ZT_CHANCONFIG failed on channel 1: No such device or address (6)", it's a false alarm)

Tried:
  1. /etc/zaptel.conf: fxsks=1 is last statement in file
  2. In BIOS, set PCI slot to use IRQ7
  3. Booted grub with acpi=no
  4. Booted grub with noapic (Linux gets stuck)
  5. Flashed BIOS with F2 version
  6. Removed Zaptel 1.4.12.1, rebooted, downloaded and compiled Dahdi 2.2.0.2 (no config/configure -> make all; make install; make config; dahdi_genconf modules)
  7. Rebooted: FXO PCI Master abort...
  8. Shutdown: Replaced with a SCSI card which worked fine, retried the X100P... which now shows up in demsg :-/
  9. But... while lspci does return "Communication controller: Motorola SM56 PCI Modem", it's not listed in "cat /proc/interrupts"
  10. Also, when using the following for /etc/dahdi/system.conf...

    loadzone=fr
    defaultzone=fr
    fxsks=1

    ... and running "/etc/init.d/dahdi restart": "Running dahdi_cfg:  DAHDI_CHANCONFIG failed on channel 1: No such device or address (6)"

    dahdi_cfg -vv : "DAHDI_CHANCONFIG failed on channel 1: No such device or address (6)"


The problem is with high-speed USB ports. I kept getting Unknown DAA errors. Soon as I disabled the USB ports everything worked as it should. It was the same case with EVERY motherboard I tried.

It was frustrating because everything worked fine in my old computer, but when I upgraded it was not.

Zaptel Version: 1.4.12.1
Echo Canceller: MG2
Configuration
======================


Channel map:

Channel 01: FXS Kewlstart (Default) (Slaves: 01)

1 channels to configure.

ZT_CHANCONFIG failed on channel 1: No such device or address (6)


If you have any zaptel hardware it is now recommended to edit /etc/sysconfig/zaptel and set there an optimal value for the variable MODULES .
I think that the zaptel hardware you have on your system is:
pci:0000:03:00.0     wcfxo-       1057:5608 Wildcard X100P

/sbin/ztcfg


Need to first install Zaptel/Dahdi?
  1. lspci -v to check that the card is recognized
  2. cat /proc/interrupts to check that the card was assigned an IRQ. If not listed here,
If still NOK, "remove any unneeded peripheral from the PCi bus, toggle the plug-n-play option in your bios. If you have a "Reset Hardware Configuration" or something like that turn it on. Also try a different PCI slot.
Systems running chipsets from SIS, nvidia and some VIA (so pretty much all AMD) dont handle those cards very well at all.
acpi noaicp nosmp etc..etc
echotraining =x
"
http://www.novavox.co.uk/support/issues.html
http://wiki.freeswitch.org/wiki/Zaptel_Tutorial
http://wiki.freeswitch.org/wiki/OpenZAP
http://downloads.asterisk.org/pub/telephony/zaptel/
Does OpenZap work with Dadhi 2.x?
http://downloads.asterisk.org/pub/telephony/zaptel/zaptel-1.4.12.1.tar.gz

Playing with Freeswitch

Important commands

Some important commands that you send through the bin/fs_cli command-line interface:
  • To check the different profiles: sofia status
  • To check who is connected: sofia status profile internal
  • To only watch SIP packets: "console loglevel 0", followed by "sofia profile internal siptrace on"
  • To reload the whole set of XML files: reloadxml

GUI for FreeSwitch

Configuring a Siemens 580IP

Leave the handset on its cradle long enough to fully charge the battery, then connect the base station to the router so it gets an IP configuration through DHCP. To check what IP address was assigned and configure the handset from a web browser, open the Menu and navigate to "IP Address".
By default, System PIN = 0000
Settings > Connections > Configure "IP1" to connect the 580IP to Freeswitch
Domain = IP address of Freeswitch server
Registrar = IP address of Freeswitch server
In case the 580IP is used to register with another SIP server besides Freeswitch, here's how to configure things so that the handset if you prefer to have it handle the dialplan instead of Freeswitch:

If I want to use a different line manually, specify its number (eg. 5551234#2 to use line #2) as listed in "Telephony > Connections".
In case you want all outgoing calls to be handled by the Freeswitch server, ie. not make use of the 580IP dialplan feature, add the VoIP gateways to the Freeswitch server, and just create a single connection in the Siemens in "Telephony > Number Assignment".

Issues

What is the use of the "Telephony > Dialling Plans > Dialling Plans" section?
When should I use "Telephony > Number Assignment > Call Manager"?

What to try

Common extensions for testing:
  • 1000, 1001, ..., 1019 - Generic SIP extensions
  • 5000 - demo IVR (requires sounds and music files to be installed)
  • 9995 - five second delay echo test
  • 9996 - standard echo test
  • 9999 - music on hold (requires music files to be installed)
Enable mod_python, and have Python scripts be called by the dialplan
Configure SIP accounts, including voicemail and sending e-mail.
IVR
Connect a PSTN/VoIP gateway

Investigating issues

fs_cli> console loglevel [0-7] (where 1=EMERG and 7=DEBUG)
fs_cli> sofia loglevel <all|default|tport|iptsec|nea|nta|nth_client|nth_server|nua|soa|sresolv|stun> [0-9]
fs_cli> sofia loglevel all 0
fs_cli > sofia profile <profilename> siptrace on|off
fs_cli > sofia tracelevel info #details in log/freeswitch.log file
http://wiki.freeswitch.org/wiki/Sofia#Debugging_Sofia-SIP

Configuration files

Here's a diagram to get the big picture.
By default, configuration files live in /usr/local/freeswitch/conf/. The XML files are either stand-alone or include references to other XML files.
Note that an X-PRE-PROCESS line cannot be commented out, and must be removed entirely if not needed.
Information is available in the Getting Started Guide, and the Freeswitch default configuration layout.
Configuration data is stored in XML files under /usr/local/freeswitch/conf/ . This layout is in no way required, you can minimize the configuration to just one file if needed. The main config file is called freeswitch.xml, you don't need to change it in any way, it just loads all other config files.

freeswitch.xml

FS doesn't need more than the hard-coded conf/freeswitch.xml, but it's a much better idea to have it load different XML files from sub-directories to handle SIP accounts, dialplans, etc. At runtime when FreeSwitch parses all the files, the resultant file is located as log/freeswitch.xml.fsxml. freeswitch.xml contains multiple sections, each used by a different component in FreeSwitch: "configuration", "diaplan", "directory", and "phrases" (to locate sound files).

vars.xml

Used to define global variables

conf/dialplan/

This is the directory where you'll customize your dialplan; Equivalent to Asterisk's extensions.conf
Diaplans are located in conf/dialplan/ . Everything in the public context is available to everyone, while everything in "default" context are only available to users that have registered with FreeSWITCH. Logically, this should be "internal", but I guess "default" is a legacy.
You can define in the user profiles (in the directory) which context they belong to, and you can define the public context in the sofia configuration. Contexts are a logical grouping of extensions. You may have multiple extensions contained within a single context.
dialplan: This is the place where you setup your dialplan. There are some examples of how to configure your dialplan included. (recipes); put your custom diaplan entries into the extensions subdirectory under conf/dialplan. You may create one or more XML files in this subdirectory, all of which will be included in the dialplan thanks to an "include" directive in the default.xml file. By keeping your customized extensions separate from default.xml you will be able to update default.xml without having to re-enter your custom extensions.

conf/autoload_configs/

A list of modules that are automatically loaded when Freeswitch starts; modules.conf.xml tells Freeswitch which modules to load. There are certain modules required for operation so you should not edit this file unless you know that you wish to add or remove a specific module.

The sofia.conf.xml file includes other xml files (conf/sip_profiles/*.xml) to define multiple "profiles" (ie. contexts; See below).

Note that by default, all XML configuration files under autoload_configs/ are parsed, even if a module is commented out in modules.conf.xml, but Freeswitch will only actually use settings for modules that are explicitely listed in modules.conf.xml

conf/directory/

A list of SIP extensions, one XML file per extensions. User authentication is available under conf/directory/ . For instance, a connection to a remote VoIP gateway can be done through either the external profile or through information in directory/.
directory: The directory contains all users that may register and use freeswitch as their pbx.; holds authentication credentials for other sip endpoints that will register to freeswitch (most commonly users). The directory configuration default is configured to process the glob $PREFIX/conf/directory/default/*.xml by the configuration included in freeswitch.xml $PREFIX/conf/directory/*.xml.

conf/sip_profiles/

Tells FS how to talk sip. Each profile has its own port. Unlike other softswitches (like Asterisk), FreeSWITCH allows you to handle media (calls, video, etc.) differently based on where the equipment is attached to your network. This assists with security as well as providing added functionality. SIP Profiles allow you to define paths to devices or carriers that may live inside or outside your network. These paths can be of many different types, but must consist of a unique combination of port and IP pairs.

You could have SIP profiles for your internal network, or multiple profiles for each subnet of your internal network, or even completely different protocols like IPv6 as profile definitions. This helps FreeSWITCH identify how to route different types of calls when necessary, and also gives you the flexibility to tailor your dialplans based on what path a call originates to/from. The default profiles are located in: $PREFIX/conf/sip_profiles/PROFILE_NAME.xml -- where PROFILE_NAME is the name of the profile.
A list of contexts, eg. Internal, External, etc. This adds security and lets Freeswitch handle media that take different forms (voice, video, etc.). A profil consists in an IP address + Port number, and contains information that will be inherited by devices using this profile

A profile is a SIP UA (an endpoint), which communicates with other SIP endpoints. An obvious reason for multiple profiles is to tell Sofia how to handle calls meant for remote SIP users behind the NAT router, and calls meant for local SIP users located on the same LAN as the originating caller.

Each profile contains a complete description of a SIP UA. When FreeSWITCH starts, it reads sofia.conf.xml and starts up a separate UA for each profile in the configuration file.
In FS, SIP equipments can have different profiles, and are located under SIP_Profiles/. By default, there is an internal profile (register by connecting to FS on UDP5060) and an external profile (Connect to FS on UDP5080; nat.xml is deprecated.)
The default profiles are located in: $PREFIX/conf/sip_profiles/PROFILE_NAME.xml -- where PROFILE_NAME is the name of the profile.In order to secure your FreeSwitch it is wise to link your outbound (external) profile to a dialplan context other than 'default', which in the default configuration is the where authenticated users are placed.
The default port for external connections is 5080. This also means if you are trying to connect a phone remotely to your FreeSWITCH box, you must set it to connect on port 5080, or change your ports around.

Working with the XML files

Type "reloadxml" in the FS console to apply changes made to XML files.

Creating a new SIP account, and adding it to the Internal SIP profile/context

cd conf/directory/default/ ; cp 1000.xml 1234.xml; vi 1234.xml

Adding a new VoIP gateway

http://wiki.freeswitch.org/wiki/SIP_Provider_Examplesconf/directory/default/

There are two ways to define VoIP gateways, depending if they're common to all SIP users, or user-specific. More information in Clarification: Gateways. A list of examples to connect to SIP providers is available here.
Create a new XML file in conf/sip_profiles/external
For outbound calls, add a new file in conf/dialplan/default/. Important: Freeswitch uses the files in their alphanumerical order, so 00_ is called before 01_
For inbound calls, add a new files in conf/dialplan/public/
A fuller example:
  1. cd conf/sip_profiles/external; cp example.xml mygw.xml; vi mygw.xml:
  2. <include>
      <gateway name="outbound.mygw">
        <param name="username" value="****yourusername"/>
        <param name="password" value="****yourpassword"/>
        <param name="proxy" value="****outboundurl"/>
        <param name="register" value="false"/>
      </gateway>
      <gateway name="inbound.mygw">
        <param name="username" value="****yourusername"/>
        <param name="password" value="****yourpassword"/>
        <param name="extension" value="1000"/>
        <param name="proxy" value="****inboundurl"/>
        <param name="register-proxy" value="****inboundurl"/>
      </gateway>
    </include>

Creating a new dialplan (including an IVR), and linking it to the new SIP account

Note: Since filenames determine the order in which Freeswitch loads XML files depends on their filename, make sure existing files in the same folder aren't loaded before yours.
Here's how to create an outbound dialplan:
  1. cd conf/dialplan/default; vi 00_outbound_mygw.xml
  2. <include>
       <extension name="dialmygw">
         <condition field="destination_number" expression="^(\d{7,11})$">
           <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
           <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
           <action application="bridge" data="sofia/gateway/outbound.mygw/$1"/>
         </condition>
       </extension>
    </include>
Here's how to create an inbound dialplan:
  1. cd conf/dialplan/public; vi 00_inbound_mygw.xml
  2. <include>
      <extension name="public_did">
        <condition field="destination_number" expression="^(.*)$">
          <action application="set" data="domain_name=$${domain}"/>
          <action application="transfer" data="1000 XML default"/>
        </condition>
      </extension>
    </include>
  3. In order to secure your FreeSwitch it is wise to link your outbound profile to a dialplan context other than 'default', which in the default configuration is the where authenticated users are placed.

    Note: The nat.xml file (and profile) have been deprecated. Use the external profile and port 5080.
Scripts can access Freeswitch through its Even Socket Library.
http://wiki.freeswitch.org/wiki/Javascript_Examples

Diaplans

For security reason, it is recommended to link the outbound profile ("External") to its own dialplan, different from the one used for internal calls ("Internal", previously known as "Default").
By default, note that the Internal profile listens for incoming connections on UDP5060 while the External profile listens on UDP5080.
http://wiki.freeswitch.org/wiki/Dialplan_XML

Freeswitch and NAT firewalls

Here are some ports that Freeswitch uses and will have to go through firewalls:
  • UDP 3478: STUN service; Used for NAT traversal
  • UDP 3479: STUN service; Used for NAT traversal
  • UDP/TCP 5060: SIP UAS; Used for SIP signalling (Standard SIP Port, for default Internal Profile)
  • UDP/TCP 5070: SIP UAS; Used for SIP signalling (For default "NAT" Profile)
  • UDP/TCP 5080: SIP UAS; Used for SIP signalling (For default "External" Profile)
  • UDP 16384-32768: RTP/ RTCP multimedia streaming; Used for audio/video data in SIP and other protocols
General NAT example scenarios

Securing Freeswitch

This is especially important if the Freeswitch box is open to the Internet to let remote SIP users connect to FS, or access a web server running on the same box.
  1. Remove any unneeded applications
  2. Disable unneeded services
  3. Use a NAT firewall, especially one that can capture illegitimate login requests and block those IP addresses from getting into your system
  4. Configure SSH and Apache to listen to non-standard ports
  5. Create a user account specifically to be used with SSH, and configure SSH to only allow connections from this user (eg. useradd mysshuser; passwd mysshuser; vi /etc/ssh/sshd_config : AllowUsers mysshusers AND PermitRootLogin no AND Port 196; restart SSHd)
  6. SIP: Choose secure passwords for accounts, and double-check the SIP profiles that allow dialing out through the POTS

Hardware

Cases

Compact PCs without PCI slot

Sources to check for this type of hardware: www.linuxdevices.com

Compact PCs with PCI slot

Intel Atom-based motherboards

Non-Intel motherboards

Asterisk Appliances

Modded routers/NAS

Planex MZK-W04NU

  • Planex MZK-W04NU
  • No longer sold in Japan, but still available overseas
  • 60€
  • Recommended by the OpenWrt community
  • http://wiki.freeswitch.org/wiki/OpenWrt

SheevaPlug

Linksys WRT54

FritzBox 7270

Linksys NSLU2

Q&A

In vars.xml, what is default_password used for?

<X-PRE-PROCESS cmd="set" data="default_password=1234"/>
It's the SIP default password if none given in user files under conf/directory/default/:
# cat 1000.xml <include>   <user id="1000" mailbox="1000">     <params>       <param name="password" value="$${default_password}"/>       <param name="vm-password" value="1000"/>     </params>

What are the options to connect a FS server to a POTS line?

To act as a VoIP gateway, you can use external solutions like Sangoma's USB device, or Ethernet-based solutions like Linksys' SPA-3102 or GrandStream's HT503.
If  you'd rather use a PCI card: As of April 2009, FS' OpenZAP interface can talk to hardware either directly (only Sangoma cards are supported), or indirectly through the Zaptel interface (which isn't available for Windows).

How to configure routers to allow remote IP clients to connect to Freeswitch and/or POTS VoIP gateway?

SIP TCP/UDP  5060 - 5090
RTP UDP      16384 - 32768
? What about the connection between VoIP gateway and a remote SIP client?

How to install FS as a service in Windows?

http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ#Applications

What is mod_spidermonkey?

The Mozilla SpiderMonkey Javascript (ECMA Script) engine

What is mod_sofia?

"This module wraps the sofia SIP library from Nokia."

How to check my voicemail?

Dial 4000, followed by the extension # and password (with the test accounts, password=extension)

Resources



http://www.fredshack.com/docs/freeswitch.html

Mod skypopen Skype Endpoint and Trunk


From FreeSWITCH Wiki

Jump to: navigation, search

Contents

[hide]

This Wikipage is long, but you better read it all

10 minutes reading will save you a lot of time and frustrations.
I mean it! ;)

Upgrading from Skypiax

On Linux

Edit the previous config file (skypiax.conf.xml) to be like the skypopen.conf.xml, particularly the first line, see below http://wiki.freeswitch.org/wiki/Mod_skypopen_Skype_Endpoint_and_Trunk#Config_File_.28skypopen.conf.xml.29 . And rename it 'skypopen.conf.xml.
Don't forget to edit the config.xml that is in each of the db directories used by the Skype client instances, and substitute 'skypopen' to 'skypiax', so you don't have to go through the authorization things again. Eg:
<API>
<Authorizations>skypiax</Authorizations>
<BlockedPrograms></BlockedPrograms>
</API>
must become:
<API>
<Authorizations>skypopen</Authorizations>
<BlockedPrograms></BlockedPrograms>
</API>

On Windows

Edit the previous config file (skypiax.conf.xml) to be like the skypopen.conf.xml, particularly the first line, see below http://wiki.freeswitch.org/wiki/Mod_skypopen_Skype_Endpoint_and_Trunk#Config_File_.28skypopen.conf.xml.29 . And rename it 'skypopen.conf.xml.
You will be asked again from the Skype client instances about giving 'Skypopen' the right to connect to Skype clients. Give the auth and check the "don't ask again" tick.

WHAT IS SKYPOPEN

This software (Skypopen) uses the Skype API but is not endorsed, certified or otherwise approved in any way by Skype.
Skypopen is an endpoint (channel driver) that uses the Skype client as an interface to the Skype network, and allows incoming and outgoing Skype calls to/from FreeSWITCH (that can be bridged, originated, answered, etc. as in all other endpoints, e.g. sofia/SIP).
Skypopen works in FreeSWITCH (FS) on both Linux and Windows (directly, no Cygwin needed), native at 16khz (Skype client has 16khz audio I/O).
Skypopen works on Asterisk too, converting at 8khz (Asterisk cannot do 16khz), on Linux and Windows (through CygWin).
Think of Skypopen as similar to OpenZAP for analog lines. For each channel you need an interface (a Skype client). So, for example, two concurrent calls would need two channels, and therefore two Skype clients running on your FreeSWITCH server.
If your Skype client(s) have Skype credits, then Skypopen works for SkypeOut calls as well.
On Linux the Skype client can use a lot of CPU if you don't customize your setup. To lower its CPU consumption, you use the Xvfb "fake" X server and (more importantly) the snd-dummy ALSA "fake" sound driver. Scripts are provided for this (mod_skypopen/configs/startskype.sh for Linux, mod_skypopen/configs/startskype.bat for windows), though for testing purpose it should work with normal X servers and ALSA drivers. For production performances we counseil to use ALSA 1.0.20 and a customized version of snd-dummy http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy.
Skypopen is now beta, usable for testing and finding bugs :-).
Skypopen has been contributed to the community by: Giovanni Maruzzelli (gmaruzz at gmail dot com) with lot of help from the core developer's team, and hints, patches, suggestions, bug reports, features requests from the superlative FS community.

Which Skype Client to use on Linux

Use the static build of the stable Skype client (2.0.72).
Don't use the build for your distro, neither the 'dynamic build'.
Don't use the beta Skype client or more recent "stable" (2.0.72 is the one you want to use) if you want to have multiple channels with the same skypename.

Supported Platforms and Distros

Skypopen runs well on Linux and Windows. A MacOsX port in under way.
Most supported Linux distro are:
  • Ubuntu 8.04 (Hardy) LTS 64 bit (maintained until April 2013)
  • CentOS 5.3/5.4 64 bit
If you don't have a specially compelling reason (that will pay you back for time and frustration), do yourself a favor and go with one of the most supported Linux distro, or with Windows.
Ubuntu Jaunty and Karmic are known to have problems with Xvfb, see below for the (painful) fix.
On Windows, Skypopen runs well starting from XP up

Virtual Machines, Amazon EC2, Xen, KVM, VMWARE, and the likes

Skypopen runs on Virtual Machines, there are various installation happily running on EC2 (so, Xen).
If you experience problems with delays and timing, you may want to use the param in the global settings of the mod_skypopen configuration file (skypopen.conf.xml) "write_silence_when_idle" with value "false".
Also you may want to have the parameter "setsockopt" with value "true".
eg:
<global_settings>
<param name="debug" value="8"/>
<param name="dialplan" value="XML"/>
<param name="context" value="default"/>
<param name="destination" value="5000"/>
<param name="skype_user" value="user5"/>
<param name="report_incoming_chatmessages" value="false"/>
<param name="silent_mode" value="false"/>
<param name="write_silence_when_idle" value="false"/>
<param name="setsockopt" value="true"/>
</global_settings>
this will maybe solve the problem.

Performances How To

The factors that most affect performances is the behavior of the Skype client on the platform, so, on Linux: the combination of kernel, X11, ALSA.
If you're looking for "best" performances, go with Ubuntu 8.04 LTS 64bit, ALSA 1.0.20, and custom snd-dummy. (http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy).
Second best is CentOS 5.3 (or 5.4) 64 bit, ALSA 1.0.20, and custom snd-dummy. (http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy).
All Windows versions are performing well, starting from XP up.

Skype Contacts, Messages, Buddy List, etc

Skypopen automatically directs the Skype client instance to agree to a request of being added to the Contact List and to make known its "status" (online, offline, etc), without adding the requester to the Contact List of the Skype client instance.
Skypopen automatically directs the Skype client instance to flag as "Seen" all received messages.

Dialplan, and how to use Skypopen

Dialplan

Like other endpoints it's easy to build up useful dialplans using Skypopen. There are a few simple examples given in the "default.xml" dialplan located in mod_skypopen/configs/
You can use the standard format with the interface name:
skypopen/interface1/echo123to call "echo123" using the skypopen interface named "interface1"
If you modify your dialplan, you'll be able to call "skype uri"s for terminating calls via the Skype network.
A "Skype URI" is composed by the word 'skype' followed by a slash and a destination: "skype/remote_skypename" or "skype/skypeout_phonenumber"
E.g. "skype/echo123" or "skype/+18007844444 begin_of_the_skype_highlighting              +18007844444      end_of_the_skype_highlighting".
You can use the "skype uri" of the provided dialplan directly from a SIP softphone, e.g. X-Lite.
And you can call the "2909" extension in the provided dialplan from any kind of phone to be bridged to the Skype Test Call.
Dialplan snippet:
<!-- dial echo123 via skypopen using interface1 interface to go out -->
<extension name="skypopen">
<condition field="destination_number" expression="^2909$">
<action application="bridge" data="skypopen/interface1/echo123"/>
</condition>
</extension>

<!-- dial via SKYPE uri using interface1 interface to go out -->
<extension name="skype_uri">
<condition field="destination_number" expression="^skype/(.*)$">
<action application="bridge" data="skypopen/interface1/$1"/>
</condition>
</extension>
With the provided skypopen.conf.xml all incoming Skype calls will be routed to the "5000" extension, the IVR in default FreeSWITCH installation.

The "RR" interface, poor man interface grouping

You can also use the "RR" interface
skypopen/RR/echo123to call "echo123" using the first available (idle, not in a call) skypopen interface, automatically selected (thx Seven Du).
"RR" will choose an available idle interface based on a round robin algorithm (so to distribute outbound calls more fairly between all the available interfaces).
Dialplan snippets:
<!-- dial echo123 via skypopen RR interface -->
<extension name="skypopen">
<condition field="destination_number" expression="^2908$">
<action application="bridge" data="skypopen/RR/echo123"/>
</condition>
</extension>

<!-- dial via SKYPE uri with skypopen RR interface-->
<extension name="skype_uri">
<condition field="destination_number" expression="^skype/(.*)$">
<action application="bridge" data="skypopen/RR/$1"/>
</condition>
</extension>

Multiple concurrent incoming calls to the same Skype username

This solution, based on "transfer" the call to another Skype username (running on the same machine) works on both Windows and on Linux. For a Linux-only solution, based on running multiple instances of the same Skype username, see below
Let's say you want to be able to serve multiple concurrent incoming calls to the Skype username "user1" (as in: Alice uses Skype to call the Skype user "user1", concurrently Bob uses Skype to call the Skype user "user1", both Alice and Bob are concurrently served by FS).
You setup multiple skypopen interfaces on FS, as many interfaces as the max number of concurrent incoming calls you want to serve.
Each skypopen interface will have its own Skype client running, each one with its own Skype user login.
Let's say you want to serve a max of 3 concurrent incoming calls, you'll setup three skypopen interface (100 concurrent calls, 100 skypopen interfaces). One of those three interfaces will be logged into the Skype network using the Skype username you want to use to answer all the incoming calls.
So, one interface will be logged into Skype network as "user1". Let's say that the other two interfaces will be logged into the Skype network as "user2" and "user3", but they could be logged as any other Skype username, as long as they are all different and different from "user1" (it's not possible to have more than one Skype client instance using the same Skype username on the same machine, at least on Linux).
When the first incoming call to the Skype username "user1" is received, is served as you would expect by the interface logged as "user1".
If another call for "user1" is incoming while that interface is busy into a call (incoming or outbound), the "user1" interface will *transfer* the incoming call to the first other idle skypopen interface it finds (eg: interface2 or interface3). The calling user will not have to do nothing for this, and this is completely transparent for Windows and Linux users, while MacOSX users will see into their client that the called party is changed from "user1" to, say, "user3", but they too do not have to do nothing.
And so on until all the skypopen interfaces available are busy. At that point, further incoming calls will be rejected until one skypopen interface exit from the call it is into, and will be available to answer.
Basically, you don't have to do anything to be able to answer multiple incoming calls to the
same Skype username. Just set up enough interfaces for the maximum concurrent calls you want.
Outbound calls will be originated by the Skype username of the interface.

Running multiple instances of the same Skype username on Linux, for BOTH incoming and outbound calls

On Linux, you can run multiple instances of the same Skype username (eg: multiple Skype clients that register with the Skype networks as the same username, eg: 10 instances of the username "Bob").
Use the static build of the stable Skype client (2.0.72).
Don't use the build for your distro, neither the 'dynamic build'.
Don't use the beta Skype client or more recent "stable" (2.0.72 is the one you want to use) if you want to have multiple channels with the same skypename.
The trick is to launch the client instances with separate Xservers (as always with multiple clients) AND separate directories for the Skype client's database (eg: by default it resides in the ".Skype" directory in the user's home).
You can find an example configuration file and launch scripts in configs/multiple-instance-same-skype-username/ directory.

API and CLI Commands

Skypopen adds the "sk" and the "skypopen" API/CLI commands, for sending Skype API commands to the Skype client instance related to an interface. Both "sk" and "skypopen" commands can be used through the command line and via API/socket/ESL/whatever.

sk

"sk" commands are intended to be used from the FS command line ("sk remove" and "sk reload" can be useful from Event socket as well).
You begin typing "sk console interface_name" to direct the "current console" to sending messages to interface_name. Starting now on, you can type "sk command_string" and command_string will be sent to the Skype client instance related to interface interface_name.
sk console interface1
sk MESSAGE alice25 Hej Alice, this is a Skype chat message for you!
"sk list" gives the list and status of all the Skypopen interfaces (a star marks the interface from which "RR" - see below - will start hunting an IDLE one).
sk listWe got patches from Muhammad Shahzad and Seven Du for adding and removing interfaces on the fly.
reload
sk reload => this re-reads Skypopen configuration file skypopen.conf.xml and adds ONLY new interfaces it found in conf. All existing interfaces are not touched.
sk reloadremove
sk remove <skype-user> => this remove skypopen interface associated with given Skype user account, if it is idle.
freeswitch@internal> sk remove Bobsk remove <#interface-numeric-id> => this remove skypopen interface associated with given Skype interface_id, if is idle (remember, you must add the pound sign in front of the interface-numeric-id, # is mandatory).
freeswitch@internal> sk remove #10sk remove <#interface-name> => this remove skypopen interface associated with given Skype interface_name, if is idle (remember, you must add the pound sign in front of the interface-name, # is mandatory).
freeswitch@internal> sk remove #interface10

skypopen

"sk remove" and "sk reload" (see before) can be useful from API/socket/ESL/whatever as well.
"skypopen" commands are intended to be used by programs (API/socket/ESL/whatever) and have the format: "skypopen interface_name command_string". They send the command_string to the Skype client instance related to interface_name.
skypopen interface2 MESSAGE bob34 Ciao Bob! This is my Skype chat message for you from FS :-)This allow you to use directly the entire power of the Skype API ( https://developer.skype.com/Docs/ApiDoc ), for eg to send chat messages, interact with the buddy list, etc etc. Typing "console loglevel 9" at the FS command line allows you to see the Skype API answers from the Skype client instance.

skypopen_chat

It supports full utf8 chat text, although the FS command line only accepts ASCII. Please use ESL or API to send utf8 text.
skypopen_chat interface_name remote_skypename chat_texteg:
skypopen_chat interface2001 gmaruzz5 ciao bello

chat

Skypopen answers to the FreeSWITCH standard "chat" command too, and use its arguments to execute a skypopen_chat command (it will find the first available interface that uses the "local_skypename"). So, if you got a messaging applications that uses chat command with Sofia/SIP or Jingle, no need to recode it with special cases for Skype:).
chat SKYPE|local_skypename|remote_skypename|chat_textIt uses SKYPE as protocol specification. Eg, from command line:
chat SKYPE|user2|gmaruzz5|ciao amore

Prototyping and a standalone interactive client

So, in short: you bring loglevel to 9 (so you can see the Skype API messages going back and forth), you use "sk" or "skypopen" to send Skype API commands to the Skype client instance.
This way you can prototype extensions to the current mod_skypopen, that can then be implemented in C directly into the mod_skypopen source code.
An interactive command-line client for Linux (standalone, independent of FS-skypopen) is also provided for further ease of prototyping: configs/client.c. You use it giving as argument the Xserver the Skype client instance is connected to, eg:
./client :101Please, add a Jira or write to the freeswitch mailing lists about the extensions you would like to be integrated into the mod_skypopen code ;-).

Channel Variables

DTMFs: skype_add_outband_dtmf_also_when_bridged

When a skype call is bridged (eg: to a sip call) the default behavior is NOT to pass the incoming Skype DTMFs as out of band (signaling) DTMFs to the other call, because the audio (inband) DTMFs will be always present. Explanation: Skype sends DTMFs both as inband audio and as signaling, and you cannot disable the inband (audio) DTMFs.
When is desirable that on top of the audio DTMFs the other call receives outband (signaling) DTMFs too (eg: because is an ivr or a conference that do not recognize inband DTmFs), please set the channel variable 'skype_add_outband_dtmf_also_when_bridged' to 'true'.
Eg, in dialplan you can:
<action application="set" data="skype_add_outband_dtmf_also_when_bridged=true"/>

DTMFs: skype_get_inband_dtmf

Normally, by default, mod_skypopen do not detect inband (audio) incoming DTMFs, because it get it via signaling from the skype peer.
When you have a call to skypeout numbers or an incoming call via the skypein service, you do not get DTMFs in signaling, you get it only as audio.
You set the channel variable 'skype_get_inband_dtmf' to 'true' if you want mod_skypopen to detect inband (audio) DTMFs coming from skype, eg: in skypein/skypeout calls.
Eg. in dialplan you can:
<action application="set" data="skype_get_inband_dtmf=true"/>Please note that skype peers will send you BOTH audio and signaling DTMFs, so if you set this variable to 'true' on a "normal" skype-skype call, you may get double digits.

Events

Skypopen generates (fires) the standard FreeSWITCH events on voice calls (like the other endpoints) and MESSAGE (chat) events on incoming... chat (like Sofia and Jingle).

Voice Calls

Standard CODEC and CHANNEL_* events.
See Event_list

MESSAGE (Chat)

The Event type generated by an incoming chat is of type MESSAGE (like in Jingle and Sofia).
The most interesting fields are:
login: the interface name that received the chat
hint: the skype display name of the sender
from: the sender's skypename (username)
date: the date of the received message, urlencoded
during-call: bool, the message was received while a voice call was ongoing?
And obviously the body, encoded in utf8, that contains the chat's text.
To see it "under the hood" you can connect to the event socket via telnet:
telnet localhost 8021

Content-Type: auth/request

auth ClueCon

Content-Type: command/reply
Reply-Text: +OK accepted

events plain message

Content-Type: command/reply
Reply-Text: +OK event listener enabled plain
This is an example of MESSAGE event:
Content-Length: 617
Content-Type: text/event-plain

Event-Name: MESSAGE
Core-UUID: 269ea24a-208e-11df-84c7-573c2b1de1ea
FreeSWITCH-Hostname: hardy64
FreeSWITCH-IPv4: 192.168.0.12
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-02-26%2022%3A29%3A34
Event-Date-GMT: Fri,%2026%20Feb%202010%2021%3A29%3A34%20GMT
Event-Date-Timestamp: 1267219774580741
Event-Calling-File: mod_skypopen.c
Event-Calling-Function: incoming_chatmessage
Event-Calling-Line-Number: 2751
proto: skype
login: interface4001
hint: Giovanni%20Maruzzelli
from: gmaruzz4
subject: SIMPLE%20MESSAGE
chatname: %23gmaruzz4/$user4%3Bfaac11592a246288
id: 8651
during-call: true
Content-Length: 10

ciao belè

Config File (skypopen.conf.xml)

Following is a sample config file.
In the first section you set defaults, then you override in the "interface" sections. All and each global_settings parameter can be overridden in each of the interface definition.
X11-display is not used on Windows :).
report_incoming_chatmessages is useful when you have multiple channels with the same skypeusername. They will all receive a message for that skype_user. You probably want to have one only MESSAGE event fired on the ESL.
write_silence_when_idle will make mod_skypopen to send packets of silence to the Skype client when there are no audio writes from FS (inactivity, silence, network lag, etc). This proved useful on most platforms to keep the Skype client on his toes, and to avoid loosing packets "synch" that ends up in a ghost sounding voice. On Virtual Machines (Xen, VMWARE, KVM, Amazon EC2) seems better to put it to "false".
setsockopt will make mod_skypopen to drastically reduce the size of the tcp buffer and set the option NO_TCP_DELAY. This will results in a lower latency and more respect for internal timing, but an higher CPU load. On Virtual Machines (Xen, VMWARE, KVM, Amazon EC2) seems better to put it to "true".
silent_mode works on Windows, using the latest Skype client (update it! :) ). At very first start of FS each Skype client will ask you an additional authorization, and from now on, the Skype client will never pop up windows on calls or chat. It will save a good deal of cpu cycles! silent_mode is not used by the Linux version (present Skype clients for Linux do not understand it).
The param "debug" is not yet used, but in the future will be useful to define how much debug output is generated (now is pretty verbose).
Following example config file is for 4 interfaces, 2 of which will be connected to Skype client instances running as the same skypeuser "user5".
<configuration name="skypopen.conf" description="Skypopen Configuration">
<global_settings>
<param name="debug" value="8"/>
<param name="dialplan" value="XML"/>
<param name="context" value="default"/>
<param name="destination" value="5000"/>
<param name="skype_user" value="user5"/>
<param name="report_incoming_chatmessages" value="false"/>
<param name="silent_mode" value="false"/>
<param name="write_silence_when_idle" value="true"/>
<param name="setsockopt" value="false"/>
</global_settings>
<!-- one entry here per each skypopen interface -->
<per_interface_settings>
<interface id="1" name="interface1">
<param name="X11-display" value=":101"/>
<param name="skype_user" value="user1"/>
<param name="report_incoming_chatmessages" value="true"/>
</interface>
<interface id="2" name="interface2">
<param name="X11-display" value=":102"/>
<param name="skype_user" value="user3"/>
<param name="destination" value="9999"/>
<param name="report_incoming_chatmessages" value="true"/>
</interface>
<interface id="3" name="interface3">
<param name="X11-display" value=":103"/>
<param name="report_incoming_chatmessages" value="true"/>
</interface>
<interface id="4" name="interface4">
<param name="X11-display" value=":104"/>
</interface>
</per_interface_settings>
</configuration>

Building

Linux

How to build Skypopen on Linux, and which libraries are needed

Crashes and oops have been reported caused by the ALSA driver, if this happens to you, please compile and install alsa_drivers version 1.0.20. The section down below, http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy solves all problems for the users that got issues.
The only libraries specially needed by Skypopen are in the libX11 package.
If you are on Ubuntu, Debian, or derivative:
apt-get install libX11-devif you are on CentOS, RedHat, or derivative:
yum -y install libX11-develfor other distros, please add here
Then, edit modules.conf and uncomment the mod_skypopen line. Then, "make install" from the FreeSWITCH root directory, as always.

An example of Skypopen and FreeSWITCH installation on CentOS, from scratch

Crashes and oops have been reported caused by the ALSA driver, if this happens to you, please compile and install alsa_drivers version 1.0.20. The section down below, http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy solves all problems for the users that got issues.
After installation of the base OS, the following is cut and paste ready (you can do it all in one scoop)
yum install -y subversion autoconf automake libtool gcc-c++ \
ncurses-devel make libX11-devel Xvfb alsa-utils libXv libXScrnSaver\
xorg-x11-fonts* alsa-lib libXScrnSaver ; \

cd /usr/src ; \
svn co http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch; \
cd freeswitch ; ./bootstrap.sh ; ./configure ; \
make && make install && make hd-sounds-install && make hd-moh-install && make samples;
after reboot, uncomment mod_skypopen in modules.conf, make install (it will just make install mod_skypopen), and you're good to go!
cd /usr/src/freeswitch
vi modules.conf
make install
Copy and install the Skype clients configuration directory you previously prepared (see http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#How_to_prepare_the_configuration_directory_of_Skype_clients_on_Linux_using_ssh_-X_and_xauth for how to prepare it):
cd /root
mount /dev/hda5 /mnt
cp /mnt/root/skypeconfig2.tgz ./
tar xzf skypeconfig2.tgz
chown -R root.root .Skype
Install the skypopen configuration files, edit and execute the script that starts the Skype client instances:
cd /usr/src
cd freeswitch/src/mod/endpoints/mod_skypopen/
cd configs/
cp skypopen.conf.xml /usr/local/freeswitch/conf/autoload_configs/
vi /usr/local/freeswitch/conf/autoload_configs/skypopen.conf.xml
cp startskype.sh 2startskype.sh
vi 2startskype.sh
sh ./2startskype.sh
start FS and load skypopen!
/usr/local/freeswitch/bin/freeswitch
load mod_skypopen

An example of Skypopen and FreeSWITCH installation on Ubuntu 8.04, from scratch

Crashes and oops have been reported caused by the ALSA driver, if this happens to you, please compile and install alsa_drivers version 1.0.20. The section down below, http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy solves all problems for the users that got issues.
Install ubuntu 8.04 LTS server (Released April 2008 and maintained until April 2013) with *only* OpenSSH Server. (we used the 64bit edition)
Now, let's begin the real installation. Starting here, following is cut and paste ready:
apt-get -y install build-essential subversion automake autoconf wget \
libtool libncurses5-dev xvfb libx11-dev libasound2-dev xfs xfonts-100dpi \
xfonts-75dpi xfonts-scalable

cd /usr/src
svn co http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch
cd freeswitch; ./bootstrap.sh ; ./configure
make && make install && make hd-sounds-install && make hd-moh-install && make samples
go to have something to drink-eat-read-whatever, it takes time
Uncomment the line "endpoints/mod_skypopen" in modules.conf and make install again (it will make install just mod_skypopen)
vi modules.conf
make install
then, test that FS can be started
/usr/local/freeswitch/bin/freeswitch
...
copy the skypopen configuration file
cp src/mod/endpoints/mod_skypopen/configs/skypopen.conf.xml \
/usr/local/freeswitch/conf/autoload_configs/
Install the 32bit compatibility libraries
apt-get -y install ia32-libs lib32asound2 libc6-i386 lib32gcc1 \
lib32stdc++6 lib32ncurses5 lib32z1
(all the *32 libraries are for 64 bit versions, if you are on 32bit you don't need it)
now, let's get the skype configuration directory we prepared on another (desktop) machine
on "How to prepare the configuration directory of Skype clients on Linux", see http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#How_to_prepare_the_configuration_directory_of_Skype_clients_on_Linux_using_ssh_-X_and_xauth
cp /mnt/root/configskypenew.tgz ./
tar xzf configskypenew.tgz
chown root.root .Skype
almost ready!
let's edit the skypopen config
vi /usr/local/freeswitch/conf/autoload_configs/skypopen.conf.xmllet's edit the startskype script
remember to add the removing of all the installed snd-* modules
cp freeswitch/src/mod/endpoints/mod_skypopen/configs/startskype.sh ./
vi startskype.sh
start the X servers and the Skype clients
sh ./startskype.shthis is the situation you want after startskype.sh
root@8-04-srv:~# lsmod | grep snd
snd_dummy 22016 0
snd_pcm 99336 1 snd_dummy
snd_timer 35080 1 snd_pcm
snd 78024 3 snd_dummy,snd_pcm,snd_timer
snd_page_alloc 20368 1 snd_pcm
soundcore 17568 1 snd
root@8-04-srv:~#
Please make sure the user which will be running skype has audio permission and alsa-base is installed
root@8-04-srv:~# adduser SKYPEUSERUNIX audio root@8-04-srv:~# apt-get install alsa-base linux-sound-basestart FS and load skypopen!
/usr/local/freeswitch/bin/freeswitch
load mod_skypopen

Ubuntu 9.10 (Karmic Koala) & 9.04 (Jaunty)

There has been report of many problems with Xvfb in Karmic Koala and Jaunty.
I found them caused by the fact that installing the Xvfb package do not automatically installs the dependencies needed.
Once the dependencies are installed, it runs flawlessly for me.
So, follow the instructions for Hardy just listed, and then add the dependencies.
Additional needed dependencies for running Skype client static build and Xvfb are (on Karmic), all in a cut and paste ready scoop:
apt-get install libfontenc1 libfs6 libice6 libpixman-1-0 libsm6 libx11-6 \
libx11-data libx11-dev libxau-dev libxau6 libxaw7 libxcb1 libxcb1-dev \
libxcursor1 libxdmcp-dev libxdmcp6 libxext6 libxfixes3 libxfont1 libxi6 \
libxinerama1 libxkbfile1 libxmu6 libxmuu1 libxpm4 libxrandr2 libxrender1 \
libxss1 libxt6 libxv1 x11-common x11-xkb-utils x11proto-core-dev \
x11proto-input-dev x11proto-kb-dev xauth xfonts-100dpi xfonts-75dpi \
xfonts-encodings xfonts-scalable xfonts-utils xfs xkb-data xml-core \
xserver-common xtrans-dev xvfb libgl1-mesa-dri
Ernad Husremovic made a nice page describing how to rebuild X stuff on Ubuntu Karmic (9.10) & Jaunty (9.04) from the Hardy sources (but I have found that it's enough to install the dependencies just listed, rebuilding X stuff is not needed):
Skypopen_on_Karmic

Windows

How to build Skypopen on Windows, and which tools and files are needed

Skypopen has been designed to work well on windows since the beginning, like FS itself.
Skypopen (mod_skypopen) is automatically built when you build FreeSWITCH on Windows.
You will need the Visual C compiler from Microsoft, commercial version, or the free (as in beer) Visual C Express (requires registration). They both give the same results in our case (eg: no need to buy the commercial version just for Skypopen).
After having downloaded the FS sources from svn or the packaged FS source release, follow the instruction on how to build FS on Windows. Using Visual C (Express or not):
  • Open Freeswitch.sln
  • Right click the main solution node at the top of the Solution Explorer
  • Right click and select Build
Then, download and install the 16khz sounds and music, needed by Skypopen (16khz native, like Skype itself):
  • Right click on "Download 16khzsound" and select Build
  • Right click on "Download 16khzmusic" and select Build
  • Right click on "16khz sound" and select Build
  • Right click on "16khz music" and select Build

Test if FS works at all: http://wiki.freeswitch.org/wiki/Installation_Guide#Windows_quick_start
Then, go forward with the configuration of mod_skypopen (see below).

MacOSX

The code is not in trunk so I created a seperate page Skypopen on MacOSX

ALSA and the custom snd-dummy

To get good performances and no crashes you may want to compile and install ALSA sound drivers version 1.0.20 and the custom snd-dummy you find in the mod_skypopen sources (subdir "alsa").
The custom snd-dummy allows for 64 concurrent Skype client instances and is much lighter on interrupts and context switches. Compile it with the alsa drivers version 1.0.20 (previous versions of ALSA got a bug that causes kernel oops).
That's the ALSA driver used by skypopen development.

Let's start with ALSA driver compilation and installation:
Get it from: ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2

CentOS, RedHat

Because CentOS backports features in kernel, you will have to edit alsa-driver-1.0.20/include/adriver.h and comment out line 101 and line 1781, to make it like this:
/* other missing types */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
//typedef unsigned int fmode_t;
#endif
...
#ifndef bool /* just to be sure */
//typedef _Bool bool;
#endif
Then edit alsa-driver-1.0.20/usb/usbcompat.h adding a "#if 0" on line 18, commenting out the following code making it look like this:
#endif /* < 2.6.24 */
#if 0
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
close the commenting out block adding an "#endif" at line 97, making it look like this:
#endif /* < 2.6.21 */
#endif //0
Then:
yum install kernel-devel # or yum install kernel-xen-devel (if on xen)

./configure --with-redhat=yes \
--with-cards=dummy,usb-audio,hda-intel,hrtimer,rtctimer \
--with-card-options=all
make && make install
After the first make && make install, copy mod_skypopen/configs/alsa/dummy.c to alsa-driver-1.0.20/sound/drivers/dummy.c .
make && make install #again :)

Ubuntu, Debian

Note, Ubuntu may have alsa sound drivers installed at /lib/modules/<your kernel version>/ubuntu/sound/..., you may need to remove the dir to allow modprobe search from the default place: /lib/modules/<your kernel verision>/kernel/sound/ (don't forget to rerun /sbin/depmod after removing the old sound directory. Eg: /sbin/depmod -a 2.6.24-24-server).
./configure --with-redhat=no \
--with-cards=dummy,usb-audio,hda-intel,hrtimer,rtctimer \
--with-card-options=all
make && make install
After the first make && make install, copy mod_skypopen/configs/alsa/dummy.c to alsa-driver-1.0.20sound/drivers/dummy.c .
make && make install #again :)

Configuration and Operation

Linux

Crashes and oops have been reported caused by the ALSA driver, if this happens to you, please compile and install alsa_drivers version 1.0.20. The section http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy solves all problems for the users that got issues.

How to prepare the configuration directory of Skype clients on Linux using ssh -X and xauth

You will work from a desktop machine connected in ssh with X forwarding and you will use configs/skypopen_auth on the server to force the Skype client to ask you to authorize "skypopen" to connect to it.
Compile skypopen_auth:
$ gcc -Wall -ggdb skypopen_auth.c -o skypopen_auth -lX11
Install xauth on the server machine. On CentOS
yum install xauthOn Ubuntu/Debian
apt-get install xauthThen, from a Linux desktop use ssh with X forwarding to login on the server machine as the user that will start the Skype client instances, and start one Skype client instance:
ssh -X server-machine
/usr/bin/skype &
The Skype instance will appear on the desktop machine. Do all the config needed:
Set the Skype client to use the "hw:dummy" audio device (don't select the default device), to not update, to not make "events", etc etc... Make and receive a couple of test calls. Please note that you (and the remote party) will hear nothing (you're using the snd-dummy "fake" audio driver), that's ok.
When satisfied of the Skype client setup, use skypopen_auth (that simulates FS-skypopen connecting to the Skype client). The Skype client will ask you to be authorized to let "skypopen" connect.
Give the authorization and check the "not ask me again" option.
Close (Quit) the Skype client from the tray icon, so it saves its config.
Then, relaunch the Skype client and use skypopen_auth again, just to be sure it now succeed.
Close (Quit) the Skype client from the tray icon, so it saves its config.
Do the steps for all Skype usernames you will want to use on the server (eg: one Skype username per channel). NB: if you use the same password for all Skype usernames, you can setup just one client and then "clone" it. See below for "Cloning configuration directory on Linux".
first time you use skypopen_auth
$ ./skypopen_auth :101
Skype instance found with id #27263062
RECEIVED==> ERROR 68
RECEIVED==> OK
On ssh -X: first time you use skypopen_auth
$ ./skypopen_auth $DISPLAY
Skype instance found with id #27263062
RECEIVED==> ERROR 68
RECEIVED==> OK
Give the auth to the Skype client, and tell him not to ask again Then Ctrl-C to exit from skypopen_auth
Close (Quit) the Skype client from the tray icon, so it saves its config. Then, relaunch the Skype client

you use skypopen_auth again
$ ./skypopen_auth
Skype instance found with id #27263062
RECEIVED==> OK
RECEIVED==> PROTOCOL 6
RECEIVED==> CONNSTATUS ONLINE
RECEIVED==> CURRENTUSERHANDLE gmaruzz3
RECEIVED==> USERSTATUS INVISIBLE

Cloning configuration directory on Linux

After you have launched the Skype client and logged yourself into the Skype network as "user1", and you have given the auth to be connected by Skypopen, and you setup all the options in the client, exit from the client, right click on the icon and choose "Quit". The Skype client has saved its configuration.
You'll find the subdir "user1" underneath the ~/.Skypopen directory in your home.
If you have registered multiple accounts with Skype ***with the same password*** as the "user1" account, you can just clone the user1 directory and give it the names of the other accounts, and end up as (if you just cloned them, the dates will be closer):
ls -l .Skype/

drwxr-xr-x 5 root root 4096 2009-02-12 22:33 user1
drwxr-xr-x 5 root root 4096 2009-02-08 09:53 user10
drwxr-xr-x 5 root root 4096 2009-02-08 08:30 user11
drwxr-xr-x 5 root root 4096 2009-02-08 08:42 user12
drwxr-xr-x 5 root root 4096 2009-02-08 08:50 user13
drwxr-xr-x 5 root root 4096 2009-02-08 08:48 user14
drwxr-xr-x 5 root root 4096 2009-02-08 09:31 user15
drwxr-xr-x 5 root root 4096 2009-02-08 09:31 user16
drwxr-xr-x 5 root root 4096 2009-02-08 08:53 user17
drwxr-xr-x 5 root root 4096 2009-02-08 08:46 user18
drwxr-xr-x 5 root root 4096 2009-02-08 08:31 user19
drwxr-xr-x 5 root root 4096 2009-02-12 22:33 user2
drwxr-xr-x 5 root root 4096 2009-02-08 09:23 user20
drwxr-xr-x 5 root root 4096 2009-02-12 22:03 user3
drwxr-xr-x 5 root root 4096 2009-02-12 21:10 user4
drwxr-xr-x 5 root root 4096 2009-02-12 21:10 user5
drwxr-xr-x 5 root root 4096 2009-02-12 22:07 user6
drwxr-xr-x 5 root root 4096 2009-02-08 09:53 user7
drwxr-xr-x 5 root root 4096 2009-02-08 09:53 user8
drwxr-xr-x 5 root root 4096 2009-02-08 09:53 user9

Configuration for Running multiple instances of the same Skype username, for BOTH incoming and outbound calls

After you have launched the Skype client and logged yourself into the Skype network as "user1", and you have given the auth to be connected by Skypopen, and you setup all the options in the client, exit from the client, right click on the icon and choose "Quit". The Skype client has saved its configuration.
You'll find the subdir "user1" underneath the ~/.Skypopen directory in your home.
You then create as many directories as the number of instances of "user1" you want to run concurrently. Into each one of them copy the *entire* content of the ~/.Skypopen directory in your home.
eg:
mkdir -p /root/multi/01
mkdir -p /root/multi/02
cp -a /root/.Skypopen/* /root/multi/01/
cp -a /root/.Skypopen/* /root/multi/02/
Don't forget to edit the files in configs/multiple-instances-same-skype-user/ accordingly.
Yay!

Windows

Config files location and script to start Skype client instances

You'll probably build the "Debug" version. So, go and copy src\mod\endpoints\mod_skypopen\configs/skypopen.conf.xml to Debug\conf\autoload_configs. Edit it to reflect your configuration.
Then, go into src\mod\endpoints\mod_skypopen\configs/ and edit startskype.bat to suit your configuration. Remember that startskype.bat needs wait.bat to be in its same directory (wait.bat is in the "configs" dir too).
Eventually, launch the Skype client instances using startskype.bat, then launch FS, and from the FS command line:
load mod_skypopenThe Skype instances will ask you for permission to be connected by Skypopen. Give the auth.
If you put in config file the silent_mode (recommended, see section on configuration file), another authorization will be asked to you. Give it, and not to ask again!

You're all set.

Running Skypopen on Windows as a Service

I assume you have FS configured and working with mod_skypopen (running from the command line). I mean, first you have to make sure all is working as a "normal non-service application".
The difficult thing is to have the Skype client instances started by a service (FreeSWITCH itself is able to be a Windows Service).
You install FS as service (freeswitch.exe -install servicename), then use the "services" applet to run it under "local system" user, starting manually (not automatically).
Then edit to your like (Skype usernames/passwords AND change the name of the service to be started from AICCU to the name of the FreeSWITCH service - on the last line -) and copy the 2 command files contained in the configs/windows-service/ directory to a known location (eg. C:\).
For creating the service that will starts the Skype client instances and the FreeSWITCH service you just setup, you need to use instsrv and srvany from "Windows Server 2003 Resource Kit Tools": http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en
Procedure for creating a service is detailed here: http://support.microsoft.com/kb/137890 (or more shortly here: http://www.sixxs.net/wiki/Configuring_Windows_Vista#.2816.29__Installing_AICCU_Utility_as_a_Service )
You create an (empty) service with those tools, then you follow the procedure steps and as "Parameters"->"Application" you put the string "C:\startskype.cmd"
Then, from the "services" applet in Control Center ->administrative tools, you make sure the service is owned by "local system" and that "Access desktop" is ticked.
Start the service manually from the "services" applet.
Maybe it will appear a "the service wants to access the desktop". Go to "show message" to see what Skype wants, and give some configurations if needed.
After a while, when the FreeSWITCH service will be started by our new "startskype.cmd" service, it will appear "the service wants to access the desktop". Go there and give Skype clients authorization to be connected by FS, forever.
Stop both services from the "Services" applet.
Unfortunately I've found no way to have the Skype instances shutdown when the service is shutdown. So, exit the Skype client instances manually, or reboot.
Restart the service, manually from the "Services" applet.
From another machine, make a Skype call to FS.
If all works as expected, stop both services, make sure (via "services" applet) the FS service will retry three times to start, with a minute pause (just to allow for the Skype clients to start and settle their connection with the network, to be on the safe side).
Make the service to start "automatic" (only the "startskype.cmd" service, not the FreeSWITCH service. The FreeSWITCH service is started by the "startskype.cmd" service.
Reboot the machine, don't log in, make another test call to FS via Skype, and... joy :-)
The trick for me (on Vista) is to use the same "local system" account for both the Skype and the FS services, and *NOT* to use a personal account. Go figure... :-)

Performance and Resource Usage

Linux

20 idle skypopen channels:
top - 18:14:26 up 2:02, 2 users, load average: 0.03, 0.08, 0.04
Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.3%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3096688k total, 1835100k used, 1261588k free, 137688k buffers
Swap: 248968k total, 0k used, 248968k free, 1020888k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8272 root 20 0 320m 30m 4848 S 0 1.0 0:00.56 freeswitch
7905 root 20 0 58520 27m 10m S 0 0.9 0:03.25 skype
7937 root 20 0 59356 26m 10m S 0 0.9 0:03.01 skype
8093 root 20 0 58524 26m 10m S 0 0.9 0:03.03 skype
7981 root 20 0 58376 26m 10m S 0 0.9 0:02.72 skype
8157 root 20 0 59452 26m 10m S 0 0.9 0:02.49 skype
7889 root 20 0 57888 26m 10m S 0 0.9 0:03.03 skype
8189 root 20 0 58544 26m 10m S 0 0.9 0:02.62 skype
7953 root 20 0 58400 26m 10m S 0 0.9 0:03.27 skype
7997 root 20 0 57988 26m 10m S 1 0.9 0:03.00 skype
8029 root 20 0 58456 26m 10m S 0 0.9 0:02.57 skype
8045 root 20 0 58368 26m 10m S 0 0.9 0:02.70 skype
8077 root 20 0 58444 26m 10m S 0 0.9 0:02.69 skype
8109 root 20 0 59564 26m 10m S 0 0.9 0:02.75 skype
8061 root 20 0 57984 26m 10m S 0 0.9 0:02.67 skype
7921 root 20 0 58388 26m 10m S 0 0.9 0:02.92 skype
7873 root 20 0 58492 26m 10m S 1 0.9 0:03.83 skype
8125 root 20 0 58404 26m 10m S 1 0.9 0:02.89 skype
8013 root 20 0 58460 26m 10m S 0 0.9 0:03.88 skype
8173 root 20 0 58468 26m 10m S 0 0.9 0:02.55 skype
8141 root 20 0 58232 26m 10m S 0 0.9 0:02.88 skype
7884 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.33 Xvfb
8024 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.30 Xvfb
8040 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.32 Xvfb
8072 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.29 Xvfb
7900 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.32 Xvfb
7916 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.32 Xvfb
8120 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.31 Xvfb
8152 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.29 Xvfb
8168 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.28 Xvfb
8184 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.28 Xvfb
7868 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.31 Xvfb
7932 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.32 Xvfb
7948 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.32 Xvfb
7964 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.33 Xvfb
7992 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.31 Xvfb
8008 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.31 Xvfb
8056 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.30 Xvfb
...some more Xvfb
Since this server has 3GB of RAM you can see that each skype process is useing about 30MB, and the Xvfbs are useing about 10MB each.
20 incoming concurrent skype calls listening to moh at 16khz:
top - 18:40:04 up 2:27, 2 users, load average: 0.14, 0.13, 0.06
Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie
Cpu(s): 18.6%us, 4.5%sy, 0.0%ni, 76.4%id, 0.0%wa, 0.1%hi, 0.4%si, 0.0%st
Mem: 3096688k total, 1858460k used, 1238228k free, 137692k buffers
Swap: 248968k total, 0k used, 248968k free, 1023148k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8866 root 20 0 336m 35m 5016 S 9 1.2 0:21.23 freeswitch
8812 root 20 0 84632 28m 10m S 6 0.9 0:14.02 skype
8580 root 20 0 84252 27m 10m S 6 0.9 0:28.19 skype
8713 root 20 0 84716 27m 10m S 6 0.9 0:18.06 skype
8628 root 20 0 84268 27m 10m S 7 0.9 0:24.37 skype
8793 root 20 0 84756 27m 10m S 6 0.9 0:14.24 skype
8664 root 20 0 84140 27m 10m S 6 0.9 0:23.19 skype
8745 root 20 0 84628 27m 10m S 6 0.9 0:16.85 skype
8644 root 20 0 84588 27m 10m S 6 0.9 0:22.81 skype
8697 root 20 0 84516 27m 10m S 6 0.9 0:21.03 skype
8514 root 20 0 83164 27m 10m S 7 0.9 0:29.47 skype
8564 root 20 0 84496 27m 10m S 4 0.9 0:28.65 skype
8681 root 20 0 84632 27m 10m S 6 0.9 0:23.20 skype
8532 root 20 0 83528 27m 10m S 6 0.9 0:28.39 skype
8612 root 20 0 84460 27m 10m S 6 0.9 0:24.70 skype
8729 root 20 0 84368 27m 10m S 8 0.9 0:18.86 skype
8761 root 20 0 84644 27m 10m S 6 0.9 0:16.70 skype
8777 root 20 0 83752 27m 10m S 7 0.9 0:16.19 skype
8596 root 20 0 83692 27m 10m S 7 0.9 0:26.49 skype
8831 root 20 0 83568 27m 10m S 7 0.9 0:13.13 skype
8548 root 20 0 83336 27m 10m S 6 0.9 0:30.67 skype
8575 root 20 0 43636 9.8m 2232 S 0 0.3 0:00.63 Xvfb
8543 root 20 0 43636 9.8m 2232 S 0 0.3 0:00.64 Xvfb
8527 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.65 Xvfb
8591 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.60 Xvfb
8658 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.58 Xvfb
8724 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.64 Xvfb
8740 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.65 Xvfb
8509 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.66 Xvfb
8607 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.61 Xvfb
8623 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.57 Xvfb
8692 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.55 Xvfb
8756 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.55 Xvfb
8772 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.60 Xvfb
8788 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.56 Xvfb
8823 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.59 Xvfb
8639 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.58 Xvfb
8676 root 20 0 43624 9.8m 2232 S 0 0.3 0:00.55 Xvfb
...some more Xvfb
Here we see that the Ram usage hasn't changed but now each skype process is useing about 6% CPU. Which amounts to about 1.5% of this quad core system.

The one below is another ascii screenshot, but using the current svn revision at Feb 10, 2009 (one month later than the screenshot before), taken after one hour run of 19 channels on music on hold, and 1 channel intermittent usage (for testing). 20 concurrent channels on moh.
top - 11:37:20 up 14:59, 3 users, load average: 0.04, 0.06, 0.08
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.8%us, 3.1%sy, 0.0%ni, 83.5%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 3096688k total, 1568860k used, 1527828k free, 135244k buffers
Swap: 248968k total, 0k used, 248968k free, 752224k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10473 root 20 0 338m 37m 5264 S 6 1.3 2:43.37 freeswitch
10460 root 20 0 83364 28m 10m S 6 0.9 0:39.05 skype
10316 root 20 0 82844 28m 10m S 6 0.9 2:33.71 skype
10444 root 20 0 83276 27m 10m S 7 0.9 2:26.89 skype
10187 root 20 0 83064 27m 10m S 6 0.9 2:39.78 skype
10364 root 20 0 83308 27m 10m S 6 0.9 2:33.55 skype
10284 root 20 0 83620 27m 10m S 6 0.9 2:39.07 skype
10412 root 20 0 82920 27m 10m S 6 0.9 2:32.86 skype
10300 root 20 0 82792 27m 10m S 6 0.9 2:35.97 skype
10268 root 20 0 83308 27m 10m S 6 0.9 2:37.24 skype
10332 root 20 0 83364 27m 10m S 5 0.9 2:35.97 skype
10171 root 20 0 83164 27m 10m S 5 0.9 2:40.55 skype
10236 root 20 0 83104 27m 10m S 6 0.9 2:38.06 skype
10252 root 20 0 83240 27m 10m S 6 0.9 2:37.91 skype
10428 root 20 0 83124 27m 10m S 6 0.9 2:27.67 skype
10155 root 20 0 83260 27m 10m S 6 0.9 2:43.62 skype
10203 root 20 0 83780 27m 10m S 6 0.9 2:38.93 skype
10396 root 20 0 83300 27m 10m S 6 0.9 2:30.62 skype
10220 root 20 0 83176 27m 10m S 7 0.9 2:45.98 skype
10380 root 20 0 82852 27m 10m S 5 0.9 2:32.23 skype
10348 root 20 0 83356 27m 10m S 6 0.9 2:31.23 skype
10182 root 20 0 41536 9404 2212 S 0 0.3 0:03.33 Xvfb
10166 root 20 0 41536 9392 2200 S 0 0.3 0:03.35 Xvfb
10455 root 20 0 41500 9392 2200 S 0 0.3 0:02.11 Xvfb
10311 root 20 0 41524 9388 2212 S 0 0.3 0:03.24 Xvfb
10231 root 20 0 41512 9376 2212 S 0 0.3 0:03.30 Xvfb
10279 root 20 0 41524 9376 2200 S 0 0.3 0:03.30 Xvfb
10373 root 20 0 41512 9376 2212 S 0 0.3 0:03.20 Xvfb
10343 root 20 0 41512 9372 2200 S 0 0.3 0:03.22 Xvfb
10215 root 20 0 41512 9368 2200 S 0 0.3 0:03.30 Xvfb
10439 root 20 0 41512 9368 2200 S 0 0.3 0:03.20 Xvfb
10295 root 20 0 41512 9364 2200 S 0 0.3 0:03.31 Xvfb
10150 root 20 0 41500 9360 2200 S 0 0.3 0:03.33 Xvfb
10247 root 20 0 41500 9356 2200 S 0 0.3 0:03.27 Xvfb
10263 root 20 0 41500 9356 2200 S 0 0.3 0:03.30 Xvfb
10327 root 20 0 41500 9356 2200 S 0 0.3 0:03.25 Xvfb
10359 root 20 0 41500 9356 2200 S 0 0.3 0:03.22 Xvfb
10407 root 20 0 41500 9356 2200 S 0 0.3 0:03.19 Xvfb
10391 root 20 0 41500 9352 2200 S 0 0.3 0:03.24 Xvfb
10423 root 20 0 41500 9352 2200 S 0 0.3 0:03.20 Xvfb
10198 root 20 0 41464 9320 2200 S 0 0.3 0:03.30 Xvfb
9948 maruzz 20 0 19384 3380 1348 S 0 0.1 0:00.06 bash
4991 klog 20 0 6288 2976 432 S 0 0.1 0:00.09 klogd
10675 root 20 0 68112 2928 2296 S 0 0.1 0:00.11 sshd

Windows

On the same machine as before, Vista Home fully updated, 20 concurrent skypopen calls are reported by "Task Manager" as using 40% of the 4 CPUs.

Adding and removing interfaces on the fly

We got a patch from Muhammad Shahzad for adding and removing interfaces on the fly. It basically adds two sk commands:
sk reload => this re-reads Skypopen configuration file skypopen.conf.xml and adds ONLY new interfaces it found in conf. All existing interfaces are not touched.
sk remove <skype-user> => this remove skypopen interface associated with given Skype user account, if it is idle.

Testing with the "Echo" application

Because the Skype clients have their own AEC (Acoustic Echo Cancellation), if you test Skypopen with the echo() application (press 2 on the demo IVR) you will have a bizarre effect of your voice going up and down in volume "pulsations".
This is caused by the combined AEC of the Skype clients, that "think" the echo() application is the echo generated because you are in an empty room and are using loudspeakers.
On windows AEC can be disabled editing the config.xml file. On Linux, is not possible to disable it (disabling it with the API command has no effect).
So, the test with the echo() application is only good to give you an idea of the latency. If you want to have an idea of the audio quality, use the "delayed echo" at extension 9995 of the default dialplan. Or the echo that is at end of "screaming monkeys" (kindly provided by John Todd, press 5 on the default IVR), but you'll add a transcoding to ulaw 8khz and a round trip to loligo.com servers.

Linux

Some hints from: Shaheryar S. Sheikh 06:00, 12 June 2009 (UTC)
1) Each standard ALSA dummy sound card can be used by up to 8 Skype instances (while the custom one can serve 64 Skype instance, so in practice it has no limitation and you do not need to do anything special. See: http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy), by default Linux kernel has support for up to 8 sound cards. This means with default Linux installation you can not have more then 8 x 8 = 64 Skypopen interfaces. To overcome this limit, you have to recompile Linux kernel with Dynamic device file minor numbers option enabled in ALSA section.
2) If you are using more then 4 dummy sound card instances, make sure you give enough time to snd_dummy kernel driver to initialize all dummy sound card instances. Otherwise, Skype instances will not be able to find or use a free dummy sound card properly and sound issues will occur, such as no or crappy sound. My estimations are 60 seconds for up to 8 dummy sound cards (tested on CentOS 5.3).
3). When creating Skype configuration directory template as described above, also make sure of following, these will ensure you have no trouble while using this configuration directory template for other Skype accounts.
a) Remove all contacts in contact list, even Skype Call Testing Service.
b). Disable auto-login, so it won't save password.
4. When you copy configuration directory template to use for a REAL Skype account, after copying execute following commands from inside the new configuration directory,
perl -pi -e 's/<template-username>/<actual-username>/g' profile256.dbb
perl -pi -e 's/<template-username>/<actual-username>/g' voicemail256.dbb
Replace <template-username> and <actual-username> with your template Skype username, and real Skype username. Now this REAL Skype user can log in with Skypopen even if its password is completely different then template Skype user.
5. I have already send patch to mod_skypopen.c file that provides commands to dynamically add and remove Skypopen interfaces in a running FS process without effecting any other existing Skypopen interfaces (btw, the patch is now integrated in the mainline code). You can write up a PERL daemon to utilize these commands to create Skype configuration directories (from a template), initialize new Skype instance with any valid Skype username and password and then start calling to/from FS from/to Skype network. You then remove Skype instance and delete its configuration directory and create new ones...!

TO DO

Requests, suggestions, ideas (feel free to add here, but best is to add on Jira - see below 'BUGS and Feature Requests'):

TROUBLESHOOTING

Error and warnings at the starting of Skype clients on Linux

When starting the Skype clients on Linux, on certain distros you can have warnings and errors on the console, like those:
Couldn't open RGB_DB '/usr/share/X11/rgb'
error opening security policy file /usr/lib64/xserver/SecurityPolicy
or this:
ALSA lib pcm_dmix.c:1008:(snd_pcm_dmix_open) unable to open slaveor this:
ALSA lib pcm.c:2184:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmiThose are completely harmless, and after you are sure your script correctly starts the Skype clients, you can also redirect those outputs to /dev/null, if so you like.
The last ALSA warning can be avoided editing the alsa.con file (/etc/alsa/alsa.conf or /usr/share/alsa/alsa.conf) and commenting out the hdmi lines

Skype Client Memory Leak on CentOS

The Skype client has been reported to memory leaks on CentOS, while seems to behave well on Ubuntu.
NOTE: to solve the problem, download the "static" version of Skype client, untar the directory, and copy the "skype" executable on top of /usr/bin/skype. Voila', no more memory leak (so it's probably a leak with QT on centos?). If you do this step, no need for additional measures.
Please see this bug report on the official Skype Jira: https://developer.skype.com/jira/browse/SCL-388
If this problem bite you on a production system CentOS based, consider to have a cron that periodically unload mod_skypopen from FS, killall Xvfb (automatically will kill the Skype client instances), and restart both Xvfb and Skype client instances.
Also, you can do it one interface at time, removing the interface from FreeSWITCH, killing the Xvfb and Skype client related to that interface, starting again the Xvfb and Skype client related to that interface, reloading all mod_skypopen interfaces (actually it would reload only the newly restarted one). You can do it in a sequence like:
freeswitch@internal> sk remove interface1
[root@server1]# kill the Skype client related to interface1 and the Xvfb that serves it
[root@server1]# start the Xvfb and the Skype client instance related to interface1
freeswitch@internal> sk reload

Linux machine stuck, not able to reboot, Skype clients erratic behavior, or various bizarre problems

It's probably an ALSA driver problem.
See http://wiki.freeswitch.org/wiki/Skypopen_Skype_Endpoint_and_Trunk#ALSA_and_the_custom_snd-dummy for how to solve it.
If you still want to use the ALSA driver of your distro, as a pre-caution make non-executable in /etc/init.d the files that deal with ALSA, eg: the ones that contains alsactl or amixer, or whatever alsa related.
Particularly the one that try to store the alsa status on shutdown or reboot (eg: alsactl store).
This way at least you can reboot the machine also if the ALSA driver has crashed or has problems.

USAGE EXAMPLES (contributed by users, maybe outdated)

Blog post of Michael Collins (mercutioviz)

http://telecommusings.blogspot.com/2009/09/kicking-it-off-skype-for-asterisk-yawn.html

FreeSWITCH Testimonial on Idapted.com (by Seven Du)

A system for remote teaching English language, connects US based teachers with China based students: http://wiki.freeswitch.org/wiki/FreeSWITCH_Testimonial_on_Idapted.com

skypopen originator (by DelphiWorld)

This example is a default dialplan extension, to originate call from any SIP/Freeswitch supported Endpoint to Skype Network.
Skype provide a service called speeddial, to assign a speed dial number to a contact.
For example, "Bob" is in my contact list, i right click and i choose to assign a speed dial number and I enter 1.
When I call this originator in FreeSWITCH, i dial 1 and skypopen will call "Bob" directly using the speeddial number in my skype profile
<include>
<extension name="skypopen_originator">
<condition field="destination_number" expression="^(2020)$">
<action application="play_and_get_digits"
data="2 5 3 7000 # conference/8000/conf-pin.wav /invalid.wav dest"/>
<action application="set" data="instant_ringback=true"/>
<action application="set" data="ringback=$${us-ring}"/>
<action application="ring_ready" />
<action application="bridge" data="skypopen/ANY/${dest}"/>
</condition>
</extension>
</include>

skypopen based skype trunk (by DelphiWorld)

I installed a debian machine, with 2GB of ram, 3.0GHZ Intel dualcor CPU and 1 LAN wired and 1 wireless interface for skype trunking, for Algeria Telecom technical support.
Algeria Telecom have an Asterisk based call center, so I created a new trunk in Asterisk and let FreeSWITCH register into it.
If any call is coming from Skype network, FreeSWITCH transfer it to the QUEUE (actually i dial 800)
At the moment is used only for testing.
If accepted, I will extend it to more than 20 Skypopen channels with a more powerful server machine.

Kulwinder Singh Windows Video How To

Kulwinder Singh contributed this HOW TO: Freeswitch & Skype- OS Microsoft Windows
Part 1 url: http://www.youtube.com/watch?v=ji4IqcerMgM
Part 2 url: http://www.youtube.com/watch?v=1x1biWEJOu4

Skypopen Directory-dialing example

An example of using text-to-speech to read a list of online Skype contacts with dynamic extensions, then dialing out when the user keys in the contact's extension.

How To Report BUGS and Feature Requests

You can file bug reports, hints, suggestions, feature requests, improvements, patches, etc to http://jira.freeswitch.org/browse/MODSKYPOPEN open an account there if you don't have it (it's free ;-) ).
That's the best way to give us info on bugs:
1) from the FS CLI: "console loglevel 9"
2) load mod_skypopen
3) reproduce the bug
4) attach the *complete, since beginning* console output as a file attachment to the Jira bug
If the bug reports crashes, core dumps, etc, please first read this guide: http://wiki.freeswitch.org/wiki/Reporting_Bugs then file a Jira with all relevant info to mod_skypopen.
You can also write to the FS users' and developers' mailing lists: http://lists.freeswitch.org/mailman/listinfo
And you can drop in the IRC channels #freeswitch and #freeswitch-dev on irc.freenode.org to ask questions