[OpenSIPS-Users] $DLG_lifetime but in ms
trevor at webon.co.za
trevor at webon.co.za
Tue Jan 23 19:41:10 UTC 2024
On Tue, 2024-01-23 at 09:25 -0600, Marcin Groszek wrote:
>
> If you are not calculating the cost of the call in the script it self
> you may create external script to go over your acc table and use
> "ms_duration" to adjust "duration"
>
> or use $Ts$Tsm at the beginning of the call, save it to a dialog and
> compare it with same value at the end of the call, then round up and
> write to acc table and/or calculate cost of the call.
>
>
>
>
> On 1/23/2024 9:01 AM, Marcin Groszek wrote:
>
>
> > use math_ceil
> >
> > 1.4.5. math_ceil(number, result_var)
> >
> > Truncates a number, always towards +infinity. This means that
> > ceil(3.2) = 4.0 and ceil(-2.9) = -2.0
> >
> >
> > 1.10.3. $DLG_lifetime
> >
> > Returns the duration (in seconds)...
Hi Marcin,
Using math_ceil on $DLG_lifetime wont work as it returns seconds not
ms.
As for your other suggestion I am doing something similar just not sure
its the most efficient I am using get_accurate_time would $ts$Tsm be a
better approach,
at 200OK in onreply route
if ($rs == 200) {
get_accurate_time($var(now_s), $var(now_us));
$dlg_val(start_s) = $var(now_s);
$dlg_val(start_us) = $var(now_us);
}
then on BYE
if (is_method("BYE")) {
get_accurate_time($var(end_s), $var(end_us));
ts_usec_delta($(dlg_val(start_s){s.int}),
$(dlg_val(start_us){s.int}), $var(end_s), $var(end_us) ,
$var(billed_duration));
$var(end_us) , $acc_extra(billed_duration)\n");
math_eval("$var(billed_duration) / 1000000",
$var(billed_duration));
math_ceil($var(billed_duration),$var(billed_duration));
$acc_extra(billed_duration) = $var(billed_duration);
## Rate the call
math_eval("$acc_extra(c_price) / 60 * $acc_extra(billed_duration)",
$var(c_cost));
math_eval("$acc_extra(v_price) / 60 * $acc_extra(billed_duration)",
$var(v_cost));
$acc_extra(cost) = $var(c_cost);
$acc_extra(v_cost) = $var(v_cost);
}
Thanks.
More information about the Users
mailing list