I looked in the code and indeed it first takes the values from headers for Call-Id, To (tag), From (tag), failing if the headers are not found, but then it updates the values from the flags parameter. So the call-id can be anything in the headers if you provide it as "call-id=xyz" parameter.
Maybe the code should be reworked a bit to parse first the flags parameters and if values are not found for the sip attributes, then try to get them from headers. Cheers, Daniel On 29.04.21 15:39, Володимир Іванець wrote: > I run Kamailio with debug=3 and Rtpengine with LOG_LEVEL=6. > > Rtpengine logs offers, answers and deletes but there is nothing when I > trigger /start_recording/ with HTTP request. Below is the full > Kamailio log for the request. It looks to be failing right on the > /start_recording/ function and I don't see any other issues except > empty Call-Id here: "receive_msg(): --- received sip message - request > - call-id: [] - cseq: []". > > I tried to add Call-Id header to my HTTP request and found out that > now rtpengine module will complain about missing To header. With tries > and errors, I specified all required headers and Rtpengine started > call recording: > > //usr/bin/curl -H "Content-Type: text" > > "http://localhost:8088/CALL_RECORD_START/[email protected]:5080.1 > > <http://localhost:8088/CALL_RECORD_START/[email protected]:5080.1>" > -H "Call-Id: [email protected]:5080.1" -H > "To: sip:[email protected]:5060 > <http://sip:[email protected]:5060>" -H "From: > <sip:[email protected]:5080 > <http://sip:[email protected]:5080>>;tag=as7a92114c"/ > > > It also looks like rtpengine module does not care about actual header > values. Function /start_recording/ called with Call-Id value is enough > to start call recording even if all headers contain random invalid values: > > / /usr/bin/curl -H "Content-Type: text" > > "http://localhost:8088/CALL_RECORD_START/[email protected]:5080.0 > > <http://localhost:8088/CALL_RECORD_START/[email protected]:5080.0>" > -H "Call-Id: does_mot_matter" -H "To: sip:[email protected]:5060 > <http://sip:[email protected]:5060>" -H "From: <sip:[email protected]:5080 > <http://sip:[email protected]:5080>>;tag=1"/ > > > *Thank you very much for your help!* > > > > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/ip_addr.c:229]: print_ip(): tcpconn_new: new tcp connection: > 127.0.0.1/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:1175]: tcpconn_new(): on port 42782, type 2, > socket 64/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:1498]: tcpconn_add(): hashes: 1710:1616:2551, 1/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/io_wait.h:375]: io_watch_add(): DBG: io_watch_add(0xae63a0, > 64, 2, 0x7f943ba04ac0), fd_no=50/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/io_wait.h:600]: io_watch_del(): DBG: io_watch_del (0xae63a0, > 64, -1, 0x0) fd_no=51 called/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:4457]: handle_tcpconn_ev(): sending to child, > events 1/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:4130]: send2child(): selected tcp worker idx:0 > proc:35 pid:24116 for activity on [tcp:127.0.0.1:8088 > <http://127.0.0.1:8088>], 0x7f943ba04ac0/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_read.c:1749]: handle_io(): received n=8 > con=0x7f943ba04ac0, fd=13/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:610]: parse_msg(): SIP Request:/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:612]: parse_msg(): method: <GET>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:614]: parse_msg(): uri: > </CALL_RECORD_START/[email protected]:5080.0>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:616]: parse_msg(): version: <HTTP/1.1>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:89]: get_hdr_field(): found end of header/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/receive.c:324]: receive_msg(): --- received sip message - > request - call-id: [] - cseq: []/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: xhttp > [xhttp_mod.c:382]: xhttp_handler(): new fake msg created (286 bytes):/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:610]: parse_msg(): SIP Request:/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:612]: parse_msg(): method: <GET>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:614]: parse_msg(): uri: > </CALL_RECORD_START/[email protected]:5080.0>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:616]: parse_msg(): version: <HTTP/1.1>/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/parse_via.c:2639]: parse_via(): end of header > reached, state=5/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:498]: parse_headers(): Via found, flags=2/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:500]: parse_headers(): this is the first > via/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <script>: > == TRACE. xhttp:request/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <script>: > == TRACE. xhttp:request. HTTP Request Received/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <script>: > == TRACE. xhttp:request. hu is: > /CALL_RECORD_START/[email protected]:5080.0/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <script>: > [email protected]:5080.0/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/parser/msg_parser.c:89]: get_hdr_field(): found end of header/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: ERROR: rtpengine > [rtpengine_funcs.c:294]: get_callid(): call-id not found/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: ERROR: rtpengine > [rtpengine.c:2383]: rtpp_function_call(): can't get Call-Id field/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: xhttp > [xhttp_mod.c:441]: xhttp_send_reply(): sending out response: 200 OK/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/msg_translator.c:161]: check_via_address(): (127.0.0.1, > 127.0.0.1, 0)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_main.c:1590]: _tcpconn_find(): found connection by id: 1/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_main.c:2472]: tcpconn_send_put(): send from reader > (24116 (35)), reusing fd/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_main.c:2706]: tcpconn_do_send(): sending.../ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_main.c:2739]: tcpconn_do_send(): after real write: c= > 0x7f943ba04ac0 n=113 fd=13/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_main.c:2740]: tcpconn_do_send(): buf=/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/xavp.c:539]: xavp_destroy_list(): destroying xavp list (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/receive.c:528]: receive_msg(): cleaning up/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/io_wait.h:375]: io_watch_add(): DBG: io_watch_add(0xb2a640, > 13, 2, 0x7f943ba04ac0), fd_no=1/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:3793]: handle_ser_child(): read response= > 7f943ba04ac0, -1, fd -1 from 35 (24116)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/io_wait.h:600]: io_watch_del(): DBG: io_watch_del (0xb2a640, > 13, -1, 0x10) fd_no=2 called/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_read.c:1890]: handle_io(): removing from list > 0x7f943ba04ac0 id 1 fd 13, state -1, flags 4028, main fd -1, > refcnt 1 ([127.0.0.1]:42782 -> [127.0.0.1]:8088)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_read.c:1671]: release_tcpconn(): releasing con > 0x7f943ba04ac0, state -2, fd=13, id=1 ([127.0.0.1]:42782 -> > [127.0.0.1]:8088)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24116]: DEBUG: <core> > [core/tcp_read.c:1672]: release_tcpconn(): extra_data (nil)/ > /Apr 29 16:01:47 test /usr/sbin/kamailio[24120]: DEBUG: <core> > [core/tcp_main.c:3560]: handle_tcp_child(): reader response= > 7f943ba04ac0, -2 from 0/ > > > чт, 29 квіт. 2021 о 13:17 Daniel-Constantin Mierla <[email protected] > <mailto:[email protected]>> пише: > > Ohhh, blindly missed the assignment before. You should run both > kamailio and rtpengine with higher debug level and see if you get > any hints from the log messages. > > Cheers, > Daniel > > On 29.04.21 11:51, Володимир Іванець wrote: >> Hello Daniel, >> >> That is correct. My /$var(call_id)/ variable contains >> concatenation of the "call-id=" string and a Call-Id value. >> >> /Apr 27 18:25:00 test /usr/sbin/kamailio[5347]: DEBUG: >> <script>: >> [email protected]:5080.0 >> <mailto:[email protected]:5080.0>/ >> >> >> Thank you! >> >> чт, 29 квіт. 2021 о 09:58 Daniel-Constantin Mierla >> <[email protected] <mailto:[email protected]>> пише: >> >> Hello, >> >> related to the initial config snippet example, the call-id is >> expected to be provide as a named flag, like: >> >> start_recording("call-id=$var(call_id)"); >> >> See the readme of the rtpengine module for more details. >> >> Cheers, >> Daniel >> >> On 29.04.21 08:23, Володимир Іванець wrote: >>> Hello Richard, >>> >>> Thank you very much for the suggestion! I will give it a try. >>> >>> ср, 28 квіт. 2021, 20:00 користувач Richard Fuchs >>> <[email protected] <mailto:[email protected]>> пише: >>> >>> On 28/04/2021 10.53, [ EXT ] Володимир Іванець wrote: >>>> Hello! >>>> >>>> I'm testing call recording with Rtpengine. It works >>>> fine when the "record-call=on" flag is added to >>>> the /rtpengine_offer/ or /start_recording/ is used in >>>> the *request_route*. >>>> >>>> But I was wondering if the call recording can be >>>> managed by a separate application. So I add the >>>> following lines to the *event_route[xhttp:request]* and >>>> triggered it with an HTTP request after the call was >>>> established. The call-id value was taken from the >>>> Rtpengine log and sent with the request. >>>> >>>> / if ($hu =~ "^/CALL_RECORD_START/") {/ >>>> / $var(call_id) = /"call-id=" >>>> + /$(hu{s.select,2,/});/ >>>> xlog("L_DBG", "$var(call_id)"); >>>> / start_recording($var(call_id));/ >>>> / /exit; >>>> / }/ >>>> >>> If you have to reason to go through Kamailio for this, >>> you can simply trigger the command from any other >>> external application. There's a sample script included >>> in the repo that can be used for this purpose directly >>> (making use of the Perl module that is also included): >>> >>> https://github.com/sipwise/rtpengine/blob/master/utils/rtpengine-ng-client >>> >>> <https://github.com/sipwise/rtpengine/blob/master/utils/rtpengine-ng-client> >>> >>> There's also a nodejs client that I'm aware of: >>> https://github.com/davehorton/rtpengine-client >>> <https://github.com/davehorton/rtpengine-client> >>> >>> Or you can hand-roll the request and talk to rtpengine >>> via HTTP or Websocket for example. >>> >>> Cheers >>> >>> __________________________________________________________ >>> Kamailio - Users Mailing List - Non Commercial Discussions >>> * [email protected] >>> <mailto:[email protected]> >>> Important: keep the mailing list in the recipients, do >>> not reply only to the sender! >>> Edit mailing list options or unsubscribe: >>> * >>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >>> <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users> >>> >>> >>> __________________________________________________________ >>> Kamailio - Users Mailing List - Non Commercial Discussions >>> * [email protected] <mailto:[email protected]> >>> Important: keep the mailing list in the recipients, do not reply >>> only to the sender! >>> Edit mailing list options or unsubscribe: >>> * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >>> <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users> >> >> -- >> Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com> >> www.twitter.com/miconda <http://www.twitter.com/miconda> -- >> www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> >> Kamailio Advanced Training - Online >> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America >> Timezone) >> * https://www.asipto.com/sw/kamailio-advanced-training-online/ >> <https://www.asipto.com/sw/kamailio-advanced-training-online/> >> > -- > Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com> > www.twitter.com/miconda <http://www.twitter.com/miconda> -- > www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> > Kamailio Advanced Training - Online > May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone) > * https://www.asipto.com/sw/kamailio-advanced-training-online/ > <https://www.asipto.com/sw/kamailio-advanced-training-online/> > -- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - Online May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone) * https://www.asipto.com/sw/kamailio-advanced-training-online/
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions * [email protected] Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
