Tuesday, June 9, 2009

Sorry for my terrible absence from posting on the blog. Our firm has been extremely busy with a lot of exciting projects including the acquisition of a healthcare IT provider. So this, combined with the fact that I am a slacker, is my excuse for my terrible absence:)

It's the partner bootcamp in Chicago today. Just started a little while ago and Brian Conway is presenting some great info about the upcoming features in v8 of 3CX.

He indicated that we can expect the v8 beta coming out in July this year. So that's pretty exciting. I am also very excited becasue the coffee machines at the Microsoft Training Center have progress bars on them. Now, my life of watching progress bars is complete.
Other cool items we are excited about, call boomerang, enhanced CRM integration, SecureRTP, Skype Gateway, LDAP integration to Active Directory, remote phone reboots, and many more!

I will be starting the technical training shortly....for those of you that are forced to listen to my mindless garble, I apologize scincerely, later on there will be beer adn life will be better:)



Sunday, March 22, 2009

Sorry I have been absent for the last month from my postings. I have been absolutely swamped with installs and support. Which, in this economy, is a good thing.

Over the last month I have done work for several 3CX customers who are using 3CX as a softswitch to provide VoIP services to business and residential customers. Let's assume the customer is feeding 3CX with a SIP Trunk. In this scenario, the customer typically wants each extension to outpulse a different CallerID to the world. The issue is, by default, 3CX will send the authentication ID you have configured on the Trunk (typically the main number assigned to the trunk by the SIP provider). So, how do we do this?

The first thing I will caution, is that you must check with your SIP Trunk carrier to verify they will accept caller ID from your 3CX system. Some providers override anything you send. Now, assuming they will accept this data form you on each call, you need to find out which SIP header fields they need this data to be in. The most common are for it to be in the From: and the Contact: fields of the outgoing INVITE from 3CX to the SIP carrier. So, we need to do some advanced customization of our SIP headers on our main outbound SIP Trunk.

  1. On your VoIP Provider account go to 'Outbound Paramaters'
  2. Set the 'From: Display Name', 'From: User Part', "Contact: User Part' fields to "CallerNum".
  3. Set the Outbound Caller ID field on each extension in Extension->Other->Outbound Caller ID to be the value you want to outpulse for each extension.

You will now be sending your customized Caller ID in your SIP INVITE.

Happy 3CXing!!!!



Tuesday, January 27, 2009


Acme Corp is a small manufacturer of baby toys in the US. They are headquartered in San Antonio, Texas with a second small office in India. The San Antonio office employs 40 staff and provides its customers with a critical support line (CSL) to call to report important problems with their toys or to get information on potential toy recalls. Over the last year, Acme has been expanding sales in the US and Europe. Because of this, Acme corp is experiencing an increase in calls to their CSL that are coming outside of their standard US operating hours of 8AM-5PM Central Time. The CEO of Acme Corp has decided to rent a small office in India and hire 2 call agents to work in that office and provide extended hours phone support for the CSL. The IT department has already completed integration of the WAN between the new India office and the San Antonio headquarters. Primary Internet is fed into the San Antonio office and provided to the India office via the existing WAN connection. No phone lines or voip services have been purchased.

Problem Scenario/Requirements:

  1. From the hours of 5AM-8PM CST, all calls to the CSL are to be answered in the US by a 4 agent team. Outside of these hours, calls to the critical support line are to be answered by the India office's 2 agent team.

  2. The CEO has requested that this be done in the most cost effective way posible while still meeting the other requirements.

  3. The solution must be tolerant of a WAN link failure between sites.

  4. The solution must be tolerant of a loss of Internet connectivity or a primary Telco failure in San Antonio (not both).

  5. Any callers waiting to speak with an agent during the answering shift from US to India (morning or evening) must be seemlessly shifted to the other answering team.

  6. All calls inbound to the CSL (and only the CSL) must be recorded. When agents make outbound calls, these should not be recorded. This functionality must be automatic and require no special intervention by the agent.

  7. No voicemail is to be used for the CSL. Calls must be answered or held until an agent is available. Individual agents are permitted to have voicemail boxes.

  8. The solution must support at least 12 concurrent calls to the CSL and be easily scalable.

Have fun!

Submit your solution as a comment. I have to release comments for posting so I will hold them until the 2 weeks is up. You can post questions if you want and I will answer and post for all to read during the 2 weeks, but I would like to keep questons to a minimum and base the solution off the info you see. Don't ask me "what I am looking for" for a particular item. That's up to you!

