Testing / Configuring a VoIP Provider / SIP Trunk for use with 3CX

Whilst 3CX has a significant number of certified interop partners, in some cases it might be required to work with an untested and/or uncertified VoIP Provider. In these cases you must do a full test run of the VoIP provider to ensure that it will work correctly with the 3CX Phone Sytem. This article explains how.

Pre-Requisites

  1. You must have at least one (ideally two) external telephone lines available for testing – note that:
    • This must be in ADDITION to your lines connected to 3CX Phone System, and should NOT be connected to 3CX Phone System or any other PBX.
    • This line must NOT have its CallerID withheld. When you make a call from this line to some other phone, the destination phone MUST be able to see the number of the line originating the call. Without this, the tests for outbound CallerID will be invalid.
    • One of these tests will require to have two separate lines to test a call that is received over your VoIP provider account, and which needs to be re-routed to some external number ALSO from the same VoIP Provider account.
    • Typically you would use analogue lines or cell phones for this component.
    • We will refer to these lines as “LINE1” and “LINE2” throughout the rest of this document.
  2. You must create an outbound rule for testing outbound calls. For the purposes of this test, we strongly suggest to:
    • Set the “Calls to numbers starting with (Prefix)” field to “9”.
    • Set the “Calls to extension(s)” field to blank.
    • Set the “Calls to numbers with a length of” field to blank.
    • For the Route labelled “Route 1”:
      • Set the “Route” field to the VoIP Provider account you have created for testing.
      • Set the “Strip Digits” field to “1”.
      • Set the “Prepend” field to be empty or blank.
  3. Ensure, by communicating with your VoIP Provider, that CallerID is enabled BOTH inbound AND outbound.
  4. Ensure that in the advanced page of the 3CX Management Console for your VoIP Provider:
    • Set the “Supports Re-Invite” field to DISABLED.
    • Set the “Supports Replaces” field to DISABLED.
    • Set the “PBX Delivers Audio” field to ENABLED.
  5. You must create two extensions via the 3CX Management Console where:
    • For BOTH Extensions:
      • Voicemail Option must be ENABLED.
      • The Voicemail mailbox should be empty.
      • The PIN for both extensions should be set to “1234567890”.
      • The “Continue Ringing” field in the “Forwarding Rules” tab should be set to 60 seconds.
      • The “Busy Detection Mechanism” field on the “Forwarding Rules” tab should be set to “Use PBX Status”.
      • There should be NO forwarding rules in the list.
      • The “User Status” field in the “Other” tab should be set to “Available”.
      • The “Queues Status” field in the “Other” tab should be set to “Logged In”.
    • For the FIRST Extension:
      • Set the “Outbound Caller ID” field in the “Other” tab to blank.
      • We will be referring to this extension as “EXT1” throughout the rest of this document.
    • For the SECOND Extension (which will be used for most of the tests):
      • Set the “Outbound Caller ID” field on the “Other” tab to the first DID Number assigned to you by your VoIP Provider.
      • We will be referring to this extension as “EXT2” throughout the rest of this document.
  6. Register the two extensions created in the previous step using 3CXPhone in both cases. Please note that the two extensions MUST NOT be on the same machine as the 3CX Phone System.
  7. Create a Digital Receptionist with an audio prompt containing, for example, the message “Welcome to the TEST Digital Receptionist”. All the key options should be left BLANK. The Timeout option should also be left BLANK. We will be referring to this Digital Receptionist as “DR1” throughout the rest of this document.
  8. Create a Ring Group, using the “Ring All” strategy, and make the two extensions created previously both members of the Ring Group. We will be referring to this Ring Group as “RG1” throughout the rest of this document.
  9. Create a Call Queue, using the “Hunt” strategy, set the “Ring Timeout” field to 15 seconds, and make the two extensions created previously both members of the Call Queue. Please note that the order in which the extensions are added to the queue is important: ensure that the FIRST extension (as described above) is the first in the list, and that the SECOND extension (as described above) is the second in the list. We will be referring to this Queue as “QUE1” throughout the rest of this document.
  10. Go to the “Settings” > “Advanced” page, then click the “Custom Parameters” tab. Identify the row for the parameter called “VMDIALOUTENABLED”. By default the value for this parameter is set to “0”, or may be undefined. Set the value to “1” for the duration of this test – ensure that you revert to the previous value after your tests are complete or, if the value was undefined, ensure you set the value to “0” after your tests are complete.

