Dear All,
Still newbie on FreePBX. This might have been discussed before with no specific answer.
Am using FreePBX 13.0.124 I want to allow ONLY CIDs with 11 digits
Thanks
IPservices
Dear All,
Still newbie on FreePBX. This might have been discussed before with no specific answer.
Am using FreePBX 13.0.124 I want to allow ONLY CIDs with 11 digits
Thanks
IPservices
Do you want to block calls with CID <> 11 or do you want evaluate the incoming CID and convert it to 11 digits if need be? Where is the server located? What is a typical CID there?
Thanks for your response
Basically we doing call termination and we need to ALLOW USA CIDs with 11 digits and DROP any other CID that comes with more or less than 11 digits.
Key thing inbound CID ALLOW 11 digits {1-9} on GUI FreePBX 13.0.124
Thanks
PSTN wise US numbers have only 10 digits sent in the CID , some VSP’s add the initial 1 , just write a custom context [from-pstn-ipserviceskenya] (and send your calls there) that parses the CALLERID(num) by length
http://www.voip-info.org/wiki/view/Asterisk+func+len
and hangsup if it is not 11 digits long, otherwise send it to from-pstn,${EXTEN},1 example in /etc/asterisk/extensions.conf in the [from-pstn-e164-us] context
dicko, dcitelecom
Having gone through the wiki to my understanding this will work well with CLI asterisk. As mentioned before mine is GUI where is this injected on the system
Thanks
Sorry you can’t do it with the GUI add something like:-
[from-pstn-ipserviceskenya]
exten => _.,n,Set(CURRENT_CID_LENGTH=${LEN(${CALLERID(num)})})
exten => _.,n,GotoIf($[${CURRENT_CID_LENGTH} = 11]?continue)
exten => _.,n,Playback(sorry-cant-let-you-do-that&goodbye)
exten => _.,n,Hangup()
exten => _.,n(continue),goto(from-pstn,${EXTEN},1)
to /etc/asterisk/extensions_custom.conf
In the GUI you would create 2 inbound Routes.
CID = _NXXNXXXXXX
DID = ANY
Destination = your application
CID = ANY, DID = ANY (leave blank to match all)
Destination = terminate call.
This will drop everything that doesn’t fit the first inbound route.
dcitelecom
Tried as per your instructions gives an error Call Rejected: 603 Declined to talk
Logs from the box
pbxCLI>
– Executing [254721983216@from-pstn:1] NoOp(“PJSIP/Workstation-0000000d”, “Catch-All DID Match - Found 254721983216 - You probably want a DID for this.”) in new stack
[2016-06-11 00:12:08] WARNING[7797][C-0000000b]: chan_sip.c:22323 func_header_read: This function can only be used on SIP channels.
– Executing [254721983216@from-pstn:2] Log(“PJSIP/Workstation-0000000d”, "WARNING,Friendly Scanner from ") in new stack
[2016-06-11 00:12:08] WARNING[7797][C-0000000b]: Ext. 254721983216:2 @ from-pstn: Friendly Scanner from
– Executing [254721983216@from-pstn:3] Set(“PJSIP/Workstation-0000000d”, “__FROM_DID=254721983216”) in new stack
– Executing [254721983216@from-pstn:4] Goto(“PJSIP/Workstation-0000000d”, “ext-did,s,1”) in new stack
– Goto (ext-did,s,1)
– Executing [s@ext-did:1] Set(“PJSIP/Workstation-0000000d”, “__DIRECTION=INBOUND”) in new stack
– Executing [s@ext-did:2] Gosub(“PJSIP/Workstation-0000000d”, “app-blacklist-check,s,1()”) in new stack
– Executing [s@app-blacklist-check:1] GotoIf(“PJSIP/Workstation-0000000d”, “0?blacklisted”) in new stack
– Executing [s@app-blacklist-check:2] Set(“PJSIP/Workstation-0000000d”, “CALLED_BLACKLIST=1”) in new stack
– Executing [s@app-blacklist-check:3] Return(“PJSIP/Workstation-0000000d”, “”) in new stack
– Executing [s@ext-did:3] ExecIf(“PJSIP/Workstation-0000000d”, “0?Set(__FROM_DID=s)”) in new stack
– Executing [s@ext-did:4] Set(“PJSIP/Workstation-0000000d”, “CDR(did)=254721983216”) in new stack
– Executing [s@ext-did:5] ExecIf(“PJSIP/Workstation-0000000d”, “0 ?Set(CALLERID(name)=)”) in new stack
– Executing [s@ext-did:6] Set(“PJSIP/Workstation-0000000d”, “__MOHCLASS=”) in new stack
– Executing [s@ext-did:7] Set(“PJSIP/Workstation-0000000d”, “__REVERSAL_REJECT=FALSE”) in new stack
– Executing [s@ext-did:8] GotoIf(“PJSIP/Workstation-0000000d”, “1?post-reverse-charge”) in new stack
– Goto (ext-did,s,10)
– Executing [s@ext-did:10] NoOp(“PJSIP/Workstation-0000000d”, “”) in new stack
– Executing [s@ext-did:11] Set(“PJSIP/Workstation-0000000d”, “__CALLINGNAMEPRES_SV=allowed_not_screened”) in new stack
– Executing [s@ext-did:12] Set(“PJSIP/Workstation-0000000d”, “__CALLINGNUMPRES_SV=allowed_not_screened”) in new stack
– Executing [s@ext-did:13] Set(“PJSIP/Workstation-0000000d”, “CALLERID(name-pres)=allowed_not_screened”) in new stack
– Executing [s@ext-did:14] Set(“PJSIP/Workstation-0000000d”, “CALLERID(num-pres)=allowed_not_screened”) in new stack
– Executing [s@ext-did:15] NoOp(“PJSIP/Workstation-0000000d”, “CallerID Entry Point”) in new stack
– Executing [s@ext-did:16] Goto(“PJSIP/Workstation-0000000d”, “app-blackhole,hangup,1”) in new stack
– Goto (app-blackhole,hangup,1)
– Executing [hangup@app-blackhole:1] NoOp(“PJSIP/Workstation-0000000d”, “Blackhole Dest: Hangup”) in new stack
– Executing [hangup@app-blackhole:2] Hangup(“PJSIP/Workstation-0000000d”, “”) in new stack
== Spawn extension (app-blackhole, hangup, 2) exited non-zero on 'PJSIP/Workstation-0000000d’
pbxCLI>
I don’t see any CID number in your log.
Assuming you don’t want to look at Dicko’s suggestion,
First create a WORKING inbound DID route with the parameters you require. Once you got that working change the CID field of the inbound route to CID = _NXXNXXXXXX
That will allow the route only for CID = 11 digits.
Test it with inbound calls for CID = 11
Now create a catch all route for all other inbound calls that results in hangup.
Dicko’s Suggestion is ok am not familiar with the files to be edited might break everything.
Anyway my simulation setup is as follows and works fine
DID = _254XX
CID = ANY
Destination = Trunk
Neither does it show the CID Number in the logs as posted before nor pass calls it just terminates
DID = _254XX
CID = _NXXNXXXXXX
Destination = Trunk
DID = ANY
CID = ANY
Destination = Terminate
I made a small mistake. My CID pattern was 10 digits so use the one below instead.
CID = _1NXXNXXXXXX matches an area code and phone number preceeded by a one
You say you only want to allow 11 digit CIDs yet the inbound calls in your test log have no CID so when you start screening for CID with my inbound route, those calls obviously fail.
You DID is identified by 254721983216. All calls in Kenya that start with 7 are identified as Cell/Mobile phone numbers they are fixed length of 9 , your DID identifies as a Safaricom number, but it is likely you only have a few DID’s so you should have explicit matches for them.
you need to plan accordingly
DID = _254XX does not match anything
DID = 254721983216 matches your DID
DID = _2547[0129]XXXXXXX matches all Safaricom numbers
slice and dice for the rest
If you want a simple match to all Cell phones in Kenya
DID = _2547XXXXXXXX
will do that
DID _254[2356]XX.
will match all land-lines.
You need to be explicit with inbound calls or you end up nastily in the “s” extension as you discovered.
Edit: is it possible that you have your DID’s and CID’s confused?
dcitelecom
This too did not work for some reasons am not getting the CIDs in the logs I guess I will have to do some further reading and try Dicko’s
Dicko,
The Issue at hand is allowing 11 digit CID you had mentioned on Freepbx GUI it is not possible, we are looking at what you suggested earlier hand editing /etc/asterisk/extensions_custom.conf and hope this wont break the GUI files
Thanks Alot