Happy 3CXing!!!!



Saturday, January 24, 2009

So, as I'm sure everyone can tell, one of my favorite things to do is come up with creative ways to solve 3CX challenges. Sometimes, these are just creatively leveraging existing features in a unique way and sometimes it's completely hacking the heck out of the thing to make it bend and submit to my will!

So, I have decided to begin creating bi-weekly challenges. Every other week I will post a new 3CX related problem that I will be challenging readers to solve. Everyone who would like to submit a response will simply need to post a comment in response to the original post. Since I moderate the comments, I will review everything at the end of the challenge period before posting the winner (and other good solutions). This way nobody should be able to leverage anyone else's ideas. Just make sure to include your name on your post so I don't have to credit "anonymous" winners.

What do you win? Just my undivided admiration and praise until the next winner is crowned.

Quartlerly, I plan to decide which solution submitted during that quarter is judged to be the best one and that lucky poster will win an Amazon gift card. I have debated having a giant, gold-plated, heavyweight wrestling belt made that the winner could wear proudly around town. But I decided to go with the gift card.

Happy 3CXing!!!!



Wednesday, January 14, 2009

The new patch was released yesterday for general download. Many bug fixes and some nice little enhancements as well.

Good job guys. Keep up the good work!



Tuesday, January 13, 2009

I always have clients who want to be able to more easily record their DR messages. Or, at least the main one at the top level. So, I set out on a quest to figure out how to do this. Obviously, long term, it will make more sense for 3CX to make this a real extension we can record from the IVR for...but at the moment it is not...so here we go.....

I will preface this with my usual...I like to do things that are completely unsupported to my PBX:) If you break your PBX doing this, 3CX is not going to support you nor will I. You use these instructions at your own risk.

Alrighty then!.....

  1. Create a voicemail enabled extension in 3cx. Let's call mine 9997.
  2. Call in and record your greeting annoucement for this extension. In the directory "C:\Program Files\3CX PhoneSystem\Data\Ivr\Voicemail\Data\extnum" you will find the file SaveVMGreeting.wav. This is the recording you just made.
  3. Now, create your digital receptionist. When you upload the wav file select the recording from the previous step. in my case this is located here "C:\Program Files\3CX PhoneSystem\Data\Ivr\Voicemail\Extensions\9997"
  4. Now, delete the SaveVMGreeting.wav file from the "C:\Program Files\3CX PhoneSystem\Data\Ivr\Voicemail\Data\extnum" directory.
  5. After creation of the digital receptionist in step 3, you will notice this file has been uploaded here..."C:\Program Files\3CX PhoneSystem\Data\Ivr\Prompts". Make a backup copy of this directory just in case you mung it up ;)
  6. Download junction from http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
  7. Extract junction.exe and put it somewhere on your PC
  8. Go to a command prompt and CD to the location you put Junction.exe
  9. Run the command.. junction.exe "C:\Program Files\3CX PhoneSystem\Data\Ivr\Voicemail\Data\extnum" "C:\Program Files\3CX PhoneSystem\Data\Ivr\Prompts" making sure to replace extnum with your extension number from step 1.

OK, now the voicemail greeting directory for the extension you created (for me 9997) is symbolically linked to your prompts directory and the wav file in use for the digital recptionist is SaveVMGreeting.wav and is located inside the prompts directory. This basically tricks the file system so that whenever you record your VM greeting for the extension your created you are really overwriting your Digital Receptionist message.


Whats the result of this? Whenever the voicemail prompt in direct extnum is re-recorded it is actually replacing the SaveVMGreeting.wav file in the prompts directory and hence allowing you to record your digital receptionist message very easily.

This will only work for 1 level of your digital receptionist since all VM recordings have the same file name.

Is this a total hack? Yes! But it's beautiful isn't it? :)

Happy 3CXing!!!!



Sunday, January 11, 2009

So, after spending time analyzing the SIP interactions it appears that the Aastra's reboot when they receive a "200 OK" message back from 3CX after registration/re-registration. Occasionally, 3CX is sending back a "200 OK" without a contact field in it. The aastra seems to not handle this well and cause a reboot after crashing the SIP engine on the phone.

I suspect this occuring with all phones but only getting noticed on the aastra 5xi family because of poor error handling by aastra.