News:

On Tuesday September 6th the forum will be down for maintenance from 9:30 PM to 11:59 PM PDT

Main Menu

Block calls by CNAM (CallerID Name) on OBI200?

Started by Darv, October 15, 2019, 10:21:22 PM

Previous topic - Next topic

Darv

Is there a way to block calls by Caller ID Name (CNAM) on the OBI200? 

I've also been trying to find how to block thousands of numbers, and usually asterisk/freepbx is recommended for these features but I think that is overkill and quite large and hard to install and maintain.

If Obi can't block by CNAM is there a simple script that could be used as a middle proxy to act as a call blocker (based on number or name) between voip.ms and the Obi200?

I see there are many "sip proxy" scripts but I'm not sure if that is what I would need for this use case. I'd like the smallest, most minimal thing to use to block calls and log them.

sample list of sip proxies https://www.voip-info.org/open-source-voip-software/

SteveInWA

Please do not start a new discussion on the same topic.  You already have a discussion going on here:

http://www.obitalk.com/forum/index.php?topic=16356

No, you cannot block calls by CNAM.  It would be a useless feature, given that most spam calls use spoofed telephone numbers and either no CNAM or the CNAM of the spoofed number.  Many calls from legitimate and from spammer numbers are using mobile phone numbers, and some carriers send a generic CNAM, such as "WIRELESS CALLER", which would not differentiate between a "good" caller and a "bad" caller.

On the other hand, if you have 1000 enemies, and you know the CNAM for each number, then refer to your original discussion.

Darv

The feature to block by CNAM was different than the feature to block unlimited numbers by Number, hence the separate posts.  The threads can be merged if they are too similar.

I've used CNAM blocking for years so it isn't useless, but I am not sure how to easily implement it on the Obi. Many survey companies use the same CNAM.  Having the feature doesn't mean anyone would need to use it, nor that it would be appropriate to use for all Names, only that it was available as an option.  I do not have "enemies", but I have accumulated a list of nuisance calls (numbers and names) that I'd like to continue to block.



SteveInWA


Lavarock7

Are those blocked numbers often calling or is that each time you got a spam or telemarketer you blocked them?

I ask because there are better ways of blocking many of them, like NOMOROBO. I also use Voip.Ms and their 'automated attendant' to block most spammers/telemarketers. A simple message "Thanks for calling, press 3 to reach me' works wonders.

Yes, there are SOME people still using rotary dial and you can default them to a timeout that still gets through. Some robo calls hear a long message (simulating an answering machine) rather than a brief one (like a 'hello') and hang up.
My websites: Kona Coffee: http://itskona.com and Web Hosting: http://planetaloha.info<br />A simplified Voip explanation: http://voip.planet-aloha.com

Darv

I will look into that, but it might also block (for example) the reminders from my dentist, or frustrate other legitimate calls that I haven't pre-"whitelisted".    

I am used to the system I have (specifically blocking numbers and names) but it resulted in a long list that the Obi can't seem to support.

I am looking at sip proxy scripts to see if they can be used in the middle as a call blocker, but they all seem to be quite complicated.

azrobert

Another option is SipSorcery. It would be a relative easy setup, just a dial plan. SipSorcery uses Ruby programming language for their dial plans and I could help. You would be able to block by CallerID number and name. The only problem is the cost, $69/year.

https://www.sipsorcery.com/mainsite/Home/Pricing

Darv

Interesting service but probably overkill.  I'm looking for a simple & free solution to block calls.  Call blocking is just string matching (on the number or name) and rejecting calls, so I was hoping it would be easy.

Darv

#8
I am hoping someone with SIP experience can tell me if this would be on the right track:

If I locally use a "SIP Redirect server" that "SIP Registers" with my VOIP.MS account, it will receive all the incoming call INVITE notifications.  It would be a simple script, like the PJSIP Python "call" and "register" scripts.

This script will check the CallerID # and Name, and if they are not blacklisted it will send a "302 Redirect" to tell VOIP.MS to "SIP Contact" the OBI200's IP/Port.  
references: Wikipedia SIP Response Codes , PJSIP Redirect

If it is blacklisted I guess it sends a 486 busy or some other response code.

I then set the "ProxyServer" on the Obi200 to VOIP.MS as usual, but I should set the "RegistrarServer" to be  the SIP Redirect server (or is there a way to turn off RegistrarServer?) so the Obi doesn't receive calls directly from voip.ms and therefore won't ring if the number is blocked. I'm not sure if I would also need to set the "OutboundProxy" to VOIP.MS.

I hope authentication with VOIP.MS would still work for all incoming and outgoing calls on the OBI connected phones.

Does that sound reasonable?


azrobert

You could use Yate PBX. I know you didn't want to use a PBX, but Yate installs in a few minutes and you only need 1 config file when routing calls by IP address. Yate runs on different platforms, but I only used the Windows version. It took me about 15 minutes to code and test blocking by CallerID and Cnam. I already had Yate installed.

http://docs.yate.ro/wiki/Download

Click on "Yate 6.1.0-1" to install.

Darv

Is the principle the same (Use Yate as a redirection server to block calls?) or how does it then tell the Obi to ring the phone on an incoming call, and accept outgoing calls from the phones attached to the Obi?

What are the Obi & Yate simple settings to make it work?  I'm looking for reliability and something as simple as possible.

I don't want a PBX handling the audio (RTP/SRTP) as that would slow things down and add potential errors.  The audio stream needs to be directly between the Voip.ms server and the Obi, I just need something to simply block Caller Names/Numbers and then have the Obi take over the call.

