import biz.freeside.SelfService;
import org.apache.commons.logging.impl.SimpleLog; //included in apache xmlrpc
import java.util.HashMap;
import java.util.Vector;
public class freeside_create_ticket_example {
  private static SimpleLog logger = new SimpleLog("SelfService");
  public static void main( String args[] ) throws Exception {
    SelfService client =
      new SelfService( "http://192.168.1.221:8081/xmlrpc.cgi" );
    Vector params = new Vector();
    params.addElement( "username" );
    params.addElement( "4155551212" ); // svc_phone.phonenum
    params.addElement( "password" );
    params.addElement( "5454" );       // svc_phone.pin
    params.addElement( "domain" );
    params.addElement( "svc_phone" );
    HashMap result = client.execute( "login", params );
    String error = (String) result.get("error");
    if (error.length() < 1) {
      // successful login
      String sessionId = (String) result.get("session_id");
      logger.trace("[login] logged into freeside with session_id="+sessionId);
      // store session id in your session store to be used for other calls
      // like, say, this one to create a ticket
      Vector ticket_params = new Vector();
      ticket_params.addElement( "session_id" );
      ticket_params.addElement( sessionId );
      ticket_params.addElement( "queue" );
      ticket_params.addElement( 3 ); // otherwise defaults to
                                      // ticket_system-selfservice_queueid
                                      // or ticket_system-default_queueid
      ticket_params.addElement( "requestor" );         // these
      ticket_params.addElement( "email@example.com" ); // are
      ticket_params.addElement( "cc" );                // optional
      ticket_params.addElement( "joe@example.com" );   // 
      ticket_params.addElement( "subject" );
      ticket_params.addElement( "Houston, we have a problem." );
      ticket_params.addElement( "message" );
      ticket_params.addElement( "The Oscillation Overthurster has gone out of alignment!
It needs to be fixed immediately!  link test" );
      ticket_params.addElement( "mime_type" );
      ticket_params.addElement( "text/html" );
      HashMap ticket_result = client.execute( "create_ticket", ticket_params);
      String error = (String) ticket_result.get("error");
      if (error.length() < 1) {
        // successful ticket creation
        String ticketId = (String) ticket_result.get("ticket_id");
        logger.trace("[login] ticket created with id="+ticketId);
      } else {
        // unsuccesful creating ticket
        logger.warn("[login] error creating ticket: "+error);
      }
    }else{
      // unsuccessful login
      logger.warn("[login] error logging into freeside: "+error);
      // display/say error message to user
    }
  }
}