Hi List
I have stumbled over this challenge:
I have a kamailio server without dialog module. Only tmx module, acting as registrar / rtpengine host.
If the call is routed over that server once, this works fine.
If the call is routed more than once (call from one location to another on same registrar, call forwarding) then to correctly work, I would need to engage rtpengine in a way to tell rtpengine to handle both call legs separately.
By default, rtpengine identifies one call by Call-ID,FromTag,ToTag so it considers all invocations to target one instance and on the 2nd invocations it replaces the source rtp ip by it's own ip killing audio.
Using 'loop-protect' to prevent the 2nd invocation 'sort-of' works, but not cleanly if I use different 'private' ip ranges on my voice core and IC network to which CPE should not talk.
It is possible to pass a custom Call-ID to rtpengine. So this is how I am considering finding a solution.
When passing the call-id to rtpengine I could append a leg identifier to that call-id.
like $avp(rtp-callid) = $ci + $var(leg-id)
How could I reliably generate this leg-id / tell the legs apart?
Consider this situation:
leg 1 leg 2 CPE-A => Kam-Reg => Routing Core => Kam-Reg => CPE-B
Also I wonder if I can use an AVP at all? From Kamailio's Point of view, the first invite being routed twice could be the same transaction with same shared AVP, right?
Is there a way to pass some information via flags appended route-header? Or maybe use the count of via or route header to tell the legs apart?
Any ideas very appreciated.
Mit freundlichen Grüssen
-Benoît Panizzon-