phpapisoapotrs

OTRS. Update Tickets


i am having problem updating otrs tickets in custom portal. I am using PHP via Soap Api. Here is some thing i tried. I created a webservice . In OTRS as provider, Network Transport , i added namespace https://otrs.classic.com.np/otrs/GenericInterface/actions .<-----is this correct???????????? and my php code is as follows

$url      = "https://myurl.com/otrs/nph-genericinterface.pl";  // URL for OTRS server

            $namespace = "https://myurl.com/otrs/GenericInterface/actions";
            $username = "ctdeveloper";  // SOAP username set in sysconfig
            $password = "ctdeveloper";  // SOAP password set in sysconfig


            ### Form Fields

            $new_owner =$_POST['new_owner'];
            $subject =$_POST['subject'];
            $text = $_POST['text'];
            $note_type = $_POST['note_type'];

            #### Initialize new client session ####
            $client = new SoapClient(
                null,
                array(
                    'location'  => $url,
                    'uri'       => $namespace,
                    'trace'     => 1,
                    'login'     => $username,
                    'password'  => $password,
                    'style'     => SOAP_RPC,
                    'use'       => SOAP_ENCODED
                )
            );

            #### Create a new ticket shell. The function returns the Ticket ID ####
            $TicketUpdate = $client->__soapCall(
                "Dispatch", array($username, $password,"ctdeveloper",
                    "TicketObject", "TicketUpdate",
                    "TicketID", $ticket_id,
                    "OwnerID",      $new_owner,
                )
            );

Solution

  • Ok I found this answer. Hope it helps everyone. Firstly create a webservice in admin of OTRS

    $URL = 'https://your-url.com/otrs/nph-genericinterface.pl/Webservice/WebserviceName'; //webserviceName is the name of webservice created from admin panel of otrs
    $namespace = 'https://your-url.com/otrs/GenericInterface/actions'; //namespace of soap config
    
    $username = "username"; //// SOAP username set in sysconfig
    $password = "password"; //// SOAP password set in sysconfig
    
    // initialize a SoapClient instance
    $SOAPClientInstance = new \SoapClient(null, array(
    'location'=> $URL,
    'uri' => $namespace,
    'trace' => 1,
    'login' => $username,
    'password'=> $password,
    'style' => SOAP_RPC,
    'use' => SOAP_ENCODED,
    
    )
    );
    
    
    // set the request parameters as an array of SoapParam instances
    $TicketRequestArray = array(
    
    new \SoapParam('username', 'UserLogin'), //user username
    new \SoapParam('password', "Password"),// user password
    );
    
    $TicketRequestArray[] = new \SoapParam('123', 'TicketID');// ID of ticket which is to be updated
    $TicketRequestArray[] = new \SoapParam(array(
    'State' => 'open',
    'OwnerID' => $new_owner, // you can add which parameters to update
    ), 'Ticket');
    $Action = 'TicketUpdate';
    
    $Response = $SOAPClientInstance->__soapCall($Action,
    $TicketRequestArray
    );
    
    print "<pre>\n";
    print "Request :\n".htmlspecialchars($SOAPClientInstance->__getLastRequest()) ."\n";
    print "Response:\n".htmlspecialchars($SOAPClientInstance->__getLastResponse())."\n";
    print "</pre>";