Sheffield_Steve

I know you are asking about callerID NAME, but why won't the regular caller ID NUMBER filtering in voip.ms work?

azrobert

You would route calls to Yate and then Yate would route them back to the OBi200 after selectively rejecting. I don't think anyone on this forum can help with what you want to do. Try here:
https://www.dslreports.com/forum/voip

Darv

Quote from: Sheffield_Steve on October 19, 2019, 09:24:43 AM
I know you are asking about callerID NAME, but why won't the regular caller ID NUMBER filtering in voip.ms work?

I'm sure it would work, I just want the option to block by Name and the ability to log blocked calls to quickly see if a legitimate call is being blocked by a filter intended for someone else (rare).

Darv

Quote from: Darv on October 18, 2019, 07:52:16 PM

I then set the "ProxyServer" on the Obi200 to VOIP.MS as usual, but I should set the "RegistrarServer" to be  the SIP Redirect server (or is there a way to turn off RegistrarServer?) so the Obi doesn't receive calls directly from voip.ms and therefore won't ring if the number is blocked.


The Manual says:

RegistrarServer: Hostname or IP address of the SIP registrar. If a value is specified, device sends REGISTER to the given server; otherwise REGISTER is sent to ProxyServer

But is there any way to turn off SIP Registration on the Obi200?

azrobert

How about the following? The OBi200 forks all calls to the phone port and Yate. If Yate gets a reject match, it answers the call with a SIT tone and the OBi200 phone doesn't ring. You can probably send the call to another service that will produce an error message. If no reject match, Yate produces an authorization error for the call from the OBi200 and the inbound call rings the OBi200 phone. If Yate is down, all calls will ring the OBi200 phone.

drgeoff

#16
Quote from: Darv on October 19, 2019, 12:56:09 PM
But is there any way to turn off SIP Registration on the Obi200?
X_RegisterEnable tick box under the relevant Voice  Services, SPx.

Darv

Quote from: drgeoff on October 19, 2019, 01:40:24 PM
X_RegisterEnable tick box under the relevant Voice  Services, SPx.

Thank you!

Quote from: azrobert on October 19, 2019, 01:35:36 PM
How about the following? The OBi200 forks all calls to the phone port and Yate. If Yate gets a reject match, it answers the call with a SIT tone and the OBi200 phone doesn't ring. You can probably send the call to another service that will produce an error message. If no reject match, Yate produces an authorization error for the call from the OBi200 and the inbound call rings the OBi200 phone. If Yate is down, all calls will ring the OBi200 phone.

Interesting, but is there a guarantee that the phone doesn't ring, or is it just a race and hope that it doesn't? 

Also, I don't want another call service, I'm trying to keep it simple and local.  If Yate answers and can send the tone itself that would be better, but isn't answering the phone theoretically more expensive than sending a busy (or other) response code?

I don't know how to configure that type of setup in Obi and Yate, but these links make it seem complicated link1 link2.  I'll have to read more about Yate.

azrobert

#18
It is a race, but I tried it several times and my phone didn't ring. If you do have a problem, you can change the OBi200 ring pattern to have 1 or 2 seconds of silence at the beginning.

Yate can answer the call with a SIT tone. Yate must answer the call to stop the phone ringing. When one leg of a forked call fails the other leg continues to ring.

azrobert

#19
Download Yate install for Windows:
http://voip.null.ro/tarballs/yate6/yate-6.1.0-1-setup.exe

Select Run

I think you take all the defaults (it's been a long time since my last install).

Yate files are stored at "Program Files (x86)/Yate"

Again, I think you only need 1 config file.

regexroute.conf
[default]
;
; Lines beginning with ";" are comments
;

; Repeat the following as needed
${caller}^8005551212$= goto RejCall
${callername}^unknown$= goto RejCall

.*$=-;error=noauth
; This produces an authorization error and the call processing ends.
; The call leg to the OBI200 phone is not affected.

[RejCall]
.*$=tone/info
; This answers the call with a SIT tone.


Copy the above code into Notepad. Save it as "regexroute.conf".
Do NOT save it as a text file.
Select "All Files" as the type.
Copy the conf file to "Program Files (x86)/Yate/conf.d"

Yate is installed as a Service.
Start Yate by searching for "services app" and click on it.
The Service name is "Yet Another Telephony Engine".
Right click on it and select Start.
If you want to start Yate on boot, right click and select Properties.
Change Startup Type to "Automatic".
Stop and Start Yate after any config changes.

You can also start Yate as an application.
The app is found here "Program Files (x86)/Yate/yate-console"
Double click to start it.
You can create a desktop shortcut.
The advantage of the app is that error messages are displayed in the app window.
Stop the app by closing the window.

Edit:

I forgot the OBi200 mods.

Voice Services -> SPx Service -> X_InboundCallRoute:
ph,sp4(100@xx.xx.xx.xx)

Change xx.xx.xx.xx to the IP address of the computer running Yate.

Service Providers -> ITSP Profile D -> SIP -> ProxyServer: 127.0.0.1
Service Providers -> ITSP Profile D -> SIP -> X_SpoofCallerID: Checked
Voice Services -> SP4 Service -> AuthUserName: anything
Voice Services -> SP4 Service -> X_RegisterEnable: unchecked
Voice Services -> SP4 Service -> X_ServProvProfile: D

If you have a non-GV trunk, you can use it instead of a dummy trunk defined on SP4. X_SpoofCallerID must be checked.