I know this is an old post, but I had this problem too, where blinking BLFs were completely unacceptable for our users, and we searched endlessly for a solution. I found that removing the ringing state from getting sent to phone via BLF hints requires modifications to asterisk’s chan_sip and/or pjsip and a custom compile of the module. This is super rough, but here’s a really basic outline if you are using chan_sip (I don’t use pjsip yet so haven’t developed a procedure for that). There are more elegant ways to doing this such as making patch files, but that’s above my paygrade.
Setup a Sangoma SNG7 development environment on a VM or different machine - can’t link to how to do this here due to being a new user, but basically you just need to do a fresh SNG7 install and run:
yum install sangoma-devel
(You don’t want to run the development environment on your production freepbx server - a Virtualbox VM will work fine on your desktop and is free)
In your development environment, get the latest asterisk packages:
yum check-update
yum -y update
Install the source RPM corresponding to your version of asterisk:
yumdownloader --source asterisk13-13...
rpm -i asterisk13-13....sng7.src.rpm
cd rpmbuild/SOURCES
tar zxvf asterisk13...tar.gz
Delete original source tarfile
Modify channels/chan_sip.c to delete the following four lines of code (I haven’t tried this out on pjsip so you’ll need to do some investigation on what needs to be changed, but very similar code appears to be present in res/res_pjsip/presence_xml.c):
statestring = "early";
local_state = NOTIFY_INUSE;
pidfstate = "busy";
pidfnote = "Ringing";
Do not delete any other code. Then save the file, and retar modified codebase:
tar cvzf asterisk-13.19.1.tar.gz asterisk-13.19.1/
Build asterisk:
Comment out requirement for misdn-user devel package in asterisk13.spec file to get it to build
cd SPECS/
Comment out line (the mISDNuser-devel package appears to no longer be available from repositories and isn’t actually needed to compile asterisk):
BuildRequires: mISDNuser-devel
so that it reads:
#BuildRequires: mISDNuser-devel
Then compile asterisk and build the RPMs:
rpmbuild -ba asterisk13.spec
Extract chan_sip.so from resulting asterisk-core RPM that was put into in rpmbuild/RPMs: (You could, as an alternative to the below, copy and install the resulting built asterisk-core RPM onto your production server)
rpm2cpio ./asterisk13-core-13... | cpio -iv --to-stdout ./usr/lib64/asterisk/modules/chan_sip.so > /tmp/chan_sip.so
Copy your production server’s chan_sip.so file into another directory for safekeeping and call it chan_sip.so.ORIG. Copy resulting /tmp/chan_sip.so from the development environment to your server into /usr/lib64/asterisk/modules/
If needed, can duplicate original chan_sip.so’s permissions doing the following:
chmod --reference=chan_sip.so.ORIG /usr/lib64/asterisk/modules/chan_sip.so
chown --reference=chan_sip.so.ORIG /usr/lib64/asterisk/modules/chan_sip.so
Run
fwconsole restart
Congratulations, you’re officially rolling your own asterisk and your BLFs will never blink when they ring again! You will need to do a custom compile each time asterisk is updated and replace the chan_sip.so file with your custom module.