Part 1 – VoIP Provider Configuration and Pre-Requisites

This document applies for BOTH registration-based AND trunk-style VoIP Provider Connections. Note that:

  • If you are configuring a registration-based VoIP provider account, you should choose the “Generic VoIP Provider” template.
  • If you are configuring a trunk-style VoIP provider account, you should choose the “Generic SIP Trunk” template.

To configure your VoIP Provider Account, please review the “Configuring VoIP Providers” article.

Create at least two of the DID numbers assigned to you by your VoIP Provider, and ensure that they route inbound calls correctly.
We will be referring to them as “DID1” and “DID2” throughout the rest of this document. Go to the “Advanced” tab for your VoIP Provider account, and ensure that the audio codecs are listed in the following priority:

  • G.729
  • GSM-FR (or GSM)
  • G.711 U-Law (or PCMU)
  • G.711 A-Law (or PCMA)

Part 2 – Running Tests to Optimize Interoperability (Inbound)

Check for Successful Registration

Go to the “Ports/Trunks Status” page and ensure that the status of the VoIP Provider account you are testing is “Registered (idle)”.

  1. In the case of a registration-based VoIP Provider account, if the status is showing as “Not Registered”, you will need to review your configuration. You will not be able to reliably proceed with this test until this step is completed.
  2. Since trunk-style connections do NOT register with the VoIP Provider, the status for this type of account will always show up as “Registered”.

Check that the Provider correctly sends a CANCEL when remote caller rings in and hangs up

  1. Set DID1 to route calls to EXT1 inside and outside office hours.
  2. Set DID2 to route calls to EXT2 inside and outside office hours.
  3. Make an inbound call from LINE1 to DID1:
    • EXT1 will ring. Do NOT answer.
    • Ensure that the EXT1 Display shows the Caller’s Number (or Caller ID).
    • LINE1 should hang up after about 20 seconds of ringing time. EXT1 should stop ringing, and should show “Hung Up” on the display.
  4. Make an inbound call from LINE1 to DID2:
    • EXT2 will ring. Do NOT answer.
    • Ensure that the EXT2 Display shows the Caller’s Number (or Caller ID).
    • LINE1 should hang up after about 20 seconds of ringing time. EXT2 should stop ringing, and should show “Hung Up” on the display, and should show an entry in the “Missed Calls” list.

Note: Be aware that the format of the Caller ID visible on the display on EXT1 and EXT2 may vary depending on whether the source of an inbound call is local, long distance, or international, and depending on the source of the call, some VoIP Provider services may not be able to show Caller ID.

Check correct delivery of ACK from Provider to PBX

  1. Set DID1 to route calls to EXT2 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. EXT2 should pick up the call after about 10 seconds. Keep the call active for an additional 45 seconds, and ensure that there is 2-way audio throughout.
  4. LINE1 should hang up. EXT2 should show “Hung Up” on the display, and should show an entry in the “Received Calls” list.

Check Hold / Resume functionality

  1. Set DID1 to route calls to EXT2 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. EXT2 should pick up the call after about 10 seconds. Keep the call active for an additional 10 seconds, and ensure that there is 2-way audio throughout.
  4. EXT2 should place the call on hold. Ensure that the remote caller can hear the Music-On-Hold audio.
  5. EXT2 should resume the call. Keep the call active for an additional 45 seconds, and ensure that there is 2-way audio throughout.
  6. LINE1 should hang up. EXT2 should show “Hung Up” on the display, and should show an entry in the “Received Calls” list.

Check correct receipt of BYE from Provider

  1. Set DID1 to route calls to EXT2 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. EXT2 should pick up the call after about 10 seconds.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Connected”
    • In the “Extension Status” page, EXT2 should show status “Connected”.
  4. LINE1 should hang up. EXT2 should show “Hung Up” on the display, and should show an entry in the “Received Calls” list.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Registered (idle)”.
    • In the “Extension Status” page, EXT2 should show status “Registered (idle)”.

Check correct handling of BYE by Provider

  1. Set DID1 to route calls to EXT2 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. EXT2 should pick up the call after about 10 seconds.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Connected”.
    • In the “Extension Status” page, EXT2 should show status “Connected”.
  4. EXT2 should hang up. EXT2 should briefly show “Call Ended (x seconds)” on the display, and should show an entry in the “Received Calls” list.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Registered (idle)”.
    • In the “Extension Status” page, EXT2 should show status “Registered (idle)”.

