FreeSWITCH package for pfSense 1.2.1 and 2.0 released. PBX or Proxy



  • I have just released a FreeSWITCH package for pfSense 1.2.1 also works on pfSense 2.0. It requires pfSense 1.2.1 or higher because it was compiled for FreeBSD 7.

    What FreeSWITCH can do for you:

    SIP Proxy
    Soft-Switch
    B2BUA
    PBX with:
      IVR (auto attendant)
      Voice Mail
      DISA (Direct inware system access)
      Conference Server
      Text to Speech
      Speech Recognition
      Auto Dialer
      Audio can be 8khz standard, wideband 16khz, or ultrawideband 32 khz
      SRTP Support
      TLS support

    And best of all its customizable

    New Screen Shots are available:
    http://portableusbapps.com/images/FreeSWITCH/

    General Info on FreeSWITCH
    http://www.freeswitch.org/
    http://wiki.freeswitch.org/wiki/Main_Page

    SIP Proxy

    http://wiki.freeswitch.org/wiki/Proxy_Media

    PBX

    To get started setting this up as a PBX setup a few extensions the default config accepts extension numbers between 1000 and 1019. The extension numbers can be changed are noted in the package GUI on how to make the change. Once you have setup an extension you can call Music on Hold by dialing 9999.

    5000 Sample IVR
    9996 for an echo test
    9995 for a 5 second delay echo

    Setup another extension with a phone and you can then call the other extension by its number.

    To call out to public telephone numbers you will need a FXO or a VOIP provider. To configure a VOIP provider use the Gateway tab. The field names have been matched up to the xml tag names. Under Gateways (aka Providers) the field names match exactly with the xml tag names shown at: http://wiki.freeswitch.org/wiki/SIP_Provider_Examples this helps keep the documentation and examples on the wiki relevant to the pfSense FreeSWITCH package. The GUI has been built to increase your knowledge of the underlying XML config files.

    Then to use the Gateway for an outbound call you need to direct the outgoing call to the gateway through the 'Dialplan' tab.
    Here is an example for a gateway named asterlink.com you will want to put it near the bottom below hold_music and just above the warning message. Also remember to change asterlink.com to the name of your gateway (provider). Also replace the area code from my area code of 208 to match yours that will enable 7 digit local North American dialing.

    ^(\d{7})$ is a regular expression representing any 7 digit number.

    <extension name="asterlink.com"><condition field="destination_number" expression="^(\d{7})$"><action application="export" data="nolocal:absolute_codec_string=PCMU"><action application="bridge" data="sofia/gateway/asterlink.com/1208$1"></action></action></condition></extension>

    <extension name="asterlink.com"><condition field="destination_number" expression="^(\d{10})$"><action application="export" data="nolocal:absolute_codec_string=PCMU"><action application="bridge" data="sofia/gateway/asterlink.com/1$1"></action></action></condition></extension>

    <extension name="asterlink.com"><condition field="destination_number" expression="^(\d{11})$"><action application="export" data="nolocal:absolute_codec_string=PCMU"><action application="bridge" data="sofia/gateway/asterlink.com/$1"></action></action></condition></extension>

    To receive inbound calls you need to direct inbound numbers to your gateway you can do this by editing the config from the 'Public' tab. The default example is fairly intuitive I will expand on it a little first a term DID (direct inward dial) this is essentially the phone number the provider has given you.

    The ^(5551212)$ is a regular expression representing the inbound phone number often this is a 10 digit number.
    <condition field="destination_number" expression="^(5551212)$">The transfer application example below is set to transfer the incoming call to extension 1000. This could also be an extension of given to an IVR under the 'Dialplan' tab.
          <action application="transfer" data="1000 XML default">Additional Info
    http://wiki.freeswitch.org/wiki/Getting_Started_Guide

    That should be enough to get started and the wiki can take you even farther.
    http://wiki.freeswitch.org/

    Enjoy!</action></condition>



  • Thanks master! Im exploring it now :)
    You`re the man! :)

    I`ll inform you the result of my explorations :)
    Good luck!

    jigpe



  • I have installed freeswitch to look through its configuration on my pfsense installation (built on Wed Oct 8 17:46:25 EDT 2008 FreeBSD 7.0-RELEASE-p5). Once installed I noticed that it show up under services and can be controled but under packages is does not show up as installed or something to be installed.



  • You should see FreeSWITCH in the following locations:

    //before installation
    System -> Packages -> Available PFSense 1.2.1-RC1 packages

    //after installation
    System -> Packages -> Installed Packages
    Services -> FreeSWITCH
    Status -> Services

    On my test systems it does show up under System -> Packages -> Installed Packages.

    If for some reason you can't see it under: System -> Packages -> Installed Packages
    You could try installing over top of it using:
    http://x.x.x.x/pkg_mgr_install.php?id=FreeSWITCH
    Change the x.x.x.x to the IP address of your pfSense firewall.
    Make sure not to interrupt the package installation.
    Then check again to see if is shows under 'Installed Packages'.



  • Great package so far…fighting with it a bit though.  Doesn't seem like it reloads the config when you save changes.  Is that desired behavior?



  • It runs FreeSWITCH's reloadxml on all changes which is good for re-reading the config. However for a new Gateway to be applied I have usually restarted FreeSWITCH. I've just asked on FreeSWITCH forum and they said a reloadxml then restart the sofia sip profile would work. I will get that changed soon.



  • Sounds good.  I confirmed that the reloadxml command is working, although it didn't work for me when adding extensions immediately after install, but that might just be FreeSwitch trying to be efficient and not having Sofia loaded (since I didn't have any sip devices listed prior to that), or who knows.  It's working now, so whatever.

    Another question…you'll be getting several package bug reports from me (if there are any bugs and I'm not just being retarded. :) ), do you prefer I PM them to you?

    #1: When changing the area code in the settings tab, 7 digit calls still get prepended with 918, due to the <x-pre-process cmd="set" data="default_areacode=918">line in the VAR tab.  Should this be changed to the value from the Settings tab?  EDIT: I actually put ${default_areacode} in the area code field on the settings page...I figure that should pull it from the vars.xml file, where I have it set correctly.  Is this correct?  Also, what xml setting does the "area code" on the settings page change?

    #2: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml, 10 digit calls just drop.  Adding the following section will fix that by prepending a 1, and sending the call out.

      <extension name="domestic.provider.com"><condition field="${toll_allow}" expression="domestic"><condition field="destination_number" expression="^(\d{10})$"><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/${default_gateway}/1$1"></action></action></action></condition></condition></extension> 
    
    

    #3: I can't get the "say:" command in the IVR xml file to work.  I get the following error in the console:```
    2008-10-28 22:43:15 [ERR] mod_native_file.c:68 native_file_file_open() Error opening /usr/local/freeswitch/sounds/en/us/callie/say:Press 1 to join the conference, Press 2 to join the other conference.PCMU

    
    #4: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml all the caller id setup is done with single dollar signs…IE, ${outbound_caller_id_number}.  I'm no FreeSwitch guru, so I can't explain why, but I can't pass callerid through Voicepulse to the PSTN until I change them all to double dollar signs, as I saw in the vars.xml file...note that I didn't add a dollar sign to ${default_gateway}, only the caller_id settings, and that's apparently working...I'm not sure what the difference is.
    
    #5: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml all the caller id variables reference ${outbound_caller_id_number} or =${outbound_caller_id_name}.  In the vars.xml file, the only caller id variables are outbound_caller_id and outbound_caller_name.  Until I assign my caller id data to the first variables, outbound_caller_id_number and outbound_caller_id_name, I can't pass callerid through Voicepulse to the PSTN.</x-pre-process>


  • I have completed a few more changes to the package.

    1. When adding a Gateway the following command is now called automatically through a socket connection.
    sofia profile external rescan reloadxml
    This will pick up new gateways that have been added or deleted and handle them appropriately without restarting FreeSWITCH. There still may be times a few times that require a restart for a gateway. I could have been more aggressive and had it run: sofia profile external restart reloadxml but that would interrupt current incoming/outgoing calls so I chose not to go that way.

    2. Added a few more input fields for Gateways such as 'Realm' and 2 others fields in many cases this is not needed but I wanted to make sure that there is flexibility in GUI for special situations. If a field is left blank then the corresponding xml parameter tag will not be used in the config. The fields under the 'Gateways' tab match up exactly with the SIP provider examples at:
    http://wiki.freeswitch.org/wiki/SIP_Provider_Examples

    3. The 'Modules' tab has been changed from the original text area to a list in the GUI that allows you to enable or disable different modules. Note: not all modules are available in this build… an example would be Cepstral text to speech which doesn't have a native FreeBSD build. Flite text to speech is available if its modules is enabled.

    Now to answer your questions...

    @thekod:

    Sounds good.  I confirmed that the reloadxml command is working, although it didn't work for me when adding extensions immediately after install, but that might just be FreeSwitch trying to be efficient and not having Sofia loaded (since I didn't have any sip devices listed prior to that), or who knows.  It's working now, so whatever.

    Sofia (SIP) is loaded by default. If you restart FreeSWITCH under Services then you should check the Status tab to make sure that the sofia internal profile is loaded if it does not load it will say 'Invalid Profile!' This is caused from a port not closing by the time you restart FreeSWITCH. It can be solved by shutting down the service longer sometimes up to 2-5 minutes then starting it again. Rebooting will also work to clear that up.

    @thekod:

    Another question…you'll be getting several package bug reports from me (if there are any bugs and I'm not just being retarded. :) ), do you prefer I PM them to you?

    If the information can be valuable to others then the forum. Items that are not likely to be useful to others you can pm me.

    @thekod:

    #1: When changing the area code in the settings tab, 7 digit calls still get prepended with 918, due to the <x-pre-process cmd="set" data="default_areacode=918">line in the VAR tab.  Should this be changed to the value from the Settings tab?  EDIT: I actually put ${default_areacode} in the area code field on the settings page…I figure that should pull it from the vars.xml file, where I have it set correctly.  Is this correct?  Also, what xml setting does the "area code" on the settings page change?</x-pre-process>

    $${default_areacode} in the area code field on the settings page should work fine.
    The settings page populates the area code in the following xml file /usr/local/freeswitch/conf/directory/default/default.xml

    @thekod:

    #2: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml, 10 digit calls just drop.  Adding the following section will fix that by prepending a 1, and sending the call out.

      <extension name="domestic.provider.com"><condition field="${toll_allow}" expression="domestic"><condition field="destination_number" expression="^(\d{10})$"><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/${default_gateway}/1$1"></action></action></action></condition></condition></extension> 
    
    

    This can also be done from the dialplan tab as noted in the this first message in this thread. As you have shown the caller id can also be done for all calls going outbound to the gateway with the 10 digits shown above.  The other method for caller id is per extension which can be done by setting the effective caller id on the 'Extension' tab.

    @thekod:

    #3: I can't get the "say:" command in the IVR xml file to work.  I get the following error in the console:```
    2008-10-28 22:43:15 [ERR] mod_native_file.c:68 native_file_file_open() Error opening /usr/local/freeswitch/sounds/en/us/callie/say:Press 1 to join the conference, Press 2 to join the other conference.PCMU

    I have not worked with the XML IVR because I prefer doing the IVR in javascript. For help with the XML IVR see the wiki at http://wiki.freeswitch.org/

    To see an example IVR in javascript.
    http://wiki.freeswitch.org/wiki/Javascript_Examples look for the example ivrmenuofficehours.js link.

    The sounds under /usr/local/freeswitch/sounds/en/us/callie/ are pre-recorded messages using Cepstral's text to speech engine.
    At this time Cepstral does not have a native FreeBSD build. Alternatives are to pre-record messages on a different computer, use Flight text to speech engine, or make your own voice recordings.

    @thekod:

    #4: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml all the caller id setup is done with single dollar signs…IE, ${outbound_caller_id_number}.  I'm no FreeSwitch guru, so I can't explain why, but I can't pass callerid through Voicepulse to the PSTN until I change them all to double dollar signs, as I saw in the vars.xml file...note that I didn't add a dollar sign to ${default_gateway}, only the caller_id settings, and that's apparently working...I'm not sure what the difference is.

    Looks like you found a missing $ in the default config. Next time I compile I will check to see if that has been corrected if not I will report it if you don't beat me to it.

    @thekod:

    #5: In /usr/local/freeswitch/conf/dialplan/default/01_provider.com.xml all the caller id variables reference $${outbound_caller_id_number} or =$${outbound_caller_id_name}.  In the vars.xml file, the only caller id variables are outbound_caller_id and outbound_caller_name.  Until I assign my caller id data to the first variables, outbound_caller_id_number and outbound_caller_id_name, I can't pass callerid through Voicepulse to the PSTN.

    Vars.xml maps to the 'Vars' tab in the GUI. It sets up variables that can be used anywhere in the config. There may be some cases where the vairables are not being used anywhere in the config. FreeSWITCH is a young open source project and the configs are evolving and being improved over time.



  • Added an option to the package to disable gateways without deleting them.



  • A tip for those using this package. You can pickup your voicemail by dialing the extension number you are calling from. So for example if your extension is 1001 and you want to get your voicemail then from extension 1001 call 1001 and it will send you to your voicemail.

    Alternative method to access voicemail is to dial extension 4000 followed by your extension number and the password.

    GUI enhancements that are coming soon …

    1. Management tool for adding and removing recordings
    2. Management tool to setup and configure an IVR (Auto Attendant)



  • Minor version update. Added commands to the 'Status' tab to start, stop, restart, rescan, reloaxml and flush inbound registrations. Also found and corrected 2 minor issues with syntax.



  • Thanks mcrane…this package rocks.



  • Thanks for the encouragement.

    New version is almost ready. I will try my best to get it out by sometime tomorrow (Saturday 29 Nov 2008).



  • was this updated over the weekend? it looks like it wasnt based on my packages list.

    is there another way to check other than the packages list page within my pfsense?



  • Sorry I missed my goal for weekend release still working on it. Should be soon.



  • Any idea when this will be coming along Mcrane? My Linksy 941 clips the packet size of RTP and apparently there is a fix for this in the latest version of freeswitch. My phone in usable until this gets updated.

    Thanks, and sorry if im sounding pushy!



  • I will be releasing this today Friday 5th December 2008. When its ready I will announce it here.



  • Announcing the release of the new pfSense FreeSWITCH package version 0.3.2.

    The new package includes
    1. Recordings
    2. IVR (Auto Attendant)
    3. 'Public' Tab
    4. 'Dialplan' Tab
    5. 'Gateways' Tab now has an advanced tab that hides options that are not used often simplifying the interface. Also has a tool that will make it easy to quickly add outbound dialplan rules for 7,10, and 11 digit dialing.
    6. Improved 'status' Tab
    Added a download button for 'call detail records' in csv format and for logs.
    Added better formatting for active calls and channels.
    7. New build of FreeSWITCH revision 10638 from 5 December 2008.

    In the previous versions after adding a new gateway, extension or some other change the configuration was automatically reloaded. However this took a little more extra time after each change. 0.3.2 no longer reloads the configuration automatically. To reload the configuration go to the 'Status' tab and click on 'reloadxml' if you adding a gateway then press rescan. Update a gateway then press 'restart' on the external profile.

    Added some documentation and links to the interface hopefully making things a bit easier.

    The 'Public' tab in the previous version was a text area that allowed you to modify the XML manually. This is still available under 'deprecated xml'. Please move your config to the new public GUI interface as the 'deprecated xml' will be available for a short period  of time allowing anyone who has an older install a chance to move the config.

    Public tab routes inbound calls to the desired location.

    Example 'Public' config in the new interface:
    Extension Name: inbound_did
    Enabled: true
    Order: 001
    Description: Inbound DID

    Directs specific calls that are calling into the following DID.
    Tag: Condition
    Type: destination_number
    Data: ^(12081231234)$

    Call is transferred to extension 1001. Can also use this to direct calls to the IVR.
    Tag: Action
    Type: transfer
    Data: 1001 XML default

    –-- Upgrade Warning ------------
    If you are upgrading then backup your recordings and voicemail before starting. To be absolutely you have everything backup the /usr/local/freeswitch directory. You can do this by using the 'Command' tool under 'Diagnostics' to tar gzip the directory and then use copy the file to the /tmp directory or use the 'Download' to save a copy of the file.
    ---- Upgrade Warning ------------

    If you have any questions or problems please post a message here.

    Best Regards,
    Mark J Crane



  • Last night (8 December 2008) fixed a bug or two that prevented hearing the prompts for recording on the 'Rec' tab. 
    Today  (9 December 2008) fixed an issue with the auto attendant (IVR) saving correctly and the audio from playing.

    If you have installed the package make sure to back up /usr/local/freeswitch and then reinstall to the latest version.



  • I reinstalled the package to upgrade to the latest version and ended up with some missing files…the IVR tab and Gateway tab both gave 404s.  Uninstalled and reinstalled the package, and it works now.  So, if you run into problems, just try uninstalling and reinstalling.



  • mcrane, very nice job.  I'm struggling a bit figuring out how everything interacts in the GUI, but this is awesome.  Great job.

    One feature request when you have time would be to add controls to change the order of IVR\inbound conditions and actions, like there are for firewall rules…add below this, and insert here.



  • @thekod:

    mcrane, very nice job.  I'm struggling a bit figuring out how everything interacts in the GUI, but this is awesome.  Great job.

    As you figure out how it interacts post some tips here on the forum so that it can benefit others. If you have questions post them here and I will help.

    @thekod:

    One feature request when you have time would be to add controls to change the order of IVR\inbound conditions and actions, like there are for firewall rules…add below this, and insert here.

    I agree ability to change the order would be useful. I will work on it when I get some time.



  • Does anybody have a pointer ?
    We already are running a PFSense Box as the main Firewall in our test environment. We now what to add a separate PFSense box with the Freeswitch package, and running just for that purpose.

    Do I need to setup

    a "Transparent Firewall"
    b "Bridge w/th Outbound NAT'
    c "Router [Disable Firewall] + Bridge]" ?

    Sorry if these options don't make sense, but hopelly they will make you smile :). Point being is that I should be able to work all on the WAN as a single network device and not need all the extra NATing,

    Unfortunately my alternative if I cant get moving forward is to use askozia. I only have 5 days applied to this test. 3 to go.



  • @Aderium:

    Does anybody have a pointer ?
    We already are running a PFSense Box as the main Firewall in our test environment. We now what to add a separate PFSense box with the Freeswitch package, and running just for that purpose.

    Sounds good.

    @Aderium:

    a "Transparent Firewall"
    b "Bridge w/th Outbound NAT'
    c "Router [Disable Firewall] + Bridge]" ?

    What you do for choice a, b, or c is dependent on you are trying to accomplish. For example if your phones are always going to be in the same network, and or you are using a point to point vpn between locations then setting the FreeSWITCH machine inside NAT should work fine.

    However if you want to have FreeSWITCH work inside your office and phones work outside the office without a VPN then the easiest way would be to give the FreeSWITCH machine a real world IP on the WAN. If it is static you can use the IP address or a domain. If the IP is dynamic then use a dynamic dns provider to provide a domain name. If you choose to use a domain name then you will need to set the domain= from the 'var' tab to the domain you are wanting to use.

    You can disable the firewall if you have a firewall in front of the FreeSWITCH machine. However my preference still leans toward a higher level of security by leaving the firewall on so that it firewalls itself. Really this depends on if its has a public IP then yes I would leave the firewall in tact. If FreeSWITCH machine is on the LAN IP and there are only a few people connected to the LAN then you might be okay with the firewall disabled.

    @Aderium:

    Sorry if these options don't make sense, but hopelly they will make you smile :). Point being is that I should be able to work all on the WAN as a single network device and not need all the extra NATing,

    At this moment you still need the LAN port. I have PHP communicating with the FreeSWITCH package over the LAN interface. However I be changing this soon so that it will work with one or more interfaces.

    @Aderium:

    Unfortunately my alternative if I cant get moving forward is to use askozia. I only have 5 days applied to this test. 3 to go.

    I will attempt to help you get this working before your deadline.



  • Announcing a few more features that I stayed up all night to add.

    1. Auto Attendant timeout. The recording plays one time and then the timeout is used to allow more time for dtmf to be detected. If no dtmf is detected during that time the system will direct the call to the timeout out option 't'.

    2. Backup and Restore feature I felt was an important feature.
    I have added a backup and restore buttons to the 'Status' tab. When you click on the backup button a /usr/local/freeswitch directory is tar gzipped and saved into /tmp/ directory as freeswitch.bak.tgz. When the file exists then the 'restore' button will be visible.

    The restore currently leaves the config directory alone allowing pfSense configuration to store all the configuration.
    However the restore does extract the backup files to the following folders.

    Internal Database files keep track of registrations, voicemail details, and more.
    /usr/local/freeswitch/db/

    Logs
    /usr/local/freeswitch/log/

    Recordings from the 'Rec' tab are saved here.
    /usr/local/freeswitch/recordings/

    Saves the javascript files most usefull if you have any custom scripts in this directory.
    /usr/local/freeswitch/scripts/

    Voicemail audio files are stored in this location
    /usr/local/freeswitch/storage/

    –-----------------------------------------------------
    If you are using a version less than 0.4.1 then you should
    manually create the backup before upgrading using the
    following command.

    Diagnostics->Command->PHP Execute->Command
    system('cd /usr/local/;tar cvzf /tmp/freeswitch.bak.tgz freeswitch');

    After you have upgraded to 0.4.1 or higher then you will have the
    backup button that you can use at any time.

    If /tmp/freeswitch.bak.tgz file exists during the install then the
    restore will automatically run directory content to /usr/local/freeswitch.


    Upgrading the FreeSWITCH pfSense package:

    System-> Package Manager-> Installed Packages
    Update at this time the any of the 'Reinstall' buttons will not likely work. Its working now

    At this time the upgrade procedure is to make the backup and then remove the FreeSWITCH package.
    Then install the package again. During the installation it will detect the backup and restore the additional directories.



  • Thanks for the advise, so let me understand

    For now I will setup the FreeSwitch box behind the NAT [ Other pfsense box ] inside the LAN network.

    1. I can have Firewall on … got that ...
    2. I can connect just the LAN of FreeSwitch Box and give it a static private IP part of our existing network and move on, no need for bridging or anything else
    3. I suppose when you update the package we can choose which network port to use. In either case with just the LAN network port and an ethernet cable I should be fine, ... but what about NATing on that box ? will that interfere ?

    Thanks in advance



  • @Aderium:

    To clarify the previous message about NAT it is possible to setup FreeSwitch behind NAT as well have phones on the inside and the outside of the network. However there is more of a learning curve for to do it for starters you would want to configure NAT to direct the traffic to the FreeSwitch Server, configure Rules to allow the traffic, and then finally there are additional changes required to make FreeSWITCH work. See wiki.freeswitch.org for additional NAT details.

    1. I can connect just the LAN of FreeSwitch Box and give it a static private IP part of our existing network and move on, no need for bridging or anything else

    Honestly I have not tried it from the LAN. When I have run it as a dedicated device I ran it on the WAN with the IP on the WAN using a local network IP. Then on the LAN I left that interface unplugged.

    If you use the static IP on the LAN make sure to go to the 'var' tab as previously described and set the domain = to the lan ip.
    Then restart the FreeSWITCH service.

    @Aderium:

    1. I suppose when you update the package we can choose which network port to use. In either case with just the LAN network port and an ethernet cable I should be fine, … but what about NATing on that box ? will that interfere ?

    If you use the WAN interface only then no traffic travels from the WAN to the LAN and so there is no NAT involved. This may be the case with the using only the LAN interface I haven't tried it. I think you might run into a problem on the LAN side with the LAN trying to find the Gateway to the internet that is defined on the WAN in pfSense 1.2.1.



  • I'm pretty sure the sip useragent binds to all interfaces, so it won't matter what interface you have plugged in…



  • First off thank you for all the help. I think that once this is all setup and tested it may make sense to provide you documentation of how we have set it up and add your settings to it and present it as a tutorial to share to others for configuring Freeswitch with this case scenario.

    So after reading your response I will follow your direction and plug the Ethernet into the WAN network interface, as you explained that it will eliminate that whole NAT stuff.

    So…
    We have a PFSENSE firewall and then in the network we have a PFSENSE / Freeswitch device with 2 Network interfaces but we use just the WAN set with DHCP [ the address is static given from the DHCP Server ]

    Now I suppose that we still need to open ports and add port forwarders to direct traffic to the FREESwitch box…
    Where can I find all that Jazz ? and do I need to follow the steps of implementing the sipproxy package on either the PFSENSE box or the Freeswitch box ?

    Regards,



  • @Aderium:

    First off thank you for all the help. I think that once this is all setup and tested it may make sense to provide you documentation of how we have set it up and add your settings to it and present it as a tutorial to share to others for configuring Freeswitch with this case scenario.

    A variety of tutorials is a good thing. No one is likely to complain about too much documentation. Keep in mind much of the information at wiki.freeswitch.org still applies to this package.

    @Aderium:

    So after reading your response I will follow your direction and plug the Ethernet into the WAN network interface, as you explained that it will eliminate that whole NAT stuff.

    Ok.

    @Aderium:

    So…
    We have a PFSENSE firewall and then in the network we have a PFSENSE / Freeswitch device with 2 Network interfaces but we use just the WAN set with DHCP [ the address is static given from the DHCP Server ]

    DHCP is fine as long as its is reserved static IP.

    @Aderium:

    Now I suppose that we still need to open ports and add port forwarders to direct traffic to the FREESwitch box…
    Where can I find all that Jazz ? and do I need to follow the steps of implementing the sipproxy package on either the PFSENSE box or the Freeswitch box ?

    You don't need to over complicate things add more complexity if you need it. So for example siproxd may not be needed. I would only through it in the mix if I needed it. Your phones will all be talking to the phone system as in the pfSense FreeSWITCH box. It is the only thing that will talk outside of the network to a VoIP provider (ITSP). If there is someone that knows Siproxd better than me feel free to share your knowledge but as far as I'm aware siproxd is most useful for situations where you have multiple devices in one network going out to an offsite PBX or VoIP provider.

    On the machine that is the dedicated pfSense FreeSWITCH box set some 'Rules' on it to allow the VoIP traffic to the WAN interface.  SIP protocol on FreeSWITCH uses 5060 - 5090 and can communicate over TCP or UDP. RTP (Real time protocol) uses ports 16384 - 32768 UDP. You do not need to configure NAT. It is not necessary to configure because FreeSWITCH will bind to the WAN a translation of the WAN address to LAN is not needed in this case unless you make FreeSWITCH bind to the LAN.



  • tusc notified me of some bugs he had found today. An issue where in some cases you would see an error on the 'Rec' tab. And there was a problem on the 'Dialplan' tab if you edited and then saved the dialplan the dialplan information was being saved to the wrong position xml path in pfSense. These bugs have been fixed. It is highly recommended you upgrade your install.

    Make sure you are using version 0.4.2 or higher. To do this use the backup button on the status tab then remove the package and install it again.

    Please feel free to post suggestions, encouragement, or bugs so they can be fixed immediately.

    Best Regards,

    Mark



  • Another improvement to note the FreeSWITCH package no longer requires the LAN interface to drive the 'Status' page and some of the other socket communication. This clears the way for appliance support.

    Conference:
    Default config has three sets of conference lines one for 8khz, 16khz and 32khz audio.

    8khz extension 3001-3099
    16khz extensions 3101-3199
    32khz extensions 3201-3299

    IVR example:
    5000

    Call Park:
    park 5900
    unpark 5901

    Echo Test:
    9996

    Hold Music:
    9999

    Call Groups
    Ring several phones at once. Ring all phone extensions in a group all at once or in order. Any two digit group number may be used. The following example will use group number 01.

    Add to Group
    81[2 digit group number]
    Calling Extension 8101 will add the current phone to group 01.

    Delete from Group
    80[2 digit group number]

    Calling Extension 8001 will remove the current phone extension from group 01.

    Ring Group Simultaneous
    82[2 digit group number]

    Calling Extension 8201 will ring all phone extensions in group 01.

    Ring Group Order
    83[2 digit group number]

    Calling Extension 8201 will ring the first phone extensions in group 01 followed by the next phone in the group and then ring the next phone extension in the group until the call is answered.

    More options available they are defined under the 'Dialplan' 'default.xml' button.



  • pfSense user: tusc has found a bug that is now fixed in the latest version 0.4.5. It has to do with using multiple conditions when working with the 'Public' tab. This issue also affected and has been fixed for the 'Dialplan'. Thanks tusc for finding and notifying me so that this could be improved.



  • FreeSWITCH package is now working on pfSense 2.0 even when run with only 1 interface (appliance mode).



  • I just want to say that having this package is awesome.
    I've always been intimidated by SIP, except to get a PAP2 running at home.
    I know a lot of us newbs looking at this are still overwhelmed, but I know after some more reading I will try it out.  For a newb to sip, there are so many options that I don't exactly know where to start.  Ok, ok, I do know, more reading :)

    I will say that making this available here is extremely encouraging.  I am finally starting to see the light at then end of the tunnel.

    Thank you for all your hard work  "mcrane"



  • Sorry if this is a bit off topic…but is there a reason you (MCCRANE) chose FreeSWITCH vs something like sipXecs as a package?



  • scottnguyen:

    sipXecs looked pretty good here is my reasons for not going with it.
    1. sipXecs already has a GUI and a company backing it. I'm not sure what language the GUI was in by I wanted one in PHP.
    2. I'm not an expert on sipXecs but my impression is its limited to SIP only.
    3. sipXecs is LGPL which I like better than the GPL however I like the MPL even better than the LGPL.

    Spend some time to learn more about FreeSWITCH it will be worth your time.

    FreeSWITCH configuration by default is XML. pfSense's config is stored in XML. So it seemed a good fit.

    FreeSWITCH is also modular, extensible, scalable, multi-platform, can interface with multiple languages, remote access is possible over xml rpc, over a network socket, can be a VoIP SWITCH, Proxy, soft phone, and/or PBX.



  • tester_02: Configuring the linksys pap2t is a good start. Reading about FreeSWITCH here on the forum should help. In addition to that take a look at http://wiki.freeswitch.org. Do your best to read through the information then feel free to ask questions. Good Luck!

    I mentioned this in a comment on the blog but want to make sure it gets noticed.

    Voicemail.

    To access your voicemail you can dial extension 4000 then your id (extension number) then the voicemail password. This can be accessed from any extension on the system or from any phone through the IVR (auto attendant).

    In addition to that if your extension is 1001 and you were currently on that extension you simply call extension 1001 and it will go to your voicemail.



  • I'm pretty interested in this package.  I've had an asterisk server running for … years? behind a pfsense box; it works great.

    I'm a little leary of having to learn freeSwitch; I've got all my steps and knowledge down for installing ubuntu server and then asterisk / FreePBX on top of it.

    But reducing the number of manchines running in my house by one is very appealing.  My config is pretty simlpe too; so I don't forsee any problems migrating.  I do have a couple 'if this line rings; call my cell / voip phone / house phone until one of them picks up' - I'd hate to lose that sort of functionality.

    And with FreePBX just putting freeSwitch on their coming soon page; this could all get very interesting fast.

    Just wanted to state my interest as well; I look forward to trying this out soon.



  • Installed the freeswitch package, upgraded to Rc3, saw these errors at the bottom of the page during the reinstall after upgrade:

    Warning: fsockopen(): unable to connect to 76.11.76.41:8021 in /usr/local/pkg/freeswitch.inc on line 92 Warning: socket_set_blocking(): supplied argument is not a valid stream resource in /usr/local/pkg/freeswitch.inc on line 93 Warning: fsockopen(): unable to connect to 192.168.1.1:8021 in /usr/local/pkg/freeswitch.inc on line 92 Warning: socket_set_blocking(): supplied argument is not a valid stream resource in /usr/local/pkg/freeswitch.inc on line 93 no handle 
    

    I'm guessing this is just because there is no rule for the event socket.  Solution is to surpress these warnings?  Or warn that ports should be opened?  Or option 3, I missed the mark completely.


Locked