[OpenSIPS-Users] Create and send a 180 reply messsage
Bogdan-Andrei Iancu
bogdan at opensips.org
Fri Oct 25 12:09:19 UTC 2024
Hi,
Indeed, a funny un-consistency that has to be fixed. For now you can do
$(T_id{re.subst,/\./:/g}) instead of simple $T_id
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
https://www.opensips-solutions.com
https://www.siphub.com
On 23.10.2024 02:24, M S wrote:
> Hi Bogdan,
> I used T_id and it responds
> with: "error":{"code":400,"message":"Invalid trans_id"}
> Also the documentation says trans_id should be in hash:label format
> but $T_id is like 38151c86.ed7b
> Please advise.
>
> Thank you
>
> On Mon, Oct 21, 2024 at 2:23 PM Bogdan-Andrei Iancu
> <bogdan at opensips.org> wrote:
>
> Yes, correct!
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
> https://www.opensips-solutions.com
> https://www.siphub.com
>
> On 21.10.2024 15:22, M S wrote:
>> Thank you for your response, I will definitely check that. quick
>> question, is transaction id in there same as $T_id?
>>
>> On Mon, Oct 21, 2024 at 2:04 PM Bogdan-Andrei Iancu
>> <bogdan at opensips.org> wrote:
>>
>> Hi,
>>
>> The onreply route is not design to perform any signaling
>> within - its purpose is to give you access to the incoming
>> replies and to allow you to eventually modify their headers.
>> This is the reason why you cannot send a reply from the route.
>>
>> As a simple workaround, you can use the mi function `t_reply`
>> [1] via the mi_script module.
>>
>> [1]
>> https://opensips.org/html/docs/modules/3.4.x/tm.html#mi_t_reply
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>>
>> OpenSIPS Founder and Developer
>> https://www.opensips-solutions.com
>> https://www.siphub.com
>>
>> On 21.10.2024 00:35, M S wrote:
>>> Thank you for your ideas! I considered doing the perl
>>> solution but I wondered if there is a more "native" solution
>>> to try first. the idea to patch t_reply seems legitimate,
>>> but you are right about whether it may need additional
>>> changes too, and which leg the reply goes back to in a reply
>>> route, does it go to the one who sent 200? I guess that
>>> needs to be checked but since my system is under load I am a
>>> little hesitant about making big changes, maybe one of
>>> Opensips people can comment too....
>>>
>>> On Sun, Oct 20, 2024 at 10:28 PM mayamatakeshi
>>> <mayamatakeshi at gmail.com> wrote:
>>>
>>>
>>>
>>> On Sun, Oct 20, 2024 at 11:38 PM M S
>>> <medeanwz at gmail.com> wrote:
>>>
>>> Hi list,
>>> I am having a problem that my upstream provider
>>> disconnects the call if my client does not send
>>> 180/183 before 200 OK.
>>> At the time of receiving 200 OK (in reply_route) I
>>> can check to see if previously a 180/183 was also
>>> sent or not.
>>> My solution is: as soon as I receive a 200 OK from
>>> the client, if 180/183 was not received before, I
>>> create a 180 ringing message and send it to
>>> upstream, before passing on 200. Now I realized that
>>> none of the usual methods (send_reply,
>>> sl_send_reply, t_send_reply) work from reply_route,
>>> and I have no idea how to use dlg_send_sequential to
>>> send a "180 ringing".
>>> Any ideas would be appreciated.
>>>
>>>
>>> dlg_send_sequential would not work as it is used to
>>> generate a request.
>>>
>>> I think opensips should allow t_reply to work from
>>> within ONREPLY_ROUTE.
>>> Currently it, doesn't:
>>>
>>> opensips tm.c:
>>> {"t_reply", (cmd_function)w_pv_t_reply, {
>>> {CMD_PARAM_INT, fixup_reply_code, 0},
>>> {CMD_PARAM_STR, 0, 0}, {0,0,0}},
>>> REQUEST_ROUTE | FAILURE_ROUTE},
>>>
>>> But kamailio which, as opensips, inherited the tm
>>> foundation from openser allows it:
>>> {"t_reply", w_t_reply, 2, fixup_t_reply, 0,
>>> REQUEST_ROUTE | ONREPLY_ROUTE | FAILURE_ROUTE},
>>>
>>> So you could try patching opensips t_reply by adding the
>>> ONREPLY_ROUTE flag till this is allowed in opensips (I'm
>>> not sure if it will work as extra changes in code might
>>> be needed).
>>>
>>> Alternatively, you could call a function in a
>>> perl/lua/python module to change the "200 OK" with "180
>>> Ringing", remove the top Via Header (beware that the Via
>>> headers might be coalesced into a single one), remove
>>> the body and use a raw socket to send the packet:
>>> (ref:
>>> https://opensips.org/html/docs/modules/3.5.x/perl.html#func_perl_exec)
>>>
>>> Obs: I assume the language module inherits the
>>> limitations from the route it is being executed on, so I
>>> would not expect:
>>> $m->sl_send_reply("180", "Trying");
>>> to work, but you could try to see what happens.
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20241025/e5943cc7/attachment.html>
More information about the Users
mailing list