Feb 10

How to enable per extension CallerID in PBXinaFlash (PIAF) with Cbeyond and Speakeasy (Updated for Asterisk 1.8)

By agatewood VoIP Comments Off on How to enable per extension CallerID in PBXinaFlash (PIAF) with Cbeyond and Speakeasy (Updated for Asterisk 1.8)

Note: This is an update of an article written in April 2010 (http://blog.n3tg33kz.com/2010/04/how-to-enable-per-extension-caller-id-in-pbxinaflash-piaf-with-cbeyond-and-speakeasy/) and has been updated to work with Asterisk 1.8 based PBXinaFlash (www.pbxinaflash.com). It probably works with most PBXes that use FreePBX (www.freepbx.org). The procedures in this update were tested using PBX in a Flash 1.7.5.X.

This setup will enable per extension CallerID to be sent through your SIP trunk provider. It also enables CID to be passed through the system when a call is forwarded. This allows the receiver of the forwarded call to see the calling parties CID rather than the CID of the trunk or PBX. This setup also circumvents a common problem when a phone is forwarded, wherein all attempted calls to the forwarded extension fail with a ’604 Does Not Exist Anywhere’ error being returned from the provider.

This has been tested with Cbeyond SIPconnect and Speakeasy SIP Trunking and is likely to work with any provider that uses a BroadWorks platform to deliver SIP trunks. The CID functionality is accomplished by adding a diversion header into the call setup.

First, connect to your PBXinaFlash PBX and edit /etc/asterisk/extensions_override_freepbx.conf using your favorite text editor. (You will most likely want to connect to your PBXinaFlash system via SSH using a client like PuTTY.) The file will probably be empty except for a comment in the first line. Add the following lines to the file (note the changes to the 3rd to the last line below):

[macro-outbound-callerid]
include => macro-outbound-callerid-custom
exten => s,1,ExecIf($[“${CALLINGPRES_SV}” != “”],SetCallerPres,${CALLINGPRES_SV})
exten => s,n,ExecIf($[“${REALCALLERIDNUM:1:2}” = “”],Set,REALCALLERIDNUM=${CALLERID(number)})
exten => s,n(start),GotoIf($[ $[“${REALCALLERIDNUM}” = “”] | $[“${KEEPCID}” != “TRUE”] | $[“${OUTKEEPCID_${ARG1}}” = “on”] ]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($[“foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}” = “foo”]?bypass)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)})
exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
exten => s,n,GotoIf($[“${EMERGENCYROUTE:1:2}” = “” | “${EMERGENCYCID:1:2}” = “”]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n(exit),MacroExit()
exten => s,n(trunkcid),ExecIf($[“${TRUNKOUTCID:1:2}” != “”],Set,CALLERID(all)=${TRUNKOUTCID})
exten => s,n(usercid),ExecIf($[“${USEROUTCID:1:2}” != “”],Set,CALLERID(all)=${USEROUTCID})
exten => s,n(usercid),SIPAddHeader(Diversion:<sip:NPANXXXXXX@provider.domain.or.proxy>;reason=unconditional)
exten => s,n,ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})}))
exten => s,n(hidecid),ExecIf($[“${CALLERID(name)}”=”hidden”],SetCallerPres,prohib_passed_screen)
; end of [macro-outbound-callerid]

Next, in the 3rd to the last line, you will need to customize the string that reads ‘<sip:NPANXXXXXX@provider.domain.or.proxy>‘. Replace ‘NPANXXXXXX’ with your main phone number. On Cbeyond, this is also your username. If you are on Cbeyond, replace ‘provider.domain.or.proxy’ with the FQDN of the Cbeyond proxy (will be similar to ‘sipconnect.atl0.cbeyond.net’). If you use Speakeasy, replace ‘provider.domain.or.proxy’ with ‘speakeasy.net’. The resulting line will look similar to the following:

exten => s,n(usercid),SIPAddHeader(Diversion: <sip:4045551212@speakeasy.net>;reason=unconditional)

Assuming you already had a working trunk, no other changes should be necessary, however it is worth checking a couple settings before reloading. With regard to the trunk settings, it is important to ensure that you don’t have a ‘fromuser’ line in peer details section. If you do, simply remove it. Depending on your version of PIAF, you may have a setting for ‘Never override CallerID’. Be sure that this is not checked. Also, it is a good idea to leave the ‘Outbound Caller ID’ blank. On later versions of PIAF, there is a ‘CID Options:’ setting. Set this to ‘Allow any CallerID’

NOTE: Each extension MUST INDIVIDUALLY have an outbound CID specified. Otherwise, the call will get rejected and you will get a “all circuits busy” message when attempting to make a call.

Reload PIAF and give it a try!

Tagged with:
Jan 11

Cbeyond and PBXinaFlash DTMF – How to correct with PBXinaFlash 1.7 and Asterisk 1.6

