Difference between revisions of "ENUM"

From FusionPBX
Jump to: navigation, search
(Enum Dialplan)
(Description of ENUM)
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This is really pretty easy to set up.
+
==Description==
 +
This is really pretty easy to set up. A very large benefit of VoIP that everyone talks about is saving money. That's where 'ENUM 164' (also know as enum and e164) comes into the picture. ENUM is a method that stores numbers within the Internet's DNS. www.E164.org allows Voice over IP systems to place and receive telephone calls over the Internet, without using public switched telephone network (PSTN). When you AND the person you are calling use ENUM, you don't have to use PSTN. When you don't use PSTN, you don't have to pay your gateway provider. So, ENUM = Free calling!
 +
 
 +
Once you AND the person you are calling have registered your DIDs with ENUM there are some really nice benefits, for example:
 +
*Free calling
 +
*If both sides support g722, then callers get twice the audio quality
 +
*If both sides support h263 or h264, callers could even make video calls
 +
 
 +
Please add to this wiki if you have discovered anything cool or useful that was not discussed.
  
 
==Fix enum.conf.xml==
 
==Fix enum.conf.xml==
Line 8: Line 16:
 
  <route service="E2U+SIP" regex="sip:(.*)" replace="sofia/internal/$1"/>
 
  <route service="E2U+SIP" regex="sip:(.*)" replace="sofia/internal/$1"/>
  
==Enum Dialplan==
+
==Option 1: Add Outbound Route==
 +
On the latest version of FusionPBX you can use the Outbound Route add tool to try Enum before sending the call to your Gateway. For the first 'Gateway' select 'enum' and the 'Alternate gateway choose your regular Gateway. This will try enum first and if the call fails to bridge with enum it will send your call to your regular gateway.
 +
 
 +
==Option 2: Dialplan==
 +
Make sure to change YOUR_AREA_CODE
 
  vim /usr/local/freeswitch/conf/dialplan/default/00000_enum.xml
 
  vim /usr/local/freeswitch/conf/dialplan/default/00000_enum.xml
  
Line 14: Line 26:
 
       <condition field="destination_number" expression="^(\d{7})$">
 
       <condition field="destination_number" expression="^(\d{7})$">
 
         <action application "log" data="INFO Checking 7-dig Enum"/>
 
         <action application "log" data="INFO Checking 7-dig Enum"/>
         <action application="set" data="continue_on_fail=true"/>
+
        <action application="set" data="call_direction=outbound" />
         <action application="enum" data="1361$1 e164.org"/>
+
         <action application="set" data="continue_on_fail=true" />
 +
        <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
 +
        <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
 +
        <action application="set" data="hangup_after_bridge=true" />
 +
         <action application="enum" data="1YOUR_AREA_CODE$1 e164.org"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
 
       </condition>
 
       </condition>
Line 23: Line 39:
 
       <condition field="destination_number" expression="^(\d{10})$">
 
       <condition field="destination_number" expression="^(\d{10})$">
 
         <action application "log" data="INFO Checking 10-dig Enum"/>
 
         <action application "log" data="INFO Checking 10-dig Enum"/>
         <action application="set" data="continue_on_fail=true"/>
+
        <action application="set" data="call_direction=outbound" />
 +
         <action application="set" data="continue_on_fail=true" />
 +
        <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
 +
        <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
 +
        <action application="set" data="hangup_after_bridge=true" />
 
         <action application="enum" data="1$1 e164.org"/>
 
         <action application="enum" data="1$1 e164.org"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
Line 32: Line 52:
 
       <condition field="destination_number" expression="^(\d{11})$">
 
       <condition field="destination_number" expression="^(\d{11})$">
 
         <action application "log" data="INFO Checking 11-dig Enum"/>
 
         <action application "log" data="INFO Checking 11-dig Enum"/>
         <action application="set" data="continue_on_fail=true"/>
+
        <action application="set" data="call_direction=outbound" />
 +
         <action application="set" data="continue_on_fail=true" />
 +
        <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
 +
        <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
 +
        <action application="set" data="hangup_after_bridge=true" />
 
         <action application="enum" data="$1 e164.org"/>
 
         <action application="enum" data="$1 e164.org"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
Line 41: Line 65:
 
       <condition field="destination_number" expression="^(011.*)$">
 
       <condition field="destination_number" expression="^(011.*)$">
 
         <action application "log" data="INFO Checking 15-dig Enum"/>
 
         <action application "log" data="INFO Checking 15-dig Enum"/>
         <action application="set" data="continue_on_fail=true"/>
+
        <action application="set" data="call_direction=outbound" />
 +
         <action application="set" data="continue_on_fail=true" />
 +
        <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
 +
        <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
 +
        <action application="set" data="hangup_after_bridge=true" />
 
         <action application="enum" data="$1 e164.org"/>
 
         <action application="enum" data="$1 e164.org"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
 
         <action application="bridge" data="${enum_auto_route}"/>
