Hi,

this approach unfortunately doesn't work. Does somebody else know of a solution to neaten up big reply routes?

My code and the following error:

  367route[test] {
  368xlog("now in test route");
  369change_reply_status(181, "test");
  370}
  371
  372onreply_route[MAIN] {
  373# For fr_inv_timeout handling
  374if (t_check_status("180")) {
  375$var(180_in_trans)=1;
  376route(test);
  377xlog("back to reply route");
  378}

CRITICAL:core:yyerror: parse error in /etc/opensips/opensips.cfg:369:29-30: Command <change_reply_status> cannot be used in the block

Doing it in a reply route:

  367onreply_route[test] {
  368xlog("now in test route");
  369change_reply_status(181, "test");
  370}
  371
  372onreply_route[MAIN] {
  373# For fr_inv_timeout handling
  374if (t_check_status("180")) {
  375$var(180_in_trans)=1;
  376t_on_reply("test");
  377xlog("back to MAIN reply route");
  378}

ERROR:sipmsgops:change_reply_status_f: the class of provisional or positive final replies cannot be changed

Jump to secondary reply route via proxy route:

  367route[test] {
  368xlog("now in test route");
  369t_on_reply("test");
  370}
  371
  372onreply_route[test] {
  373xlog("now in test reply route");
  374change_reply_status(181, "test");
  375}
  376
  377onreply_route[MAIN] {
  378# For fr_inv_timeout handling
  379if (t_check_status("180")) {
  380$var(180_in_trans)=1;
  381route(test);
  382xlog("back to MAIN reply route");
  383}

ERROR:sipmsgops:change_reply_status_f: the class of provisional or positive final replies cannot be changed

I must note that change_reply_status works flawlessly when executing directly in MAIN reply route.


Thanks,

Malte

On 10/04/2026 01:03, Richard Robson wrote:

No. Once in the reply_route you can call routes as a function. I think that is what you are after.

onreply_route{route_a]

{stuff()..

if x route(route_z)
else route(_x)

..}

route[route_z]

{stuff()..

..}


route[route_z]

{stuff()..

..}

Richard


On 09/04/2026 10:13, [email protected] wrote:

Hi,:

thanks. In my case theres a quite big onreply route, which totally works, but is a hassle to read. Therefore I would like to segment some stuff into custom "functions", so I can have an easy to understand main onreply route and the more complicated logic in special blocks.

A possibility for that would be to call secondary onreply routes from the parent route. Is that possible or not?

Liebe Grüße / Kind regards,
Malte
On 08/04/2026 17.23, Richard Robson wrote:
you call a reply route to handle the relpy. i.e. a positive outcome 200OK or a 183 etc. This reply should be relayed back to the originator and there should be no need to call another reply route. it won't expect a reply just an ack and that should be handled as an ACK and relayed or an error sent back. (see the default script) if you want the reply route to do something else then add a route to do that or a branch route if needed. and call that from the reply route (not nested)

Richard


On Wed, 2026-04-08 at 15:38 +0200, [email protected] wrote:
Hi,

is it possible to use nested reply routes in opensips?

I want to clean up my script and thinking of something like this:

> onreply_route[MAIN] {
>  [...]
>  is_from_gw(1) = t_on_reply("ADD_ISUP");> }
>  [...] }
>  onreply_route[ADD_ISUP] {
>  add_isup_part() }

The nested onreply route then should return to the parent onreply route. In my tests I specifically had issues with the rtpengine module: when using rtpengine_answer in the parent onreply route and then calling another onreply route from parent route, opensips wasn't able to see the SDP body in the reply and the rtpengine_answer thus failed.


--
Liebe Grüße / Kind regards,
Malte

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to