Well, the generic answer to the question of how to periodically do
something in the background is 'rtimer':
https://kamailio.org/docs/modules/5.2.x/modules/rtimer.html
This can be combined with putting dialogs in an `htable` (perhaps using
the dialog module's start/end event_routes) and walking over the
entries in a background rtimer route:
https://kamailio.org/docs/modules/5.2.x/modules/htable.html#htable.f.sht_it…
Alternately, one can use jsonrpc_exec()
https://kamailio.org/docs/modules/5.2.x/modules/jsonrpcs.html#jsonrpcs.f.js…
to run 'dlg.list':
https://kamailio.org/docs/modules/5.2.x/modules/dialog.html#dlg.r.list
... and iterate over the output with the help of the 'jansson' module
(JSON parser):
https://kamailio.org/docs/modules/5.2.x/modules/jansson.html
But honestly, I'd ask yourself whether this extra layer of complexity is
truly worth it. For a lot of prepaid setups, live balance decrementing
isn't worth the bother.
An alternate and simpler approach is to just let the call be initiated
if the balance is > 0 at the time the call is made, then deduct from the
balance when the call ends.
Yeah, it means someone's free to make a 4 hour call without the prepaid
credit to support it, and worse yet, possibly a number of 4 hour calls
initiated simultaneously. But most calls aren't like that, and from a
business perspective, is it really worth the headache of live
decrementing and all the moving parts involved?
Maybe it is, but I would at least ask the question.
-- Alex
On Fri, May 24, 2019 at 06:18:19PM +0100, Steve Bucklin wrote:
Hello all (again),
I am looking at a 'good' method to start a call with "chunks" of time
allocated. I wish the initial call to check a credit, and if credit is good,
allow a small amount of time (say 30 seconds). I have enabled DIALOG and
have looked at CNXCC, but am confused!
When the initial 30 seconds runs out, I want to authorise another 30
seconds, etc, etc, etc. I have started to play and set a dialog timer that
expires to a route, and then can 'return' allowing the call to continue -
BUT was not able to reset the dialog timer to trip again after another 30
seconds.
I tried to 'set_max_time' on cnxcc, but this did not seem to trip the event
route upon timeout?
Does anyone have a pointer to any examples? I also am unsure of how to
update the timer and keep a call in play!
Steve
_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users(a)lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web:
http://www.evaristesys.com/,
http://www.csrpswitch.com/