<p>B is the right choice.<br>
The size of the body has no limit.</p>
<p>How bout, if a certian header exists in the event with a local file path, then the the mod opens the referenced file for delivery; Otherwise it uses the body if it exists.<br>
</p>
<div class="gmail_quote">On Jun 11, 2012 8:39 PM, &quot;Mariusz Czulada&quot; &lt;<a href="mailto:manieq@wp.eu">manieq@wp.eu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all,<br>
<br>
I was thinking about sending CDRs via HTTP in a same or similar way mod_xml_cdr does. I consider implementing this (unless someone else is working on it) but first wanted to discuss with you the best approach.<br>
<br>
<br>
A. All in mod_conference<br>
<br>
This would require to copy many fragments of code from mod_xml_cdr into mod_conference. Also same configuration parameters used in xml_cdr must be processed and used for sending data. The advantage for this solution is that everything related to this mechanism is included in this module. Drawback: if something in mod_xml_cdr requires fixing or extending, probably the same changes should by applied in related parts of mod_conference.<br>

<br>
<br>
B. mod_conference builds, mod_xml_cdr sends data<br>
<br>
For this solution I&#39;ll give more details.<br>
1. New event type should be added (like SWITCH_EVENT_CDR)<br>
2. When a module (in this case: mod_conference) wants to store CDR via HTTP it must fire an event of that type and:<br>
- &quot;Event-Subclass&quot; set (like &quot;conference&quot;)<br>
- Only common headers are needed, plus...<br>
- &quot;Content-Type&quot; and &quot;Content-Length&quot; must be set<br>
- CDR data must be build as XML in a module and added as an event content.<br>
3. mod_xml_cdr will listen to this event type.<br>
4. For each event subclass which mod_xml_cdr must must react, configuration file will contain a set of params same as for generic channel CDRs.<br>
5. If subclass matches configuration, mod_xml_cdr reads data from event content and sends them according to configuration.<br>
<br>
Changes in mod_conference:<br>
- one new parameter for each profile (like &quot;cdr-via-event=yes|no&quot;)<br>
- if &quot;yes&quot; then xml must be build even if &quot;cdr-log-dir&quot; is unset<br>
- if &quot;yes&quot;, then an event must be fired as described above<br>
<br>
Changes in mod_xml_cdr:<br>
- extra parameters from configuration to be parsed (like &#39;&lt;settings subclass=&quot;conference&quot;&gt;....&lt;/settings&gt;&#39;)<br>
- bind to SWITCH_EVENT_CDR<br>
- if &#39;Event-Subclass&#39; matches configuration, a content of the event will be sent via HTTP (probably most of &#39;my_on_report&#39; routine bellow &#39;try to post it to the web server&#39; comment will be reused)<br>

<br>
A [small] drawback is that it makes an indirect module dependency, but we already have such situations (like mod_shout needed to record a conference in mp3).<br>
<br>
Advantages are:<br>
- one can create an external tool for handling this type of event (to store it directly in db or send it with other protocols)<br>
- this mechanism can be easily reused in other modules if needed; maybe in mod_callcenter, maybe in other components. No further changes in mod_xml_cdr should be needed.<br>
<br>
What is unknown to me is a maximum size of event content. Conference CDR XMLs can be quite big - will it be a problem to send it this way?<br>
<br>
<br>
I think the second solution is better and more universal but I&#39;d like to hear your opinions about this case.<br>
<br>
Regards,<br>
<br>
Mariusz<br>
<br>
<br>
<br>
<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br>
<a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br>
<br>
Join Us At ClueCon - Aug 7-9, 2012<br>
<br>
FreeSWITCH-dev mailing list<br>
<a href="mailto:FreeSWITCH-dev@lists.freeswitch.org">FreeSWITCH-dev@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-dev" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-dev</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
</blockquote></div>