Discussion:
[asterisk-users] FreePBX: How to hangup if the caller did not press # after the voicemail message
bilal ghayyad
2012-07-05 22:25:30 UTC
Permalink
Dears;

In FreePBX, when I select voicemail for the extension, and if the caller sent for the voicemail, and he leaved (or did not leave) a voice message, and did not press #, so the channel will stay open and this is not good specially if the call was coming from outside via the analoge lines (because the caller might hangup and the dahdi does not detect the hangup, so the channel will stay openned).

How to let the voicemail hangup automatically after waiting for certain seconds (for example after 30 or 40 second), then to hangup or jump for the next line to run it?

What is the parameter or the setting field in the freepbx that can resolve this (the voice mail message to be maximum for 30 or 40 second, after that to hangup even without pressing #).
Eric Wieling
2012-07-05 22:27:57 UTC
Permalink
Asterisk, and by extension FreePBX, automatically end the voicemail recording when the caller hangs up. You have some OTHER issue. Perhaps Asterisk is not detecting the hangup?

-----Original Message-----
From: asterisk-users-***@lists.digium.com [mailto:asterisk-users-***@lists.digium.com] On Behalf Of bilal ghayyad
Sent: Thursday, July 05, 2012 6:26 PM
To: asterisk-***@lists.digium.com
Subject: [asterisk-users] FreePBX: How to hangup if the caller did not press # after the voicemail message

Dears;

In FreePBX, when I select voicemail for the extension, and if the caller sent for the voicemail, and he leaved (or did not leave) a voice message, and did not press #, so the channel will stay open and this is not good specially if the call was coming from outside via the analoge lines (because the caller might hangup and the dahdi does not detect the hangup, so the channel will stay openned).

How to let the voicemail hangup automatically after waiting for certain seconds (for example after 30 or 40 second), then to hangup or jump for the next line to run it?

What is the parameter or the setting field in the freepbx that can resolve this (the voice mail message to be maximum for 30 or 40 second, after that to hangup even without pressing #).
bilal ghayyad
2012-07-06 21:56:02 UTC
Permalink
I did one try and did not hangup:

I called the extension and when the voicemail answered, I did not leave any message and stayed waiting .. waiting .. waiting ..
It did not hangup from it self ! How much it stay waiting me to leave a message?

Why I am trying this? OK, the answer is: Because I am trying to see if the voicemail hangup even if it did not get from the caller the hangup, because this is happening when the caller is calling from outside to the dahdi (analoge) and when the caller hangup his mobile, the hangup does not reach (it is PSTN issue), so I beleive the voicemail should hangup from it self after timeout .. but I do not see this.

Anyadvise?

Regards
Bilal

-----------
Post by Eric Wieling
Asterisk, and by extension FreePBX, automatically end the
voicemail recording when the caller hangs up.  You have
some OTHER issue.  Perhaps Asterisk is not detecting
the hangup?   
-----Original Message-----
On Behalf Of bilal ghayyad
Sent: Thursday, July 05, 2012 6:26 PM
Subject: [asterisk-users] FreePBX: How to hangup if the
caller did not press # after the voicemail message
Dears;
In FreePBX, when I select voicemail for the extension, and
if the caller sent for the voicemail, and he leaved (or did
not leave) a voice message, and did not press #, so the
channel will stay open and this is not good specially if the
call was coming from outside via the analoge lines (because
the caller might hangup and the dahdi does not detect the
hangup, so the channel will stay openned).
How to let the voicemail hangup automatically after waiting
for certain seconds (for example after 30 or 40 second),
then to hangup or jump for the next line to run it?
What is the parameter or the setting field in the freepbx
that can resolve this (the voice mail message to be maximum
for 30 or 40 second, after that to hangup even without
pressing #).
bilal ghayyad
2012-07-06 22:21:46 UTC
Permalink
Dears;

Thanks for all the replies and help.

First of all, I am not looking to have the custom context only for outbound, I need this also to separate the extensions into partitions, so I can have same extensions in different contexts, also extensions in context A can not call extensions in context B (as example).

Secondly, regarding to have the calls in the CDR (the outside and internal calls), really i did not understand in the below example what I have to do?

For example:

exten => _2XXX,1,Verbose(Internal extension-to-extension call)
same => n,Goto(${EXTEN},from-internal,1)

Why to use the Goto? How the call will be done using my manual configuration? As you are going to use from-internal then why you used the Verbose?

We need to know if we did a manual script, how the calls will be logged in the CDR without using the from-internal? In other words, we will write manually the Dial function and will not depend on the auto generated script.

Also why u used same? And u let it go for from-internal at sequence 1. Well, is it always to go for sequence 1? Or I have to check the right sequence? What if changed?

Regards
Bilal
----------------
umm Warren, yes including from-internal is the way of
getting all the
features,,,but in my experience the calls going out
using the dialplan
script we manually enter in our custome context don't
get inserted into the
FreePBX CDR and recording stuff !!
Okay, if you're writing custom dialplan to control outbound
calling, but
you want to utilize the FreePBX standard features, without
using custom
modules, you can do something like the following, adjusting
for your
[custom-local-only]
; local NANPA calling for area code 281
exten => _281NXXXXXX,1,Verbose(Outbound call from
local-only context)
same => n,Goto(${EXTEN},from-internal,1)
; extension-to-extension (internal) calling, assuming 2XXX
internal
extension plan
exten => _2XXX,1,Verbose(Internal extension-to-extension
call)
same => n,Goto(${EXTEN},from-internal,1)
[custom-long-distance]
; long distance NANPA calling, dial a 1 to dial anything
outside of a local
number
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local
and long-distance
context)
same => n,Goto(${EXTEN},from-internal,1)
; allow local calls also, without having to dial a 1
include => custom-local-only
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
Matthew Jordan
2012-07-07 00:01:47 UTC
Permalink
----- Original Message -----
Sent: Friday, July 6, 2012 4:56:02 PM
Subject: Re: [asterisk-users] FreePBX: How to hangup if the caller did not press # after the voicemail message
I called the extension and when the voicemail answered, I did not
leave any message and stayed waiting .. waiting .. waiting ..
It did not hangup from it self ! How much it stay waiting me to leave
a message?
There are settings in voicemail.conf to control this behavior.
The maxsilence setting can be used to automatically end a recording:

; How many seconds of silence before we end the recording
maxsilence=10

Note that depending on the situation, you may have to also tweak the
silencethreshold setting. If VoiceMail detects sound on the voice
frames being passed through it, it will treat that as someone 'talking'
and not end the call.

; Silence threshold (what we consider silence: the lower, the more sensitive)
silencethreshold=128
Why I am trying this? OK, the answer is: Because I am trying to see
if the voicemail hangup even if it did not get from the caller the
hangup, because this is happening when the caller is calling from
outside to the dahdi (analoge) and when the caller hangup his
mobile, the hangup does not reach (it is PSTN issue), so I beleive
the voicemail should hangup from it self after timeout .. but I do
not see this.
Anyadvise?
Regards
Bilal
-----------
Post by Eric Wieling
Asterisk, and by extension FreePBX, automatically end the
voicemail recording when the caller hangs up.  You have
some OTHER issue.  Perhaps Asterisk is not detecting
the hangup?
-----Original Message-----
On Behalf Of bilal ghayyad
Sent: Thursday, July 05, 2012 6:26 PM
Subject: [asterisk-users] FreePBX: How to hangup if the
caller did not press # after the voicemail message
Dears;
In FreePBX, when I select voicemail for the extension, and
if the caller sent for the voicemail, and he leaved (or did
not leave) a voice message, and did not press #, so the
channel will stay open and this is not good specially if the
call was coming from outside via the analoge lines (because
the caller might hangup and the dahdi does not detect the
hangup, so the channel will stay openned).
How to let the voicemail hangup automatically after waiting
for certain seconds (for example after 30 or 40 second),
then to hangup or jump for the next line to run it?
What is the parameter or the setting field in the freepbx
that can resolve this (the voice mail message to be maximum
for 30 or 40 second, after that to hangup even without
pressing #).
bilal ghayyad
2012-07-10 21:13:08 UTC
Permalink
I went for admin/module admin and I search for custom contexts but did not find it. How I can get it?

Regards
Bilal
---------------
The module is custom contexts - its a third party option in
the module admin
But you can write contexts in the extensions_custom.conf if
you want to
I wouldn't use freepbx to generate your code - its quite
complex code for a roll your own system, but very useful if
you learn its gui and options
Also you can limit outbound routes to certain extension
ranges which can avoid the need for contexts but its up to
you
Cheers Duncan
Hey,
If you want to have all the dialplan features for your
extensions and still need to implement some outbound calling
restrictions then you need to look for some modules in
freePBX. i've used that module exactly for this purpose and
it works..can't remember its name.
Just google it or lookup the latest modules available.
Regards,
Sammy
Hi All;
If I set a context other than the default context, then
I do not see a generation for a configuration in the
extensions_additional.conf for this context, but always the
generation for the configuration is for the default 
context (from-internal).
Normally, I have to put some Phones in a context and
another Phones in a context, and give each context a
privilages, but if I do this, then I have to write the
configuration in my hand and it will not be autogeneration,
correct?
In this case, the Phone will not have any of the
features that I am going to add it in the GUI because these
features will be in the default context which is not
included (unless I add it manually) in the context that I
will set it.
Also, if I set the context and I write manually the
configuration for this context, I do not think that I will
have CDR (because to have CDR, I have to use some
configuration to log in the database and becoming able to
see it in the CDR).
Again, if I used the default context, then it is good
that all the stations to have the same context and same
previlages .. so it is not a practical way.
So, what is the solution for this?
As I see the only benifit of the Freepbx (the GUI), is
to generate the configuration that I can use it when I am
writing the manual configuration (by including it and so
on). In this case, I am afraid that things will become maybe
more complex :) !! Any advise for this?
Regards
Bilal
Steve Edwards
2012-07-10 21:22:22 UTC
Permalink
Please don't top-post.

On Tue, 10 Jul 2012, bilal ghayyad wrote:
--
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards ***@sedwards.com Voice: +1-760-468-3867 PST
Newline Fax: +1-760-731-3000
Eric Wieling
2012-07-10 21:24:43 UTC
Permalink
-----Original Message-----
From: asterisk-users-***@lists.digium.com [mailto:asterisk-users-***@lists.digium.com] On Behalf Of Steve Edwards
Sent: Tuesday, July 10, 2012 5:22 PM
To: Asterisk Users Mailing List - Non-Commercial Discussion
Subject: Re: [asterisk-users] FreePBX: using context other than the default context and the generation for the configuration

Please don't top-post.

OK.
bilal ghayyad
2012-07-10 21:25:40 UTC
Permalink
Dear Warren;

I did not understand the example below well.

What the Verbose will do? It will write in the CDR or the database? Really this did not understand.

Also did not understand this lineL same => n,Goto(${EXTEN},from-internal,1) How it will work? Can u plz explain?

Regards
Bilal


------------
umm Warren, yes including from-internal is the way of
getting all the
features,,,but in my experience the calls going out
using the dialplan
script we manually enter in our custome context don't
get inserted into the
FreePBX CDR and recording stuff !!
Okay, if you're writing custom dialplan to control outbound
calling, but
you want to utilize the FreePBX standard features, without
using custom
modules, you can do something like the following, adjusting
for your
[custom-local-only]
; local NANPA calling for area code 281
exten => _281NXXXXXX,1,Verbose(Outbound call from
local-only context)
same => n,Goto(${EXTEN},from-internal,1)
; extension-to-extension (internal) calling, assuming 2XXX
internal
extension plan
exten => _2XXX,1,Verbose(Internal extension-to-extension
call)
same => n,Goto(${EXTEN},from-internal,1)
[custom-long-distance]
; long distance NANPA calling, dial a 1 to dial anything
outside of a local
number
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local
and long-distance
context)
same => n,Goto(${EXTEN},from-internal,1)
; allow local calls also, without having to dial a 1
include => custom-local-only
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
Matthew Jordan
2012-07-10 21:56:48 UTC
Permalink
----- Original Message -----
Sent: Tuesday, July 10, 2012 4:25:40 PM
Subject: Re: [asterisk-users] FreePBX: using context other than the default context and the generation for the
configuration
Dear Warren;
I did not understand the example below well.
What the Verbose will do? It will write in the CDR or the database?
Really this did not understand.
https://wiki.asterisk.org/wiki/display/AST/Application_Verbose
Also did not understand this lineL same =>
n,Goto(${EXTEN},from-internal,1) How it will work? Can u plz
explain?
https://wiki.asterisk.org/wiki/display/AST/Application_Goto
Regards
Bilal
Its clear that you're missing some fundamental knowledge of
Asterisk configuration and operation. While its perfectly
fine to ask the mailing list for help, its also worthwhile
to learn what you can on your own.

Before continuing to ask questions on this list, you should
consider reading the information that is freely available
on the internet.

http://ofps.oreilly.com/titles/9780596517342/

(Note that the authors of that fine book would probably
appreciate you paying them for their hard work and effort,
but its still freely available if you choose not to do so)

--
Matthew Jordan
Digium, Inc. | Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at: http://digium.com & http://asterisk.org
bilal ghayyad
2012-07-11 21:56:22 UTC
Permalink
Fine, did you read the question well and understand about what I am asking?

I know well what Verbose do and what Goto do, and my question is not related to what they are doing because I used Goto 100 times or more. I have been working on Asterisk more than 5 years and installed alot of sites.


We were talking that if we are going to use the custom context, then we will not see a CDR for these calls that used the custom context. Then Warren suggested the below example.

My question was to know: if it going to use the from-internal context again, then why we used the Verbose (which will write to the CDR). Also, if I am going to use custom script, so why to come back to use the from-internal context (as the example mentioned in the goto). One more thing, I was not know that using Verbose will write in the CDR which will be enough to be able to display the calls in the freepbx CDR, because I was think that freepbx CDR reads from the database which means there is a specific format of the records that should be inserted. But if Verbose will resolve this, so it means that the logging is happening direct to the database (or maybe there is a process that migrate from the text logs to the database).

This is because I am new for freepbx (and I agree on this), but not new for Asterisk.

If Verbose is enough to be able to see the calls in the freepbx CDR, then I can use it and I can write my own scripts and do not use any thing in the from-internal conext (so no need to use the Goto command), this is what I was need to know.

Sorry for bothering but I am declaring what I was mean.

Also, until now I did not get to know how to get the custom context module that help in writing my own context without going through all of this troubles.

Freepbx scripts are not simply, it is complex. So do not blame me when I ask about it and its logic.

Thanks for your reply, but I was would to hear better than what you replied (although u did not really answer my questions), because I already got the same results you sent when I googled.

Regards
Bilal

-----------
Post by bilal ghayyad
Post by bilal ghayyad
Dear Warren;
I did not understand the example below well.
What the Verbose will do? It will write in the CDR or
the database?
Post by bilal ghayyad
Really this did not understand.
https://wiki.asterisk.org/wiki/display/AST/Application_Verbose
Post by bilal ghayyad
Also did not understand this lineL same =>
n,Goto(${EXTEN},from-internal,1) How it will work? Can
u plz
Post by bilal ghayyad
explain?
https://wiki.asterisk.org/wiki/display/AST/Application_Goto
Post by bilal ghayyad
Regards
Bilal
Its clear that you're missing some fundamental knowledge of
Asterisk configuration and operation.  While its
perfectly
fine to ask the mailing list for help, its also worthwhile
to learn what you can on your own.
Before continuing to ask questions on this list, you should
consider reading the information that is freely available
on the internet.
http://ofps.oreilly.com/titles/9780596517342/
(Note that the authors of that fine book would probably
appreciate you paying them for their hard work and effort,
but its still freely available if you choose not to do so)
--
Matthew Jordan
Digium, Inc. | Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at: http://digium.com & http://asterisk.org
Warren Selby
2012-07-11 23:01:38 UTC
Permalink
Post by bilal ghayyad
Fine, did you read the question well and understand about what I am asking?
Perhaps I did not understand what you were asking. I thought you were
wanting to do something custom per extension (in the case of my example,
the "something custom" was control outbound call access to either local
only or local and long distance, etc. You can figure out you're own
"something custom"), but still have all the calls have all the standard
FreePBX features that you only get when using the [from-internal] context.

In my example, the extensions are in the 2XXX range, and they would either
have a context of [custom-local-only] or [custom-long-distance], depending
on what you wanted to allow that extension to dial.

To break down my example:



[custom-local-only] --> The name of our custom context. It could be
anything you want, as long as it's in square brackets

exten => _281NXXXXXX,1,Verbose(Outbound call from local-only context) -->
This step is purely informational, it has no bearing on CDRs or anything
else...it's just a useful step for debugging. I tend to do this for
everything, it's the same as some people use the "NoOp()" command to have
debugging information in their CLI output.

same => n,Goto(${EXTEN},from-internal,1) --> This step sends the call to
the [from-internal] context and handles it exactly as if you weren't using
any custom call controls. In my example, however, it will only go there if
it meets the criteria of matching the pattern (in other words, the call
would have to be placed to a number that matches the _281NXXXXXX pattern).
"same => n" is a shorthand way of writing "exten => _281NXXXXXX,n". It was
added in around 1.6 I think, I'm not entirely sure.

exten => _2XXX,1,Verbose(Internal extension-to-extension call) --> Again,
this is purely an informational step, useful for debugging. It can be
skipped or expanded as you see fit, it has no bearing on CDR records or
anything else, other than CLI output.

same => n,Goto(${EXTEN},from-internal,1) --> This does the same as the
previous example, however it will only go to the [from-internal] context if
the pattern that was dialed matches _2XXX. This is assuming you're using
internal extensions in the range of _2XXX. You can change this to whatever
works for you.

[custom-long-distance] --> another custom context, this time it allows
long distance NANPA calling as well as local and internal calls

exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local and long-distance
context) --> I hope you're seeing the pattern by now. This is simply a
useful debugging step, with no bearing on anything else.

