<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hello,</p>
    <p>as I wrote in another email, the master branch should have a
      solution for it (hoping people that are interested in this matter
      will provide feedback to my email in order to decide how to
      proceed further and improve based on the real needs) -- for
      reference, the link to that email:</p>
    <p>  - <a
href="https://lists.kamailio.org/pipermail/sr-users/2019-October/107210.html">https://lists.kamailio.org/pipermail/sr-users/2019-October/107210.html</a></p>
    <p>However, here is a new idea that can be used with existing
      deployments (likely needing 5.1.x at least): use an embedded
      scripting language to pass the data from $jsonrpl(body) to
      evapi_relay(). For example, app_jsdt doesn't have external
      dependency and you can make a small JS script to be executed
      inline from kamailio.cfg routing blocks with jsdt_run() or
      jsdt_runstring():</p>
    <p>  - <a
href="https://www.kamailio.org/docs/modules/devel/modules/app_jsdt.html#app_jsdt.f.jsdt_run">https://www.kamailio.org/docs/modules/devel/modules/app_jsdt.html#app_jsdt.f.jsdt_run</a></p>
    <p>The KEMI function for evapi_relay():</p>
    <p>  - <a
href="http://kamailio.org/docs/tutorials/devel/kamailio-kemi-framework/modules/#ksrevapirelay">http://kamailio.org/docs/tutorials/devel/kamailio-kemi-framework/modules/#ksrevapirelay</a></p>
    <p>So, the js script can even be like one line:</p>
    <p>KSR.evapi.relay(KSR.pv.gete("$jsonrpl(body) ");</p>
    <p>In this way, the internal pv buffer should not be used for
      transferring the content of $jsonrpl(body) to the parameter of
      evapi_relay().</p>
    <p>If someone tries this solution, I would be curious about the
      results.</p>
    <p>Cheers,<br>
      Daniel<br>
    </p>
    <div class="moz-cite-prefix">On 30.10.19 15:56, Sergiu Pojoga wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAJZsGCmF=EzqY-btE5o6_r_89LcH=u=O1YM9QU24bBTOQtgpqQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hi Michal,
        <div><br>
        </div>
        <div>I've already encountered this same problem and got an
          answer from Daniel. Check below link.</div>
        <div><br>
        </div>
        <div><a
href="https://lists.kamailio.org/pipermail/sr-users/2019-October/107092.html"
            moz-do-not-send="true">https://lists.kamailio.org/pipermail/sr-users/2019-October/107092.html</a> </div>
        <div><br>
        </div>
        <div>Cheers. <br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Wed, Oct 30, 2019 at 9:57
          AM Daniel-Constantin Mierla <<a
            href="mailto:miconda@gmail.com" moz-do-not-send="true">miconda@gmail.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div bgcolor="#FFFFFF">
            <p>Hello,</p>
            <p>how often are you requesting the list of all dialogs
              (what is the n in that every n seconds)? Is it done using
              a single evapi connection, or are there many of them?</p>
            <p>And to clarify, is the error ("cannot serialize event")
              happening when there is no call or when there are too
              many? Is not clear for me given that you follow with what
              you expect to be when nobody is calling ...</p>
            <p>Cheers,<br>
              Daniel<br>
            </p>
            <div>On 30.10.19 14:26, Michal Škuta wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Hello, Kamailio community,<br>
                we are implementing evapi communication to our Kamailio
                server. We have implemented and tested it on our testing
                server. Everything was working OK.<br>
                <br>
                Now we are testing it on our production servers with a
                lot more calls and we have some problems here. <br>
                Every n seconds we are requesting from Kamailio list of
                all dialogs. And this list of dialogs (from jsonrpc <b>dlg.list</b>)
                is sent to evapi connection.<br>
                <div>Here is a snippet of our <b>Kamailio code</b>:</div>
                <div><br>
                </div>
                <div><span style="font-family:monospace">route[CGR_DLG_LIST]<br>
                    {<br>
                            xlog("L_INFO", "XLOG: $ci [CGR_DLG_LIST]
                    Requested dialog list");<br>
                            # CGRateS connection is still alive, set
                    check to true<br>
                            $sht(cgrconn=>check) = 1;<br>
                            if $sht(cgrconn=>cgr) == $null {<br>
                                    sl_send_reply("503","Charging
                    controller unreachable");<br>
                                    exit;<br>
                            }<br>
                            jsonrpc_exec('{"jsonrpc":"2.0","id":1,
                    "method":"dlg.list","params":[]}');<br>
                            xlog("L_INFO", "XLOG: $ci [CGR_DLG_LIST]
                    Test1: $jsonrpl(body)");<br>
                    <br>
                           
                    evapi_relay("{\"event\":\"CGR_DLG_LIST_REPLY\",<br>
                                           
                    \"jsonrpl_body\":$jsonrpl(body)}");<br>
                    }</span><br>
                </div>
                <br>
                <div>During a higher number of calls Kamailio is
                  generating ERROR messages from evapi module. Here is
                  the syslog:</div>
                <div><br>
                </div>
                <span style="font-family:monospace">Oct 30 12:02:15
                  kam-prod /opt/ipgate/kamailio/sbin/kamailio[19512]:
                  INFO: <script>: XLOG: 123 [CGR_DLG_LIST]
                  Requested dialog list<br>
                  Oct 30 12:02:15 kam-prod
                  /opt/ipgate/kamailio/sbin/kamailio[19512]: INFO:
                  <script>: <br>
                  Oct 30 12:02:15 kam-prod
                  /opt/ipgate/kamailio/sbin/kamailio[19512]: DEBUG:
                  evapi [evapi_dispatch.c:740]: _evapi_relay(): relaying
                  event data [<br>
                  Oct 30 12:02:15 kam-prod
                  /opt/ipgate/kamailio/sbin/kamailio[19512]: ERROR:
                  evapi [evapi_dispatch.c:764]: _evapi_relay(): cannot
                  serialize event<br>
                  Oct 30 12:02:15 kam-prod
                  /opt/ipgate/kamailio/sbin/kamailio[19512]: ERROR:
                  evapi [evapi_mod.c:265]: w_evapi_relay(): failed to
                  relay event: <br>
                </span>
                <div><br>
                </div>
                <div><b>We are expecting something like this when nobody
                    is calling</b><br>
                </div>
                <div><span style="font-family:monospace">Oct 30 14:12:22
                    kam-test /opt/ipgate/kamailio/sbin/kamailio[32090]:
                    INFO: <script>: XLOG: 123 [CGR_DLG_LIST]
                    Requested dialog list<br>
                    Oct 30 14:12:22 kam-test
                    /opt/ipgate/kamailio/sbin/kamailio[32090]: INFO:
                    <script>: XLOG: 123 [CGR_DLG_LIST] Test1: {<br>
                    #011"jsonrpc":#011"2.0",<br>
                    #011"result":#011[],<br>
                    #011"id":#0111<br>
                    }<br>
                    Oct 30 14:12:22 kam-test
                    /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG:
                    evapi [evapi_dispatch.c:740]: _evapi_relay():
                    relaying event data [{"event":"CGR_DLG_LIST_REPLY",<br>
                    #011#011#011"jsonrpl_body":{<br>
                    #011"jsonrpc":#011"2.0",<br>
                    #011"result":#011[],<br>
                    #011"id":#0111<br>
                    }}] (96)<br>
                    Oct 30 14:12:22 kam-test
                    /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG:
                    evapi [evapi_dispatch.c:778]: _evapi_relay():
                    sending [0x169ff674]
                    [96:{"event":"CGR_DLG_LIST_REPLY",<br>
                    #011#011#011"jsonrpl_body":{<br>
                    #011"jsonrpc":#011"2.0",<br>
                    #011"result":#011[],<br>
                    #011"id":#0111<br>
                    }},] (100)<br>
                    Oct 30 14:12:22 kam-test
                    /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG:
                    evapi [evapi_dispatch.c:789]: _evapi_relay():
                    dispatching [0x169ff674]
                    [96:{"event":"CGR_DLG_LIST_REPLY",<br>
                    #011#011#011"jsonrpl_body":{<br>
                    #011"jsonrpc":#011"2.0",<br>
                    #011"result":#011[],<br>
                    #011"id":#0111<br>
                    }},] (100)</span></div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div>We enabled debug messages for module evapi and are
                  trying to understand where is the problem. To make
                  this work to this state we needed to increase the <b>pv_buffer</b>
                  to really big size (2097152).</div>
                <div>It looks like $jsonrpl(body) is not ready and
                  everything concated with it is not working.</div>
                <div><br>
                </div>
                <div>
                  <pre><span style="font-family:arial,sans-serif"><code><code><span style="font-family:arial,sans-serif">Any help or suggestion is welcomed.</span>
</code></code></span></pre>
                  <pre><code><code><span style="font-family:arial,sans-serif">Sincerely Michal</span></code></code></pre>
                </div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div><br>
                </div>
              </div>
              <br>
              <fieldset></fieldset>
              <pre>_______________________________________________
Kamailio (SER) - Users Mailing List
<a href="mailto:sr-users@lists.kamailio.org" target="_blank" moz-do-not-send="true">sr-users@lists.kamailio.org</a>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank" moz-do-not-send="true">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
            </blockquote>
            <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank" moz-do-not-send="true">www.asipto.com</a>
<a href="http://www.twitter.com/miconda" target="_blank" moz-do-not-send="true">www.twitter.com/miconda</a> -- <a href="http://www.linkedin.com/in/miconda" target="_blank" moz-do-not-send="true">www.linkedin.com/in/miconda</a>
Kamailio World Conference - April 27-29, 2020, in Berlin -- <a href="http://www.kamailioworld.com" target="_blank" moz-do-not-send="true">www.kamailioworld.com</a></pre>
          </div>
          _______________________________________________<br>
          Kamailio (SER) - Users Mailing List<br>
          <a href="mailto:sr-users@lists.kamailio.org" target="_blank"
            moz-do-not-send="true">sr-users@lists.kamailio.org</a><br>
          <a
            href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users"
            rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Kamailio (SER) - Users Mailing List
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.kamailio.org">sr-users@lists.kamailio.org</a>
<a class="moz-txt-link-freetext" href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a>
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda">www.linkedin.com/in/miconda</a>
Kamailio World Conference - April 27-29, 2020, in Berlin -- <a class="moz-txt-link-abbreviated" href="http://www.kamailioworld.com">www.kamailioworld.com</a></pre>
  </body>
</html>