[OpenSIPS-Users] early dialog termination
Bogdan-Andrei Iancu
bogdan at opensips.org
Wed Oct 12 10:11:08 UTC 2022
Perfect !!!
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
https://www.opensips-solutions.com
OpenSIPS Summit 27-30 Sept 2022, Athens
https://www.opensips.org/events/Summit-2022Athens/
On 10/12/22 1:09 PM, Ryzhik Ivan wrote:
> I found a solution. hex strings are reversed).
> Thank you very much!
>
> ср, 12 окт. 2022 г. в 12:59, Ryzhik Ivan <ryzhik.ivan at gmail.com
> <mailto:ryzhik.ivan at gmail.com>>:
>
> and one more research: $T_id returns hex encoded label.hashid
> but my attempts failed:
> got $T_id = 6545e285.3fe4
> Send: {"jsonrpc": "2.0", "method": "t_reply", "id": 1, "params":
> {"code": "487", "reason": "Terminating", "trans_id":
> "16356:1699078789", "to_tag": "<null>"}}
> Got: b'{"jsonrpc":"2.0","error":{"code":404,"message":"Transaction
> not found"},"id":1}'
>
>
> ср, 12 окт. 2022 г. в 11:13, Ryzhik Ivan <ryzhik.ivan at gmail.com
> <mailto:ryzhik.ivan at gmail.com>>:
>
> Thank you, Bogdan.
> I got stuck with tm documentation.
> 1) MI t_reply command has named parameters, ok, no problem.
> 2) trans_id - transaction identifier (has the
> hash_entry:label format) - what is this? if i use $T_id i got
> reply "Invalid trans_id".
> 3) Where can I get to_tag from script level on initial invite?
> ...
> t_reply_with_body(183, "Session progress",
> $(var(body){re.subst,$var(re)}) );
> avp_db_query("insert into moh (callid, timeout,
> tid,totag) values ('$ci', $var(wait_time), '$T_id', '??????')");
> ...
>
> Regards, Ivan.
>
> вт, 11 окт. 2022 г. в 12:35, Bogdan-Andrei Iancu
> <bogdan at opensips.org <mailto:bogdan at opensips.org>>:
>
> Hi Ivan,
>
> you can use timer_route, but as there is no way to send a
> reply for a particular transaction from script level (only
> to the currently processed request), you will have to
> trigger the MI cmds from the timer route, which is a bit
> hackish ....
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
> https://www.opensips-solutions.com <https://www.opensips-solutions.com>
> OpenSIPS Summit 27-30 Sept 2022, Athens
> https://www.opensips.org/events/Summit-2022Athens/ <https://www.opensips.org/events/Summit-2022Athens/>
>
> On 10/11/22 11:47 AM, Ryzhik Ivan wrote:
>> Hi, Bogdan!
>> What d' you think, can we use timer_route instead of an
>> external script?
>> Regards, Ivan.
>>
>> пн, 10 окт. 2022 г. в 17:04, Bogdan-Andrei Iancu
>> <bogdan at opensips.org <mailto:bogdan at opensips.org>>:
>>
>> Hi Ryzhik,
>>
>> Without a t_relay() it makes not much sense to have
>> an dialog structure at all - the dialog module in
>> opensips is actually design for proxied calls, not
>> for UAC calls.
>>
>> IMO, you should keep it a transaction level, by
>> sending replies back only. When getting the INVITE,
>> put its call-id into a DB table (to keep only the
>> "active" session) together with a lifetime /
>> expiration time. When getting a CANCEL, update the
>> table (set lifetime to 0), to know it is terminated.
>> And use an simple external script that keeps scanning
>> the DB for (1) sending 487 Terminated via MI if the
>> record has 0 lifetime or (2) send a 408 Timeout via
>> MI if the lifetime exceeded.
>> In a similar way you can handle the BYE - send back
>> 200OK for the BYE and set 0 in lifetime, to send a
>> 487 canceled back
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>>
>> OpenSIPS Founder and Developer
>> https://www.opensips-solutions.com <https://www.opensips-solutions.com>
>> OpenSIPS Summit 27-30 Sept 2022, Athens
>> https://www.opensips.org/events/Summit-2022Athens/ <https://www.opensips.org/events/Summit-2022Athens/>
>>
>> On 10/10/22 4:33 PM, Ryzhik Ivan wrote:
>>> Hello!
>>> My opensips version is 3.1 with tm,dialog and
>>> rtpengine modules.
>>> On incoming INVITE i'm creating an early dialog with
>>> 183 replies and i'm playing audio to caller with
>>> rtpengine, no t_relay() on this step, OS is acting
>>> as UAS endpoint.
>>> If the caller cancels the invite with a CANCEL
>>> message - all works great.
>>> But some users terminate dialog with BYE message.
>>> 1) on BYE with to-tag OS can't find dialog with
>>> match_dialog(), because to-tag presents.
>>> 2) if i use load_dialog_ctx($ci) - it is possible
>>> to handle BYE.
>>> 3) in early dialog termination with BYE we also need
>>> to send final response to the INVITE transaction.
>>>
>>> Maybe I did something wrong, but I can't handle the
>>> final response to INVITE in this case.
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users <http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20221012/9d8ecbac/attachment.html>
More information about the Users
mailing list