By agatewood VoIP Comments Off on Cbeyond and PBXinaFlash DTMF – How to correct with PBXinaFlash 1.7 and Asterisk 1.6

During a recent upgrade from PBXinaFlash running Asterisk version 1.4.21.x, to PBXinaFlash version 1.7.554 bronze (Asterisk version 1.6.15), we encountered a problem with inbound DTMF from Cbeyond SIPconnect. The solution to the problem is detailed below.

The SIPconnect trunk settings were identical to the 1.4 version, however the DTMF tones were not coming through from the SIP trunk. After a lot of debugging and many iterations of DTMF settings on the trunk (including dtmfmode=auto, dtmfmode=inband, relaxdtmf=yes, relaxdtmf=no, and insecure setting variations) with no luck, someone at Cbeyond suggested that we remove the DTMF settings from the trunk and set them globally. This was accomplished by removing dtmfmode=auto and relaxdtmf=yes from the trunk settings. We then used the Asterisk SIP Settings module (from the extended repository) to add dtmfmode=inband and relaxdtmf=yes in the ‘Other SIP Settings’ section of the module. We applied the changes and everything worked perfectly!

Tagged with:
Dec 08

Adding SIP URI handling to Firefox

By agatewood Linux, VoIP Comments Off on Adding SIP URI handling to Firefox

To add SIP URI protocol handling to Firefox 3.5 and later, do the following:

1) Launch Firefox
2) Type about:config in the address bar and press ‘Enter’
3) Accept the warning
4) Right click somewhere on the page and select New –> Boolean from the menu
5) Set the name to “network.protocol-handler.expose.sip” without the quotes
6) Set the value to “false”
7) Close the about:config window (or tab)

Navigate to a page that has a SIP URI that you would like to call and click the link. When prompted, select your favorite SIP client as the application to launch. Your client should launch and connect to the URI. That’s it!

Note: SIP URIs that are embedded in webpages are in the form “sip:extension@domain.com”

Tagged with:
Apr 13

This setup will enable per extension CallerID to be sent through your SIP trunk provider. It also enables CID to be passed through the system when a call is forwarded. This allows the receiver of the forwarded call to see the calling parties CID rather than the CID of the trunk or PBX. This setup also circumvents a common problem when a phone is forwarded, wherein all attempted calls to the forwarded extension fail with a ‘604 Does Not Exist Anywhere’ error being returned from the provider.

This has been tested with Cbeyond SIPconnect and Speakeasy SIP Trunking and is likely to work with any provider that uses a BroadWorks platform to deliver SIP trunks. The CID functionality is accomplished by adding a diversion header into the call setup.

First, connect to your PBXinaFlash PBX and edit /etc/asterisk/extensions_override_freepbx.conf using your favorite text editor. (You will most likely want to connect to your PBXinaFlash system via SSH using a client like PuTTY.) The file will probably be empty except for a comment in the first line. Add the following lines to the file (note the changes to the 3rd to the last line below):

