Hi @ all,
I was wondering if anyone of you guys already implemented a system where one could limit the maximum number of concurrent calls? With ISDN-terminaladapters or analog-telefon-adapters it is no problem because the hardware itself is the limiting device, but with the growing amount of IP PBXs the need becomes obvious.
I am playing with the thought of writing something myself, but I am more a copy&paste programmer, so it will take quite some time :D
Maybe someone here likes the idea?
Here are my thoughts of how a module could provide a simple functionality:
INVITE: check 200 OK: create Re-INVITE: update BYE: delete
must provide:
create_call() update_call() delete call() check_limit()
create must save uuid,from,to,callid,timestamp in DB, from/to just for human readability ;)
update must update timestamp with uuid/callid match ( we enforce 300sec re-invite call refresh )
delete must delete the DB entry with uuid/callid match
check must count DB entries with uuid match and return amount of active calls.
cheers,
Patrick.
Hi Patrick,
Take a look at the dialog module and dialog profiling support - I think it will help you: http://lists.openser.org/pipermail/users/2008-June/017710.html
There is even an example similar to what you want to do.
Regards, Bogdan
Patrick Miccio wrote:
Hi @ all,
I was wondering if anyone of you guys already implemented a system where one could limit the maximum number of concurrent calls? With ISDN-terminaladapters or analog-telefon-adapters it is no problem because the hardware itself is the limiting device, but with the growing amount of IP PBXs the need becomes obvious.
I am playing with the thought of writing something myself, but I am more a copy&paste programmer, so it will take quite some time :D
Maybe someone here likes the idea?
Here are my thoughts of how a module could provide a simple functionality:
INVITE: check 200 OK: create Re-INVITE: update BYE: delete
must provide:
create_call() update_call() delete call() check_limit()
create must save uuid,from,to,callid,timestamp in DB, from/to just for human readability ;)
update must update timestamp with uuid/callid match ( we enforce 300sec re-invite call refresh )
delete must delete the DB entry with uuid/callid match
check must count DB entries with uuid match and return amount of active calls.
cheers,
Patrick.
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users
Hi,
that sounds promising, I like the 2nd example, limiting calls to PSTN is the idea.
The only problem is that OpenSER does only know about username/uuid, you cannot control if a customer with 1 contract uses 2 or more usernames. Then again we could limit calls based on the source IP, but customers can have more than 1 contract. . .
I thought about saving it in the usr_preferences somewhat like this:
+--------+------------+--------+-----------+------+-------+---------------------+ | uuid | username | domain | attribute | type | value | modified | +--------+------------+--------+-----------+------+-------+---------------------+ | 109357 | 0123456789 | | 100 | 2 | 1234 | 2008-06-09 18:09:37 | | 109357 | 0123456789 | | 101 | 3 | 10 | 2008-06-09 18:09:37 | | 102826 | 0987654321 | | 100 | 2 | 1234 | 2008-06-09 18:09:37 | | 102826 | 0987654321 | | 101 | 3 | 10 | 2008-06-09 18:09:37 |
this way you could have different uuids, but a common value of for example here 1234, and use that to identify the caller/contract.
cheers,
Patrick.
Hi Patrick,
Take a look at the dialog module and dialog profiling support - I think it will help you: http://lists.openser.org/pipermail/users/2008-June/017710.html
There is even an example similar to what you want to do.
Regards, Bogdan
Patrick Miccio wrote:
Hi @ all,
I was wondering if anyone of you guys already implemented a system where one could limit the maximum number of concurrent calls? With ISDN-terminaladapters or analog-telefon-adapters it is no problem because the hardware itself is the limiting device, but with the growing amount of IP PBXs the need becomes obvious.
I am playing with the thought of writing something myself, but I am more a copy&paste programmer, so it will take quite some time :D
Maybe someone here likes the idea?
Here are my thoughts of how a module could provide a simple functionality:
INVITE: check 200 OK: create Re-INVITE: update BYE: delete
must provide:
create_call() update_call() delete call() check_limit()
create must save uuid,from,to,callid,timestamp in DB, from/to just for human readability ;)
update must update timestamp with uuid/callid match ( we enforce 300sec re-invite call refresh )
delete must delete the DB entry with uuid/callid match
check must count DB entries with uuid match and return amount of active calls.
cheers,
Patrick.
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users
You can limit per contract. Check if the user belongs to a contract and then perform contract profiling instead of caller/callee profiling. That's the big thing about OpenSER: very flexible config.
Regards, Ovidiu Sas
On Thu, Jun 12, 2008 at 1:01 PM, Patrick Miccio patrick.miccio@inode.at wrote:
Hi,
that sounds promising, I like the 2nd example, limiting calls to PSTN is the idea.
The only problem is that OpenSER does only know about username/uuid, you cannot control if a customer with 1 contract uses 2 or more usernames. Then again we could limit calls based on the source IP, but customers can have more than 1 contract. . .
I thought about saving it in the usr_preferences somewhat like this:
+--------+------------+--------+-----------+------+-------+---------------------+ | uuid | username | domain | attribute | type | value | modified | +--------+------------+--------+-----------+------+-------+---------------------+ | 109357 | 0123456789 | | 100 | 2 | 1234 | 2008-06-09 18:09:37 | | 109357 | 0123456789 | | 101 | 3 | 10 | 2008-06-09 18:09:37 | | 102826 | 0987654321 | | 100 | 2 | 1234 | 2008-06-09 18:09:37 | | 102826 | 0987654321 | | 101 | 3 | 10 | 2008-06-09 18:09:37 |
this way you could have different uuids, but a common value of for example here 1234, and use that to identify the caller/contract.
cheers,
Patrick.
Hi Patrick,
Take a look at the dialog module and dialog profiling support - I think it will help you: http://lists.openser.org/pipermail/users/2008-June/017710.html
There is even an example similar to what you want to do.
Regards, Bogdan
Patrick Miccio wrote:
Hi @ all,
I was wondering if anyone of you guys already implemented a system where one could limit the maximum number of concurrent calls? With ISDN-terminaladapters or analog-telefon-adapters it is no problem because the hardware itself is the limiting device, but with the growing amount of IP PBXs the need becomes obvious.
I am playing with the thought of writing something myself, but I am more a copy&paste programmer, so it will take quite some time :D
Maybe someone here likes the idea?
Here are my thoughts of how a module could provide a simple functionality:
INVITE: check 200 OK: create Re-INVITE: update BYE: delete
must provide:
create_call() update_call() delete call() check_limit()
create must save uuid,from,to,callid,timestamp in DB, from/to just for human readability ;)
update must update timestamp with uuid/callid match ( we enforce 300sec re-invite call refresh )
delete must delete the DB entry with uuid/callid match
check must count DB entries with uuid match and return amount of active calls.
cheers,
Patrick.
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users
Users mailing list Users@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users