Hi all,
I’m trying to set a pseudovariable via app_ruby. I’m able to retrieve pseudovariables using PV.gete as such:
However trying to set these using sets, I get “No method found”:
KSR::PV.sets("$fu", "sip:#{$uacs[trunk]['r_username']}@#{$uacs[trunk]['r_domain']}")
Mar 30 04:44:59 ip-10-0-0-2 /usr/local/sbin/kamailio[28421]: ERROR: {1 102 INVITE 0fae8097312bec2b5ec79ada30c227e7@127.0.0.1:5060} app_ruby [app_ruby_api.c:107]: app_ruby_print_last_exception(): exception: undefined method `[]' for nil:NilClass
PV.seti appears to work correctly. Am I calling the wrong method?
Thanks! ________________________________
Andrew White - Director uConnected Email: andrew@uconnected.com.au Web: www.uConnected.com.au
Hello,
can you try with master branch or with the patch from next commit?
* https://github.com/kamailio/kamailio/commit/6d43eacd6d5b78fe857267e70b7fa855...
While looking at how is exported, I noticed that some param type checks were wrong. Let's see if that's fixing it or is something else.
Cheers, Daniel
On 30.03.19 05:45, Andrew White wrote:
Hey Daniel,
Thanks for the patch!
It doesn’t appear to be throwing the error any longer. However as far as I can see, the value is not being set. Here’s the code, called from ksr_request_route()
def ksr_route_to_trunk() KSR.info("Route to trunk") if KSR::TM.t_is_set("failure_route") < 0 then KSR::TM.t_on_failure("ksr_failure_manage_trunk") end
# Relay trunk = $redis_local.get("trunk") # Will probably eventually be a HSET uacs = get_all_uacs() KSR.info("$fu is #{KSR::PV.gete("$fu")}") KSR.info("Updating to #{"sip:#{uacs[trunk]['r_username']}@#{uacs[trunk]['r_domain']}"}") KSR::PV.sets("$fu", "sip:#{uacs[trunk]['r_username']}@#{uacs[trunk]['r_domain']}”) KSR.info("$fu rewritten to #{KSR::PV.gete("$fu")}”) replace_server_and_uac_header() KSR::TM.t_relay() exit end
The output I get:
Mar 31 06:39:25 ip-10-0-0-2 /usr/local/sbin/kamailio[2361]: INFO: {1 102 INVITE 73bda23e5306c6fd4b31a0b615b47c0e} <core> [core/kemi.c:98]: sr_kemi_core_info(): Route to trunk Mar 31 06:39:25 ip-10-0-0-2 /usr/local/sbin/kamailio[2361]: INFO: {1 102 INVITE 73bda23e5306c6fd4b31a0b615b47c0e} <core> [core/kemi.c:98]: sr_kemi_core_info(): $fu is sip:0390001234@127.0.0.1 Mar 31 06:39:25 ip-10-0-0-2 /usr/local/sbin/kamailio[2361]: INFO: {1 102 INVITE 73bda23e5306c6fd4b31a0b615b47c0e} <core> [core/kemi.c:98]: sr_kemi_core_info(): Updating to sip:123456@sbc-syd-01.carrier.com Mar 31 06:39:25 ip-10-0-0-2 /usr/local/sbin/kamailio[2361]: INFO: {1 102 INVITE 73bda23e5306c6fd4b31a0b615b47c0e} <core> [core/kemi.c:98]: sr_kemi_core_info(): $fu rewritten to sip: 0390001234@127.0.0.1
So it seems like KSR::PV.sets() is being called without issue, however when I KSR::PV.gete() for $fu it still holds the old value.
________________________________
Andrew White - Director uConnected Email: andrew@uconnected.com.au Web: www.uConnected.com.au
Hello,
changes to sip message headers and body are not visible immediately, see:
* https://www.kamailio.org/wiki/tutorials/faq/main#why_changes_made_to_headers...
Use something like $var(x) to see if set is working.
Cheers, Daniel
On 31.03.19 08:44, Andrew White wrote:
Thanks Daniel!
You’re 100% right, that was the issue. Using a private variable I can see the change. I also had an exit in place before the relay to test, removing that I can see in Wireshark the request is being sent as expected.
Now I just have to figure out how to deal with UAC auth challenges!
Thanks for your help, as always :)
________________________________
Andrew White - Director uConnected Email: andrew@uconnected.com.au Web: www.uConnected.com.au