Creating a Fixlet with an action using Perl

The following script loads a FixletMessage with a specific site ID and Fixlet ID and takes an action from that Fixlet, by using the FixletMessage.ActionXML and XMLImporter.ImportAction methods. This program requires you to enter your name, password, and Fixlet identification in the program itself. The text that is highlighted in blue is where the assignments are made:

# TakeActionFromFixlet.pl

use strict;
use FindBin;
use lib $FindBin::Bin;
use BESAPI;

my $username = "bigfix";
my $password = "bigfix";
my $server   = "bes-server-hostname";

my $siteID   = 3096;
my $FixletID = 3;
my $action   = 0;

my $Fixlet = BESAPI::FixletMessage( $siteID, $FixletID, $username, $password, 
                                    $server );

my $settingsXML =
            "<?xml version=\"1.0\"?>\n" .
            "<ActionSettings>\n" .
                "<Settings>\n" .
                "<ActionUITitle>title</ActionUITitle>\n" .
                "<PreActionShowUI>true</PreActionShowUI>\n" .
                "<PreAction>\n" .
                    "<Text>preaction description</Text>\n" .
                    "<AskToSaveWork>true</AskToSaveWork>\n" .
                    "<ShowActionButton>true</ShowActionButton>\n" .
                    "<ShowCancelButton>true</ShowCancelButton>\n" .
                    "<DeadlineBehavior>ForceToRun</DeadlineBehavior>\n" .
                    "<DeadlineType>Absolute</DeadlineType>\n" .
                    "<DeadlineOffset>PT23H58M54.000000S</DeadlineOffset>\n" .
                    "<ShowConfirmation>true</ShowConfirmation>\n" .
                    "<Confirmation>confirmation message</Confirmation>\n" .
                "</PreAction>\n" .
                "<HasRunningMessage>true</HasRunningMessage>\n" .
                "<RunningMessage>\n" .
                    "<Text>running text</Text>\n" .
                "</RunningMessage>\n" .
                "<HasTimeRange>false</HasTimeRange>\n" .
                "<HasStartTime>true</HasStartTime>\n" .
                "<StartDateTimeOffset>-PT1M6.000000S</StartDateTimeOffset>\n" .
                "<HasEndTime>true</HasEndTime>\n" .
                "<EndDateTimeOffset>P1DT23H58M54.000000S</EndDateTimeOffset>\n" .
                "<HasDayOfWeekConstraint>false</HasDayOfWeekConstraint>\n" .
                "<ActiveUserRequirement>RequireUser</ActiveUserRequirement>\n" .
                "<ActiveUserType>LocalUsers</ActiveUserType>\n" .
                "<HasWhose>false</HasWhose>\n" .
                "<Reapply>false</Reapply>\n" .
                "<HasReapplyLimit>false</HasReapplyLimit>\n" .
                "<HasReapplyInterval>false</HasReapplyInterval>\n" .
                "<HasRetry>false</HasRetry>\n" .
                "<HasTemporalDistribution>false</HasTemporalDistribution>\n" .
                "<PostActionBehavior Behavior=\"Nothing\"></PostActionBehavior>\n" .
                "<IsOffer>true</IsOffer>\n" .
                "<OfferCategory>offer category</OfferCategory>\n" .
                "<OfferDescriptionHTML>offer description</OfferDescriptionHTML>\n" .
                "</Settings>" .
            "</ActionSettings>";

my $actionXMLDocument = $Fixlet->ActionXML( $action, $settingsXML );

my $targetXMLA =
    "<?xml version=\"1.0\"?>" .
    "<BESActionTarget>" .
        "<ComputerName>a</ComputerName>" .
        "<ComputerName>b</ComputerName>" .
        "<ComputerName>c</ComputerName>" .
    "</BESActionTarget>";

my $targetXMLB =
    "<?xml version=\"1.0\"?>" .
    "<BESActionTarget>" .
        "<ComputerID>34</ComputerID>" .
        "<ComputerID>12704810</ComputerID>" .
    "</BESActionTarget>";

my $targetXMLC =
    "<?xml version=\"1.0\"?>" .
    "<BESActionTarget>" .
        "<CustomRelevance>exists file \"c:\\virus\"</CustomRelevance>" .
    "</BESActionTarget>";

my $xmlImporter = BESAPI->new( "XMLImporter", $server );
my $actionID = $xmlImporter->ImportAction( $actionXMLDocument->XML(), $targetXMLA, 
   $Fixlet->SiteID(), $Fixlet->FixletID(), $username, $password );

print "ActionID: $actionID\n";