same => n,Goto(${EXTEN},from-internal,1) --> The call passes into the
[from-internal context if it matches the pattern of _1NXXNXXXXXX, a typical
NANPA long distance call.

include => custom-local-only --> include the local dialing context that
way we don't have to duplicate any code that we've previously written,
mostly useful for the internal extension dialing.



So you can see, the Verbose() statement has no bearing on CDR's what so
ever. I wasn't aware that FreePBX used any kind of custom CDR database, I
assumed it was simply using the asterisk CDR database, where any call
through the system generates a CDR. Since someone else had mentioned that
they did not get any CDR logging or any of the other FreePBX features
without making the extension have a context of [from-internal], I was
showing how to do simple things like local and long-distance access control
in the extensions_custom.conf file, and then sending the call into the
default [from-internal] context. What I provided was mostly just supposed
to be an example that you could build off of. You don't have to use
Verbose() if you don't want to, that's just something I've grown accustomed
to doing.

I'm by no means an expert at FreePBX. If you find that using custom
contexts are not helping in you situation, perhaps you can expand on what
the actual issue is that you're experiencing, and we can try to help
troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
SamyGo
2012-07-12 04:52:21 UTC
Permalink
See
Route-Permissions module,
It lets you restrict certain phones/extensions to follow a dial-plan
pattern and dial out to the defined trunk etc meanwhile not breaking any
other functionality or features of FPBX- though you can restrict the
features from this too.

http://www.freepbx.org/support/documentation/howtos/how-to-give-a-particular-extension-different-or-restricted-trunk-access

http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/outbound-route-permission

http://mirror.freepbx.org/modules/release/contributed_modules/

OR
Custom Context
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/customcontexts


See w/e fits your requirements. What I suggest suits your need is the
Route-permission module. Though it'll be bit complicated but worth giving a
try.

Regards,
Sammy
Post by Warren Selby
Post by bilal ghayyad
Fine, did you read the question well and understand about what I am asking?
Perhaps I did not understand what you were asking. I thought you were
wanting to do something custom per extension (in the case of my example,
the "something custom" was control outbound call access to either local
only or local and long distance, etc. You can figure out you're own
"something custom"), but still have all the calls have all the standard
FreePBX features that you only get when using the [from-internal] context.
In my example, the extensions are in the 2XXX range, and they would either
have a context of [custom-local-only] or [custom-long-distance], depending
on what you wanted to allow that extension to dial.
[custom-local-only] --> The name of our custom context. It could be
anything you want, as long as it's in square brackets
exten => _281NXXXXXX,1,Verbose(Outbound call from local-only context) -->
This step is purely informational, it has no bearing on CDRs or anything
else...it's just a useful step for debugging. I tend to do this for
everything, it's the same as some people use the "NoOp()" command to have
debugging information in their CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This step sends the call to
the [from-internal] context and handles it exactly as if you weren't using
any custom call controls. In my example, however, it will only go there if
it meets the criteria of matching the pattern (in other words, the call
would have to be placed to a number that matches the _281NXXXXXX pattern).
"same => n" is a shorthand way of writing "exten => _281NXXXXXX,n". It was
added in around 1.6 I think, I'm not entirely sure.
exten => _2XXX,1,Verbose(Internal extension-to-extension call) --> Again,
this is purely an informational step, useful for debugging. It can be
skipped or expanded as you see fit, it has no bearing on CDR records or
anything else, other than CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This does the same as the
previous example, however it will only go to the [from-internal] context if
the pattern that was dialed matches _2XXX. This is assuming you're using
internal extensions in the range of _2XXX. You can change this to whatever
works for you.
[custom-long-distance] --> another custom context, this time it allows
long distance NANPA calling as well as local and internal calls
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local and long-distance
context) --> I hope you're seeing the pattern by now. This is simply a
useful debugging step, with no bearing on anything else.
same => n,Goto(${EXTEN},from-internal,1) --> The call passes into the
[from-internal context if it matches the pattern of _1NXXNXXXXXX, a typical
NANPA long distance call.
include => custom-local-only --> include the local dialing context that
way we don't have to duplicate any code that we've previously written,
mostly useful for the internal extension dialing.
So you can see, the Verbose() statement has no bearing on CDR's what so
ever. I wasn't aware that FreePBX used any kind of custom CDR database, I
assumed it was simply using the asterisk CDR database, where any call
through the system generates a CDR. Since someone else had mentioned that
they did not get any CDR logging or any of the other FreePBX features
without making the extension have a context of [from-internal], I was
showing how to do simple things like local and long-distance access control
in the extensions_custom.conf file, and then sending the call into the
default [from-internal] context. What I provided was mostly just supposed
to be an example that you could build off of. You don't have to use
Verbose() if you don't want to, that's just something I've grown accustomed
to doing.
I'm by no means an expert at FreePBX. If you find that using custom
contexts are not helping in you situation, perhaps you can expand on what
the actual issue is that you're experiencing, and we can try to help
troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
Duncan Turnbull
2012-07-12 05:29:03 UTC
Permalink
You can also specify routes with an callerid qualifier as 09XXXXXX/20X

This would only have it apply to extensions in the 200-209 range

That route can then point to a trunk going nowhere if you want to block them

In freepbx there is a field in outbound route page to select callerid that the route applies to

Cheers Duncan
Post by SamyGo
See
Route-Permissions module,
It lets you restrict certain phones/extensions to follow a dial-plan pattern and dial out to the defined trunk etc meanwhile not breaking any other functionality or features of FPBX- though you can restrict the features from this too.
http://www.freepbx.org/support/documentation/howtos/how-to-give-a-particular-extension-different-or-restricted-trunk-access
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/outbound-route-permission
http://mirror.freepbx.org/modules/release/contributed_modules/
OR
Custom Context
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/customcontexts
See w/e fits your requirements. What I suggest suits your need is the Route-permission module. Though it'll be bit complicated but worth giving a try.
Regards,
Sammy
Fine, did you read the question well and understand about what I am asking?
Perhaps I did not understand what you were asking. I thought you were wanting to do something custom per extension (in the case of my example, the "something custom" was control outbound call access to either local only or local and long distance, etc. You can figure out you're own "something custom"), but still have all the calls have all the standard FreePBX features that you only get when using the [from-internal] context.
In my example, the extensions are in the 2XXX range, and they would either have a context of [custom-local-only] or [custom-long-distance], depending on what you wanted to allow that extension to dial.
[custom-local-only] --> The name of our custom context. It could be anything you want, as long as it's in square brackets
exten => _281NXXXXXX,1,Verbose(Outbound call from local-only context) --> This step is purely informational, it has no bearing on CDRs or anything else...it's just a useful step for debugging. I tend to do this for everything, it's the same as some people use the "NoOp()" command to have debugging information in their CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This step sends the call to the [from-internal] context and handles it exactly as if you weren't using any custom call controls. In my example, however, it will only go there if it meets the criteria of matching the pattern (in other words, the call would have to be placed to a number that matches the _281NXXXXXX pattern). "same => n" is a shorthand way of writing "exten => _281NXXXXXX,n". It was added in around 1.6 I think, I'm not entirely sure.
exten => _2XXX,1,Verbose(Internal extension-to-extension call) --> Again, this is purely an informational step, useful for debugging. It can be skipped or expanded as you see fit, it has no bearing on CDR records or anything else, other than CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This does the same as the previous example, however it will only go to the [from-internal] context if the pattern that was dialed matches _2XXX. This is assuming you're using internal extensions in the range of _2XXX. You can change this to whatever works for you.
[custom-long-distance] --> another custom context, this time it allows long distance NANPA calling as well as local and internal calls
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local and long-distance context) --> I hope you're seeing the pattern by now. This is simply a useful debugging step, with no bearing on anything else.
same => n,Goto(${EXTEN},from-internal,1) --> The call passes into the [from-internal context if it matches the pattern of _1NXXNXXXXXX, a typical NANPA long distance call.
include => custom-local-only --> include the local dialing context that way we don't have to duplicate any code that we've previously written, mostly useful for the internal extension dialing.
So you can see, the Verbose() statement has no bearing on CDR's what so ever. I wasn't aware that FreePBX used any kind of custom CDR database, I assumed it was simply using the asterisk CDR database, where any call through the system generates a CDR. Since someone else had mentioned that they did not get any CDR logging or any of the other FreePBX features without making the extension have a context of [from-internal], I was showing how to do simple things like local and long-distance access control in the extensions_custom.conf file, and then sending the call into the default [from-internal] context. What I provided was mostly just supposed to be an example that you could build off of. You don't have to use Verbose() if you don't want to, that's just something I've grown accustomed to doing.
I'm by no means an expert at FreePBX. If you find that using custom contexts are not helping in you situation, perhaps you can expand on what the actual issue is that you're experiencing, and we can try to help troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
SamyGo
2012-07-12 06:11:48 UTC
Permalink
Great tip Duncan :)
Post by Duncan Turnbull
You can also specify routes with an callerid qualifier as 09XXXXXX/20X
This would only have it apply to extensions in the 200-209 range
That route can then point to a trunk going nowhere if you want to block them
In freepbx there is a field in outbound route page to select callerid that
the route applies to
Cheers Duncan
See
Route-Permissions module,
It lets you restrict certain phones/extensions to follow a dial-plan
pattern and dial out to the defined trunk etc meanwhile not breaking any
other functionality or features of FPBX- though you can restrict the
features from this too.
http://www.freepbx.org/support/documentation/howtos/how-to-give-a-particular-extension-different-or-restricted-trunk-access
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/outbound-route-permission
http://mirror.freepbx.org/modules/release/contributed_modules/
OR
Custom Context
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/customcontexts
See w/e fits your requirements. What I suggest suits your need is the
Route-permission module. Though it'll be bit complicated but worth giving a
try.
Regards,
Sammy
Post by Warren Selby
Post by bilal ghayyad
Fine, did you read the question well and understand about what I am asking?
Perhaps I did not understand what you were asking. I thought you were
wanting to do something custom per extension (in the case of my example,
the "something custom" was control outbound call access to either local
only or local and long distance, etc. You can figure out you're own
"something custom"), but still have all the calls have all the standard
FreePBX features that you only get when using the [from-internal] context.
In my example, the extensions are in the 2XXX range, and they would
either have a context of [custom-local-only] or [custom-long-distance],
depending on what you wanted to allow that extension to dial.
[custom-local-only] --> The name of our custom context. It could be
anything you want, as long as it's in square brackets
exten => _281NXXXXXX,1,Verbose(Outbound call from local-only context) -->
This step is purely informational, it has no bearing on CDRs or anything
else...it's just a useful step for debugging. I tend to do this for
everything, it's the same as some people use the "NoOp()" command to have
debugging information in their CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This step sends the call
to the [from-internal] context and handles it exactly as if you weren't
using any custom call controls. In my example, however, it will only go
there if it meets the criteria of matching the pattern (in other words, the
call would have to be placed to a number that matches the _281NXXXXXX
pattern). "same => n" is a shorthand way of writing "exten =>
_281NXXXXXX,n". It was added in around 1.6 I think, I'm not entirely
sure.
exten => _2XXX,1,Verbose(Internal extension-to-extension call) -->
Again, this is purely an informational step, useful for debugging. It can
be skipped or expanded as you see fit, it has no bearing on CDR records or
anything else, other than CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This does the same as the
previous example, however it will only go to the [from-internal] context if
the pattern that was dialed matches _2XXX. This is assuming you're using
internal extensions in the range of _2XXX. You can change this to whatever
works for you.
[custom-long-distance] --> another custom context, this time it allows
long distance NANPA calling as well as local and internal calls
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local and
long-distance context) --> I hope you're seeing the pattern by now. This
is simply a useful debugging step, with no bearing on anything else.
same => n,Goto(${EXTEN},from-internal,1) --> The call passes into the
[from-internal context if it matches the pattern of _1NXXNXXXXXX, a typical
NANPA long distance call.
include => custom-local-only --> include the local dialing context that
way we don't have to duplicate any code that we've previously written,
mostly useful for the internal extension dialing.
So you can see, the Verbose() statement has no bearing on CDR's what so
ever. I wasn't aware that FreePBX used any kind of custom CDR database, I
assumed it was simply using the asterisk CDR database, where any call
through the system generates a CDR. Since someone else had mentioned that
they did not get any CDR logging or any of the other FreePBX features
without making the extension have a context of [from-internal], I was
showing how to do simple things like local and long-distance access control
in the extensions_custom.conf file, and then sending the call into the
default [from-internal] context. What I provided was mostly just supposed
to be an example that you could build off of. You don't have to use
Verbose() if you don't want to, that's just something I've grown accustomed
to doing.
I'm by no means an expert at FreePBX. If you find that using custom
contexts are not helping in you situation, perhaps you can expand on what
the actual issue is that you're experiencing, and we can try to help
troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
Duncan Turnbull
2012-07-12 08:39:09 UTC
Permalink
Thanks Samy

I am figuring you may know but with freepbx if you want to make it a bit more tailored then send it to a custom trunk

In freepbx add a custom trunk with the custom dial string
Local/$OUTNUM$@blocked-number-custom

/etc/asterisk/extensions_custom.conf
[blocked-number-custom]
exten => _X.,1,Answer()
exten => _X.,n,Verbose("Blocked an 0900 trunk call")
exten => _X.,n,Playback(custom/0900-block)
exten => _X.,n,Hangup

And you can record a message or send it somewhere else or whatever you feel like

Cheers Duncan
Post by SamyGo
Great tip Duncan :)
You can also specify routes with an callerid qualifier as 09XXXXXX/20X
This would only have it apply to extensions in the 200-209 range
That route can then point to a trunk going nowhere if you want to block them
In freepbx there is a field in outbound route page to select callerid that the route applies to
Cheers Duncan
Post by SamyGo
See
Route-Permissions module,
It lets you restrict certain phones/extensions to follow a dial-plan pattern and dial out to the defined trunk etc meanwhile not breaking any other functionality or features of FPBX- though you can restrict the features from this too.
http://www.freepbx.org/support/documentation/howtos/how-to-give-a-particular-extension-different-or-restricted-trunk-access
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/outbound-route-permission
http://mirror.freepbx.org/modules/release/contributed_modules/
OR
Custom Context
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/customcontexts
See w/e fits your requirements. What I suggest suits your need is the Route-permission module. Though it'll be bit complicated but worth giving a try.
Regards,
Sammy
Fine, did you read the question well and understand about what I am asking?
Perhaps I did not understand what you were asking. I thought you were wanting to do something custom per extension (in the case of my example, the "something custom" was control outbound call access to either local only or local and long distance, etc. You can figure out you're own "something custom"), but still have all the calls have all the standard FreePBX features that you only get when using the [from-internal] context.
In my example, the extensions are in the 2XXX range, and they would either have a context of [custom-local-only] or [custom-long-distance], depending on what you wanted to allow that extension to dial.
[custom-local-only] --> The name of our custom context. It could be anything you want, as long as it's in square brackets
exten => _281NXXXXXX,1,Verbose(Outbound call from local-only context) --> This step is purely informational, it has no bearing on CDRs or anything else...it's just a useful step for debugging. I tend to do this for everything, it's the same as some people use the "NoOp()" command to have debugging information in their CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This step sends the call to the [from-internal] context and handles it exactly as if you weren't using any custom call controls. In my example, however, it will only go there if it meets the criteria of matching the pattern (in other words, the call would have to be placed to a number that matches the _281NXXXXXX pattern). "same => n" is a shorthand way of writing "exten => _281NXXXXXX,n". It was added in around 1.6 I think, I'm not entirely sure.
exten => _2XXX,1,Verbose(Internal extension-to-extension call) --> Again, this is purely an informational step, useful for debugging. It can be skipped or expanded as you see fit, it has no bearing on CDR records or anything else, other than CLI output.
same => n,Goto(${EXTEN},from-internal,1) --> This does the same as the previous example, however it will only go to the [from-internal] context if the pattern that was dialed matches _2XXX. This is assuming you're using internal extensions in the range of _2XXX. You can change this to whatever works for you.
[custom-long-distance] --> another custom context, this time it allows long distance NANPA calling as well as local and internal calls
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from local and long-distance context) --> I hope you're seeing the pattern by now. This is simply a useful debugging step, with no bearing on anything else.
same => n,Goto(${EXTEN},from-internal,1) --> The call passes into the [from-internal context if it matches the pattern of _1NXXNXXXXXX, a typical NANPA long distance call.
include => custom-local-only --> include the local dialing context that way we don't have to duplicate any code that we've previously written, mostly useful for the internal extension dialing.
So you can see, the Verbose() statement has no bearing on CDR's what so ever. I wasn't aware that FreePBX used any kind of custom CDR database, I assumed it was simply using the asterisk CDR database, where any call through the system generates a CDR. Since someone else had mentioned that they did not get any CDR logging or any of the other FreePBX features without making the extension have a context of [from-internal], I was showing how to do simple things like local and long-distance access control in the extensions_custom.conf file, and then sending the call into the default [from-internal] context. What I provided was mostly just supposed to be an example that you could build off of. You don't have to use Verbose() if you don't want to, that's just something I've grown accustomed to doing.
I'm by no means an expert at FreePBX. If you find that using custom contexts are not helping in you situation, perhaps you can expand on what the actual issue is that you're experiencing, and we can try to help troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
http://www.asterisk.org/hello
asterisk-users mailing list
http://lists.digium.com/mailman/listinfo/asterisk-users
bilal ghayyad
2012-07-16 09:24:26 UTC
Permalink
Dears;

First, I would like to declare that I used sip_custom.conf and extensions_custom.conf and I discovered that the calls are not shown in the CDR.

Until now I did not check if I can browse the voicemails using the FreePBX if I used the extensions_custom.com file.

Now, if we are talking about using the addon modules (official or not official), then it means still I have to stick on using the FreePBX GUI which generates complicated script.

As I see, if I need to have the CDR and the voicemail functionalities that can be browsed via the GUI, then I have to use the FreePBX or the third party modules and can not write manual in my hand as normally we do in the native Asterisk.

Thanks for the input for all the friends who shared with me and gave me the good information that also helped.

Regards
Bilal
----------------
Post by SamyGo
See
Route-Permissions module,
It lets you restrict certain phones/extensions to follow a
dial-plan
pattern and dial out to the defined trunk etc meanwhile not
breaking any
other functionality or features of FPBX- though you can
restrict the
features from this too.
http://www.freepbx.org/support/documentation/howtos/how-to-give-a-particular-extension-different-or-restricted-trunk-access
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/outbound-route-permission
http://mirror.freepbx.org/modules/release/contributed_modules/
OR
Custom Context
http://www.freepbx.org/support/documentation/module-documentation/third-party-unsupported-modules/customcontexts
See w/e fits your requirements. What I suggest suits your
need is the
Route-permission module. Though it'll be bit complicated but
worth giving a
try.
Regards,
Sammy
Post by Warren Selby
Post by bilal ghayyad
Fine, did you read the question well and understand
about what I am
Post by Warren Selby
Post by bilal ghayyad
asking?
Perhaps I did not understand what you were
asking.  I thought you were
Post by Warren Selby
wanting to do something custom per extension (in the
case of my example,
Post by Warren Selby
the "something custom" was control outbound call access
to either local
Post by Warren Selby
only or local and long distance, etc.  You can
figure out you're own
Post by Warren Selby
"something custom"), but still have all the calls have
all the standard
Post by Warren Selby
FreePBX features that you only get when using the
[from-internal] context.
Post by Warren Selby
In my example, the extensions are in the 2XXX range,
and they would either
Post by Warren Selby
have a context of [custom-local-only] or
[custom-long-distance], depending
Post by Warren Selby
on what you wanted to allow that extension to dial.
[custom-local-only]  --> The name of our custom
context.  It could be
Post by Warren Selby
anything you want, as long as it's in square brackets
exten => _281NXXXXXX,1,Verbose(Outbound call from
local-only context) -->
Post by Warren Selby
This step is purely informational, it has no bearing on
CDRs or anything
Post by Warren Selby
else...it's just a useful step for debugging.  I
tend to do this for
Post by Warren Selby
everything, it's the same as some people use the
"NoOp()" command to have
Post by Warren Selby
debugging information in their CLI output.
  same => n,Goto(${EXTEN},from-internal,1) 
--> This step sends the call to
Post by Warren Selby
the [from-internal] context and handles it exactly as
if you weren't using
Post by Warren Selby
any custom call controls.  In my example, however,
it will only go there if
Post by Warren Selby
it meets the criteria of matching the pattern (in other
words, the call
Post by Warren Selby
would have to be placed to a number that matches the
_281NXXXXXX pattern).
Post by Warren Selby
"same => n" is a shorthand way of writing "exten
=> _281NXXXXXX,n".  It was
Post by Warren Selby
added in around 1.6 I think, I'm not entirely sure.
exten => _2XXX,1,Verbose(Internal
extension-to-extension call)  --> Again,
Post by Warren Selby
this is purely an informational step, useful for
debugging.  It can be
Post by Warren Selby
skipped or expanded as you see fit, it has no bearing
on CDR records or
Post by Warren Selby
anything else, other than CLI output.
  same => n,Goto(${EXTEN},from-internal,1) 
--> This does the same as the
Post by Warren Selby
previous example, however it will only go to the
[from-internal] context if
Post by Warren Selby
the pattern that was dialed matches _2XXX.  This
is assuming you're using
Post by Warren Selby
internal extensions in the range of _2XXX.  You
can change this to whatever
Post by Warren Selby
works for you.
[custom-long-distance]  --> another custom
context, this time it allows
Post by Warren Selby
long distance NANPA calling as well as local and
internal calls
Post by Warren Selby
exten => _1NXXNXXXXXX,1,Verbose(Outbound call from
local and long-distance
Post by Warren Selby
context)  --> I hope you're seeing the pattern
by now.  This is simply a
Post by Warren Selby
useful debugging step, with no bearing on anything
else.
Post by Warren Selby
  same => n,Goto(${EXTEN},from-internal,1) 
--> The call passes into the
Post by Warren Selby
[from-internal context if it matches the pattern of
_1NXXNXXXXXX, a typical
Post by Warren Selby
NANPA long distance call.
include => custom-local-only  --> include
the local dialing context that
Post by Warren Selby
way we don't have to duplicate any code that we've
previously written,
Post by Warren Selby
mostly useful for the internal extension dialing.
So you can see, the Verbose() statement has no bearing
on CDR's what so
Post by Warren Selby
ever.  I wasn't aware that FreePBX used any kind
of custom CDR database, I
Post by Warren Selby
assumed it was simply using the asterisk CDR database,
where any call
Post by Warren Selby
through the system generates a CDR.  Since someone
else had mentioned that
Post by Warren Selby
they did not get any CDR logging or any of the other
FreePBX features
Post by Warren Selby
without making the extension have a context of
[from-internal], I was
Post by Warren Selby
showing how to do simple things like local and
long-distance access control
Post by Warren Selby
in the extensions_custom.conf file, and then sending
the call into the
Post by Warren Selby
default [from-internal] context. What I provided was
mostly just supposed
Post by Warren Selby
to be an example that you could build off of.  You
don't have to use
Post by Warren Selby
Verbose() if you don't want to, that's just something
I've grown accustomed
Post by Warren Selby
to doing.
I'm by no means an expert at FreePBX.  If you find
that using custom
Post by Warren Selby
contexts are not helping in you situation, perhaps you
can expand on what
Post by Warren Selby
the actual issue is that you're experiencing, and we
can try to help
Post by Warren Selby
troubleshoot from there.
--
Thanks,
--Warren Selby, dCAP
http://www.SelbyTech.com <http://www.selbytech.com>
Loading...