Xml & rt

Can anyone point me towards some documentation of RT and XML?

I wish to use XML to pull information into a customer management system
and would like to know if there is something more current than the SOAP
interface or if there is docs on the REST interface?

Also, can someone point me towards a perl module that they have used to
manipulate RT XML data. is XML::Simple sufficent?

thanks

Adrian

Adrian Carter
Technical Manager
Leading Edge Internet

Web http://www.lei.net.au http://support.lei.net.au
Direct +61 2 6163 6162 Support 1 300 662 415
E-mail cartera@lei.net.au

Adrian Carter wrote:

Can anyone point me towards some documentation of RT and XML?

I wish to use XML to pull information into a customer management system
and would like to know if there is something more current than the SOAP
interface or if there is docs on the REST interface?

Also, can someone point me towards a perl module that they have used to
manipulate RT XML data. is XML::Simple sufficent?

Must it be XML? Those three questions together kind of imply that all
you really want is any kind of interface, and XML is the trendy way to
do it… don’t mean to sound rude.

The different perl XML modules vary wildly in what they do - it really
really depends on exactly what you need. Do you need to work with an
existing DTD, or have files produced to match some existing output (for
some program that has a limited parser, say)? XML::Simple is fiddly for
that. It’s fine for just reading stuff in though, or for when you are
the only consumer of your data. I found perl & XML to be pretty
frustrating last time I wanted to do something with it, and ended up
using VB.net and some XPath stuff which got it done in an hour. YMMV,
and it was about a year ago now.

I’d like to know the answer to #2 myself - I think there’s a lot that
could be done using the REST interface if you could work out how. We
have a provisioning database which allows tickets to be created from
within it’s web interface, and when tickets are closed in RT, the
corresponding record in the provisioning database is also updated. That
uses the NoAuth mail gateway to submit tickets, and a custom Scrip to
update the other way.

In case it’s of use to anyone:

In the provisioning DB:

From: requestor@customer.co.uk Queue: broadband X-DBReference: 5522545

(I never did get around to making it a hidden field - the idea was to
have just one button).

In RT, for the appropriate queue:

We use Extract Custom Field Values, to put that X-DBReference: header
into a Custom Field. Then,

On Create, run the following custom action to tell the PDB that there’s
a ticket open, and what it’s ID is:

if($self->TicketObj->FirstCustomFieldValue(‘DBReference’) ne “”)
{
use LWP::Simple qw(get);
my $dbref = $self->TicketObj->FirstCustomFieldValue(‘DBReference’);
my $state = $self->TransactionObj->NewValue;
my $id = $self->TicketObj->id;

get(“http://intranet.company.com/api/update-trouble-ticket.php?NewState=".$state."&DBReference=".$dbref."&TicketID=”.$id);

}

On Status Change, running the following custom action to tell the PDB
that the ticket has closed:

if($self->TicketObj->FirstCustomFieldValue(‘DBReference’) ne “”)
{
use LWP::Simple qw(get);
my $dbref = $self->TicketObj->FirstCustomFieldValue(‘DBReference’);
my $state = $self->TransactionObj->NewValue;
my $id = $self->TicketObj->id;

get(“http://intranet.company.com/api/update-trouble-ticket.php?NewState=".$state."&DBReference=".$dbref."&TicketID=”.$id);

}

Obviously, there’s a PHP script on the other side, that’s actually
updating the database.

None of which answers your question, but it’s maybe slightly useful :slight_smile:

Best Regards,

Howard

Only reason I mention XML is I want to list queue contents per user etc,
and want to offer re-formating within the shell of the portal system we
have. Also would be nice to auto-create, check and resolve ticket
statuses for processes like provisioning.

shrug

REST looks like it will do it, but not sure of a good REST / PERL
interface. or REST/PHP for that matter. Also the REST documentation is…
umm… as far as I can see… non-existant. Wiki yields nothing, and other
than using lateral thinking and the Interface directory, theres no
documentation of the functions.

SOAP seemed doable, since I’ve done some PHP stuff with SOAP before, and
the PERL stuff is similar. Once again though, Jesse’s SOAP interface was
written RT 3.0.2 and so dunno about its value against 3.4.2 . if someone
can enlighten me…

I’m open to suggestions…

Howard Jones wrote:

Adrian Carter wrote:

Can anyone point me towards some documentation of RT and XML?

I wish to use XML to pull information into a customer management
system and would like to know if there is something more current than
the SOAP interface or if there is docs on the REST interface?

Also, can someone point me towards a perl module that they have used
to manipulate RT XML data. is XML::Simple sufficent?

Must it be XML? Those three questions together kind of imply that all
you really want is any kind of interface, and XML is the trendy way to
do it… don’t mean to sound rude.

The different perl XML modules vary wildly in what they do - it really
really depends on exactly what you need. Do you need to work with an
existing DTD, or have files produced to match some existing output
(for some program that has a limited parser, say)? XML::Simple is
fiddly for that. It’s fine for just reading stuff in though, or for
when you are the only consumer of your data. I found perl & XML to be
pretty frustrating last time I wanted to do something with it, and
ended up using VB.net and some XPath stuff which got it done in an
hour. YMMV, and it was about a year ago now.

I’d like to know the answer to #2 myself - I think there’s a lot that
could be done using the REST interface if you could work out how. We
have a provisioning database which allows tickets to be created from
within it’s web interface, and when tickets are closed in RT, the
corresponding record in the provisioning database is also updated.
That uses the NoAuth mail gateway to submit tickets, and a custom
Scrip to update the other way.

In case it’s of use to anyone:

In the provisioning DB:

From: requestor@customer.co.uk Subject: Customer ID xyz Queue: broadband X-DBReference: 5522545

(I never did get around to making it a hidden field - the idea was to
have just one button).

In RT, for the appropriate queue:

We use Extract Custom Field Values, to put that X-DBReference: header
into a Custom Field. Then,

On Create, run the following custom action to tell the PDB that
there’s a ticket open, and what it’s ID is:

if($self->TicketObj->FirstCustomFieldValue(‘DBReference’) ne “”)
{
use LWP::Simple qw(get);
my $dbref = $self->TicketObj->FirstCustomFieldValue(‘DBReference’);
my $state = $self->TransactionObj->NewValue;
my $id = $self->TicketObj->id;

get(“http://intranet.company.com/api/update-trouble-ticket.php?NewState=".$state."&DBReference=".$dbref."&TicketID=”.$id);

}

On Status Change, running the following custom action to tell the PDB
that the ticket has closed:

if($self->TicketObj->FirstCustomFieldValue(‘DBReference’) ne “”)
{
use LWP::Simple qw(get);
my $dbref = $self->TicketObj->FirstCustomFieldValue(‘DBReference’);
my $state = $self->TransactionObj->NewValue;
my $id = $self->TicketObj->id;

get(“http://intranet.company.com/api/update-trouble-ticket.php?NewState=".$state."&DBReference=".$dbref."&TicketID=”.$id);

}

Obviously, there’s a PHP script on the other side, that’s actually
updating the database.

None of which answers your question, but it’s maybe slightly useful :slight_smile:

Best Regards,

Howard

Adrian Carter
Technical Manager
Leading Edge Internet

Web http://www.lei.net.au http://support.lei.net.au
Direct +61 2 6163 6162 Support 1 300 662 415
E-mail cartera@lei.net.au

Adrian Carter wrote:

Only reason I mention XML is I want to list queue contents per user etc,
and want to offer re-formating within the shell of the portal system we
have. Also would be nice to auto-create, check and resolve ticket
statuses for processes like provisioning.

shrug

REST looks like it will do it, but not sure of a good REST / PERL
interface. or REST/PHP for that matter. Also the REST documentation is…
umm… as far as I can see… non-existant. Wiki yields nothing, and other
than using lateral thinking and the Interface directory, theres no
documentation of the functions.
Yeah, REST is not documented, there is Atom interface on the CPAN -
RT-Client, that has examples in the t/* how to use it.

SOAP seemed doable, since I’ve done some PHP stuff with SOAP before, and
the PERL stuff is similar. Once again though, Jesse’s SOAP interface was
written RT 3.0.2 and so dunno about its value against 3.4.2 . if someone
can enlighten me…
SOUP is not supported any more. It’s broken.