Line 49: Line 77:
 
==e164.org==
 
==e164.org==
 
Go to e164.org and register your DID's so the rest of us can call you for free :)
 
Go to e164.org and register your DID's so the rest of us can call you for free :)
 +
 +
When adding your DID to enum you will be asked to provide the Protocol and Hostname. If your domain was voip.example.com then you would add the following:
 +
 +
'''Protocol:''' SIP
 +
 +
'''Hostname:''' voip.example.com:5080
 +
 +
After adding this information you will receive a test call with numbers that are used to validate the information you provided. When completed you should see 'status: active'

Latest revision as of 20:00, 26 July 2011

Description

This is really pretty easy to set up. A very large benefit of VoIP that everyone talks about is saving money. That's where 'ENUM 164' (also know as enum and e164) comes into the picture. ENUM is a method that stores numbers within the Internet's DNS. www.E164.org allows Voice over IP systems to place and receive telephone calls over the Internet, without using public switched telephone network (PSTN). When you AND the person you are calling use ENUM, you don't have to use PSTN. When you don't use PSTN, you don't have to pay your gateway provider. So, ENUM = Free calling!

Once you AND the person you are calling have registered your DIDs with ENUM there are some really nice benefits, for example:

  • Free calling
  • If both sides support g722, then callers get twice the audio quality
  • If both sides support h263 or h264, callers could even make video calls

Please add to this wiki if you have discovered anything cool or useful that was not discussed.

Fix enum.conf.xml

vim /usr/local/freeswitch/conf/autoload_configs/enum.conf.xml

Find:

<route service="E2U+SIP" regex="sip:(.*)" replace="sofia/${use_profile}/$1"/>

Change it to:

<route service="E2U+SIP" regex="sip:(.*)" replace="sofia/internal/$1"/>

Option 1: Add Outbound Route

On the latest version of FusionPBX you can use the Outbound Route add tool to try Enum before sending the call to your Gateway. For the first 'Gateway' select 'enum' and the 'Alternate gateway choose your regular Gateway. This will try enum first and if the call fails to bridge with enum it will send your call to your regular gateway.

Option 2: Dialplan

Make sure to change YOUR_AREA_CODE

vim /usr/local/freeswitch/conf/dialplan/default/00000_enum.xml
<extension name="7e164.org" continue="true">
     <condition field="destination_number" expression="^(\d{7})$">
       <action application "log" data="INFO Checking 7-dig Enum"/>
       <action application="set" data="call_direction=outbound" />
       <action application="set" data="continue_on_fail=true" />
       <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
       <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
       <action application="set" data="hangup_after_bridge=true" />
       <action application="enum" data="1YOUR_AREA_CODE$1 e164.org"/>
       <action application="bridge" data="${enum_auto_route}"/>
     </condition>
   </extension>

   <extension name="10e164.org" continue="true">
     <condition field="destination_number" expression="^(\d{10})$">
       <action application "log" data="INFO Checking 10-dig Enum"/>
       <action application="set" data="call_direction=outbound" />
       <action application="set" data="continue_on_fail=true" />
       <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
       <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
       <action application="set" data="hangup_after_bridge=true" />
       <action application="enum" data="1$1 e164.org"/>
       <action application="bridge" data="${enum_auto_route}"/>
     </condition>
   </extension>

   <extension name="11e164.org" continue="true">
     <condition field="destination_number" expression="^(\d{11})$">
       <action application "log" data="INFO Checking 11-dig Enum"/>
       <action application="set" data="call_direction=outbound" />
       <action application="set" data="continue_on_fail=true" />
       <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
       <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
       <action application="set" data="hangup_after_bridge=true" />
       <action application="enum" data="$1 e164.org"/>
       <action application="bridge" data="${enum_auto_route}"/>
     </condition>
   </extension>

   <extension name="15e164.org" continue="true">
     <condition field="destination_number" expression="^(011.*)$">
       <action application "log" data="INFO Checking 15-dig Enum"/>
       <action application="set" data="call_direction=outbound" />
       <action application="set" data="continue_on_fail=true" />
       <action application="set" data="effective_caller_id_name=${outbound_caller_id_name}" />
       <action application="set" data="effective_caller_id_number=${outbound_caller_id_number}" />
       <action application="set" data="hangup_after_bridge=true" />
       <action application="enum" data="$1 e164.org"/>
       <action application="bridge" data="${enum_auto_route}"/>
     </condition>
   </extension>

e164.org

Go to e164.org and register your DID's so the rest of us can call you for free :)

When adding your DID to enum you will be asked to provide the Protocol and Hostname. If your domain was voip.example.com then you would add the following:

Protocol: SIP

Hostname: voip.example.com:5080

After adding this information you will receive a test call with numbers that are used to validate the information you provided. When completed you should see 'status: active'