[macro-outbound-callerid]
include => macro-outbound-callerid-custom
exten => s,1,ExecIf($[“${CALLINGPRES_SV}” != “”],SetCallerPres,${CALLINGPRES_SV})
exten => s,n,ExecIf($[“${REALCALLERIDNUM:1:2}” = “”],Set,REALCALLERIDNUM=${CALLERID(number)})
exten => s,n(start),GotoIf($[ $[“${REALCALLERIDNUM}” = “”] | $[“${KEEPCID}” != “TRUE”] | $[“${OUTKEEPCID_${ARG1}}” = “on”] ]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($[“foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}” = “foo”]?bypass)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${REALCALLERIDNUM}/outboundcid)})
exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
exten => s,n,GotoIf($[ $[“${EMERGENCYROUTE:1:2}” = “”] | $[“${EMERGENCYCID:1:2}” = “”] ]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n(exit),MacroExit()
exten => s,n(trunkcid),ExecIf($[“${TRUNKOUTCID:1:2}” != “”],Set,CALLERID(all)=${TRUNKOUTCID})
exten => s,n(usercid),ExecIf($[“${USEROUTCID:1:2}” != “”],Set,CALLERID(all)=${USEROUTCID})
exten => s,n(usercid),SIPAddHeader(Diversion: <sip:NPANXXXXXX@provider.domain.or.proxy>;reason=unconditional)
exten => s,n(hidecid),ExecIf($[“${CALLERID(name)}”=”hidden”],SetCallerPres,prohib_passed_screen)
; end of [macro-outbound-callerid]

Next, in the 3rd to the last line, you will need to customize the string that reads ‘<sip:NPANXXXXXX@provider.domain.or.proxy>‘. Replace ‘NPANXXXXXX’ with your main phone number. On Cbeyond, this is also your username. If you are on Cbeyond, replace ‘provider.domain.or.proxy’ with the FQDN of the Cbeyond proxy (will be similar to ‘sipconnect.atl0.cbeyond.net’). If you use Speakeasy, replace ‘provider.domain.or.proxy’ with ‘speakeasy.net’. The resulting line will look similar to the following:

exten => s,n(usercid),SIPAddHeader(Diversion: <sip:4045551212@speakeasy.net>;reason=unconditional)

Assuming you already had a working trunk, no other changes should be necessary, however it is worth checking a couple settings before reloading. With regard to the trunk settings, it is important to ensure that you don’t have a ‘fromuser’ line in peer details section. If you do, simply remove it. Depending on your version of PIAF, you may have a setting for ‘Never override CallerID’. Be sure that this is not checked. Also, it is a good idea to leave the ‘Outbound Caller ID’ blank. On later versions of PIAF, there is a ‘CID Options:’ setting. Set this to ‘Allow any CallerID’

NOTE: Each extension MUST INDIVIDUALLY have an outbound CID specified. Otherwise, the call will get rejected and you will get a “all circuits busy” message when attempting to make a call.

Reload PIAF and give it a try!

Sep 19

How to enable SIP video in PBX in a Flash

By agatewood VoIP Comments Off on How to enable SIP video in PBX in a Flash

Add the following to /etc/asterisk/sip_general_custom.conf

videosupport=yes
allow=h261
allow=h263
allow=h263p

For each extension that will use video, diallow all codecs, then allow needed audio codecs (usually ulaw, alaw, gsm, speex) and allow needed video codecs (usually h261, h263, h263p). Through the GUI, this can be accomplished by separating each codec with and ampersand character ‘ & ‘.

Asterisk 1.4 cannot negotiate the video codec as its support for video is really pass-thru. Becuase of this, video UAs need to have codecs matched manually to establish a video call.

Tagged with:
Aug 19

How to remove errors on status screen about default passwords in PIAF

By agatewood VoIP Comments Off on How to remove errors on status screen about default passwords in PIAF

Excerpted from http://pbxinaflash.com/forum/archive/index.php?t-665.html

/var/www/html/admin/header.php: starting around line 137

// default password check
$nt = notifications::create($db);
//if ($amp_conf[‘AMPMGRPASS’] == $amp_conf_defaults[‘AMPMGRPASS’][1]) {
// $nt->add_warning(’core’, ‘AMPMGRPASS’, _(”Default Asterisk Manager Password Used”), _(”You are using the default Asterisk Manager$
//} else {
$nt->delete(’core’, ‘AMPMGRPASS’);
//}

/var/www/html/admin/common/db_connect.php: starting around line 77
// Now send or delete warning wrt to default passwords:
//
$nt = notifications::create($db);

//if ($amp_conf[‘AMPDBPASS’] == $amp_conf_defaults[‘AMPDBPASS’][1]) {
// $nt->add_warning(’core’, ‘AMPDBPASS’, _(”Default SQL Password Used”), _(”You are using the default SQL password that is widely kn$
//} else {
$nt->delete(’core’, ‘AMPDBPASS’);
//}

Refresh your browser on the FreePBX System Status page after making all the changes to each file to make sure you commented out the correct lines!!

Tagged with:
Apr 14

sipXecs missing /etc/redhat-release

By agatewood VoIP Comments Off on sipXecs missing /etc/redhat-release

Because sipXecs 4.0.0 installer ISO is missing /etc/redhat-release, yum updates are not possible. To correct the problem, run ‘rpm -ivh http://mirrors.kernel.org/centos/5.2/os/i386/CentOS/centos-release-5-2.el5.centos.i386.rpm’. After this completes, you should be able to use the yum repositories to update and install software. In particular, this is useful for replacing the kernel with a kernel-vm  or kernel-xen build for virtualiztion.

Tagged with:
Mar 29

The Future of Voice Services

By agatewood VoIP Comments Off on The Future of Voice Services

The PSTN as we know it has a limited future. As VoIP technology continues to develop, we will see the need for the PSTN fall away. By utilizing VoIP, and in particular SIP, along with other network services, namely DNS, we will be able to establish voice and video communications around the world as easily as we connect to web sites. DNS SRV and TXT records make it easy to locate services on foreign networks and to communicate with these services. Establishing voice and video calls will be accomplished by using a URI, not a phone number. Imagine what the possibilities will be when are finally able to break free of the telco and manage our own communications!

PLEXNEX.net will answer that need and allow clients to manage their communications in whatever way they see fit, without the restrictions and problems of traditional telco. PLEXNEX.net is coming soon…

UPDATE: Take a look at this article regarding AT&T’s current thinking about the PSTN – http://www.fiercevoip.com/story/t-fcc-kill-pstn/2010-01-03

preload preload preload