Testing inbound DTMF and DR/AA interoperability

  1. Set DID1 to route calls to DR1 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. DR1 will respond – ensure that the DR1 audio prompt can be heard by the remote caller.
  4. LINE1 should dial the VoiceMail Special Number (default 999 for a 3-digit installation).
  5. DR1 will announce a request for the Extension Number.
  6. LINE1 should dial the Extension Number for EXT2.
  7. DR1 will announce a request for the PIN.
  8. LINE1 should dial the PIN followed by the “#” key.
  9. DR1 will announce the Voicemail Main Menu.
  10. LINE1 should hang up.

Testing correct interoperability with Ring Group

  1. Set DID1 to route calls to RG1 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1.
  3. EXT1 and EXT2 will ring simultaneously. EXT2 should answer the call after about 10 seconds.
  4. Keep the call active for an additional 45 seconds, and ensure that there is 2-way audio throughout.
  5. LINE1 should hang up.

Testing correct interoperability with Queue

  1. Set DID1 to route calls to QUE1 inside and outside office hours.
  2. Make an inbound call from LINE1 to DID1 – ensure that the QUE1 audio prompt can be heard by the remote caller.
  3. EXT1 should ring for 15 seconds, and then stop.
  4. EXT2 should ring. EXT2 should answer the call after about 5 seconds. Keep the call active for an additional 45 seconds, and ensure there is 2-way audio throughout.
  5. Perform a BLIND transfer to EXT1, and ensure that LINE1 hears MOH during the time that EXT1 is ringing (after the transfer).
  6. EXT1 should ring. EXT1 should answer the call after about 5 seconds. Keep the call active for an additional 45 seconds, and ensure there is 2-way audio throughout.
  7. Perform an ATTENDED transfer to EXT2, and ensure that LINE1 hears MOH during the time that LINE1 is in the “on-hold” part of the transfer.
  8. EXT2 should ring. EXT2 should answer the call after about 5 seconds. Keep the call active for an additional 45 seconds, and ensure there is 2-way audio throughout.
  9. EXT2 should hang up.

Testing re-route of call to an external number via same provider

  1. Add a Forwarding Rule to EXT1:
    • Forward ALL Calls, for ALL Hours, for ALL Types of Calls, To an External Number – which should be 9 + the number for LINE2.
  2. Set DID1 to route calls to go to EXT1 inside and outside office hours.
  3. Make an inbound call from LINE1 to DID1.
  4. LINE2 should ring. LINE2 should answer the call after about 5 seconds. Keep the call active for an additional 45 seconds, and ensure there is 2-way audio throughout.
  5. LINE2 should hang up.

Part 3 – Running Tests to Optimize Interoperability (Outbound)

Check correct delivery of ACK from PBX to Provider

  1. Make an outbound call from EXT2 to LINE1 by dialling 9 + the number for LINE1.
  2. LINE1 should ring. LINE1 should answer the call after about 5 seconds. Keep the call active for an additional 45 seconds, and ensure there is 2-way audio throughout. Also ensure that the LINE1 phone shows the number for DID1.

Check correct delivery of BYE from PBX to Provider

  1. Make an outbound call from EXT2 to LINE1 by dialling 9 + the number for LINE1.
  2. LINE1 should ring. LINE1 should pick up the call after about 10 seconds.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Connected”.
    • In the “Extension Status” page, EXT2 should show status “Connected”.
  3. EXT2 should hang up. EXT2 should briefly show “Call Ended (x seconds)” on the display, and should show an entry in the “Received Calls” list.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Registered (idle)”.
    • In the “Extension Status” page, EXT2 should show status “Registered (idle)”.

Check correct delivery of BYE from Provider to PBX

  1. Make an outbound call from EXT2 to LINE1 by dialling 9 + the number for LINE1.
  2. LINE1 should ring. LINE1 should pick up the call after about 10 seconds.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Connected”.
    • In the “Extension Status” page, EXT2 should show status “Connected”.
  3. LINE1 should hang up. EXT2 should show “Hung Up” on the display, and should show an entry in the “Received Calls” list.
    • In the “Ports/Trunks Status” page, the VoIP Provider should show status “Registered (idle)”.
    • In the “Extension Status” page, EXT2 should show status “Registered (idle)”.

If all the above tests pass, then you have successfully completed the VoIP Provider test.

Further Reading

Creating VoIP Provider Templates

Liked this article?


Get notified of new articles
or share
You might also be interested in: