<div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Anthony brought a support forums post (<a href="https://community.cisco.com/t5/contact-center/ccx-http-trigger-post-support/m-p/4020305">https://community.cisco.com/t5/contact-center/ccx-http-trigger-post-support/m-p/4020305</a>) to my attention with the request of how to use UCCX, essentially as middleware HTTP server, needing to parse contents passed as part of a HTTP POST request. </div><div><br></div><div>HTTP capabilities within UCCX are actually quite powerful, however there are no interfaces for directly interacting with the data. Now, it is my opinion that the <b>Get Http Contact Info </b>step should contact this functionality, and it would be trivial to this capability to it. Maybe Cisco will one day..</div><div><br></div><div>Until then, we're going to bend the spoon and spit out some content.</div><div><br></div><div>It is impractical to access the servlet object from the CCX editor on your machine because it is missing numerous required classes that are actually available to executing scripts. Because of this, you'll never be able to access the required methods directly. As a result, we'll use Java reflection to access the internal data objects for our manipulation.</div><div><br></div><div>Without further ado, here's the code:</div><div><br></div><div><div>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>// Author: Tanner Ezell (<a href="mailto:tanner.ezell@ctilogic.com">tanner.ezell@ctilogic.com</a>)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>// USE AT YOUR OWN RISK</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>// Will probably break if Cisco makes underlying changes. </div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>Class servletClass = Class.forName("javax.servlet.ServletRequest");</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">  </span>java.lang.reflect.Method getRequestMethod = contact.getClass().getDeclaredMethod("getRequest", null);</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>java.lang.reflect.Method getReaderMethod = servletClass.getDeclaredMethod("getReader", null);</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>getRequestMethod.setAccessible(true);</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">  </span></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>Object request = (getRequestMethod.invoke(contact, null));</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">     </span>java.io.BufferedReader reader = (java.io.BufferedReader) getReaderMethod.invoke(request, null);</div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>StringBuilder builder = new StringBuilder();</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>String line;</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>while( (line = reader.readLine()) != null) {</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">           </span>builder.append(line);</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">  </span>}</div><div><br></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">     </span>return builder.toString();</div><div>}</div></div><div><br></div><div>You need a contact variable (type: Contact, name: contact) that must not be null.</div><div><br></div><div>You'll need to set this expression in the Set step. After you have the response, you'll need to parse it appropriately, whatever that may look like towards your specific application.</div><div><br></div><div>Here's a simple application:</div><div><br></div><div><div><img src="cid:ii_kdp2nrol1" alt="image.png" width="542" height="327"><br></div></div><div><br></div><div>And demonstration of it working:</div><div><br></div><div><div><img src="cid:ii_kdp2mtvs0" alt="image.png" width="542" height="364"><br></div></div><div><br></div><div>That's it. Don't forget, this only works on Http Contacts, it's absolutely possible this stops working if Cisco makes underlying changes to how they process servlet requests.</div><div><br></div><div>Happy hacking.</div><div><br></div><div>Regards,</div><div>Tanner Ezell</div></div></div></div>