Skip to content

Quick Start: Local Listener Beta (HTTP API)

saucepleez edited this page Dec 3, 2019 · 3 revisions

Quick Start: Local Listener (HTTP API)

Version 3.3.0.0+

The Local Listener option exposes the local taskt client via HTTP API. The API can be called by other systems that support HTTP requests or natively by other taskt clients. This quick start guide outlines how to enable and consume the Local Listener functionality.

Configuring Local Listener

From the Script Builder screen, select Options > Settings. From the Settings Screen, Click the Local Listener tab.

Listener

Options Configuration

  • Note: Add Rule to Windows Firewall if applicable - Open Windows Firewall > Inbound Rules Pane > New Rule
    - Select "Port" Rule and click Next
    - Select "TCP" and Specific Local Port. Enter Port Number (19312 is default) and click Next
    - Select "Allow the Connection" and click Next
    - Select "Private" or "Domain and click Next
    - Enter a Rule Name and click Finish

  • Check if Local Listening should start on Startup

  • Check the "Enable Local Listening" option

  • Enter Provide Port Number (19312 is default)

  • Check if clients should provide an Authentication Key. Use default or provide your own key.

The status label will update once taskt is listening. The client will note the internal IP address and port number. You will need to execute against that IP and port number. Logs will also be generated in the Root/Logs folder. You may need to restart the client for these settings to take effect.

Supported API Methods

API Endpoint Description
/ExecuteScript Enables an external client to run script data or indicate a script to be executed
/AwaitScript Similar to Execute Script but API will not return until the script has finished
/ExecuteCommand Similar to Execute Script but for executing a single command (JSON)
/EngineStatus Returns a value whether the engine is currently executing or not
/RestartTaskt Immediately restart the taskt client

Calling API From taskt

taskt has first-party support to consume this API and can connect to other clients through standard commands. The "Remote Commands" group contains 2 additional commands:

  • Remote API: Provides Functionality to Get Engine Status and Restart taskt on another client
  • Remote Task: Provides Functionality to execute raw script data, run a local script, or run a remote script on another taskt client

A full sample task highlighting and sampling this functionality is provided under Sample Scripts\3.x Use Cases\Remote Execution Sample [3.3.0.0].xml.

Remote Task Command

External API Calls

You can call the taskt API from an external application. For testing this functionality you can use PostMan or a similar application that supports sending HTTP requests. Note, if the "Require Authentication" option is checked, the client will need to provide an "AuthKey" parameter and the value must match the value configured on the remote client.

Engine Status API Sample

Returns a value whether the engine is currently executing or not.

Sample Request: Sample Engine Status Call

Sample Request Code:

POST /EngineStatus HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 33ecd72e-ab2c-4ff8-b649-874466629386,3197fb53-b35f-495c-9ad9-1f29f7b7c53c
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Restart Taskt API Sample

Notifies the remote taskt instance that it should restart and returns a confirmation.

Sample Request: Sample Restart Call

Sample Request Code:

POST /RestartTaskt HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 56f3afa2-0ae9-4ef1-8b5c-bb510b8063f2,79935be7-0ab3-48b2-b138-59e5f0f8bb55
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Engine Status API Sample

Returns a value whether the engine is currently executing or not.

Sample Request: Sample Engine Status Call

Sample Request Code:

POST /EngineStatus HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 33ecd72e-ab2c-4ff8-b649-874466629386,3197fb53-b35f-495c-9ad9-1f29f7b7c53c
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Execute Script API Sample

Requests execution of script data or from a location on the remote machine.

Option 1 - Execute Script Remotely

Remote Script Sample Request: Sample Remote Execution Call

Remote Script Sample Code:

POST /ExecuteScript HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
ScriptLocation: Hi.xml
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: f2a4515c-1cfb-4c6d-96f2-52d9abc23aeb,1f7e8a73-4d59-4740-86a2-de9740c3a8fd
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Note: When providing the ScriptLocation parameter, if you do not provide a full path (ex. C:\Users\Name\Documents\taskt\My Scripts\SomeScript.xml) then the application will search for the file in the root path. Failure to locate the file will return "Client Script Location Not Found: Hi2.xml. You should always check the value of the response returned to ensure that th script was invoked successfully.

Option 2 - Send Script Data

Script Data Sample Request: Script Data Sample Request

POST /ExecuteScript HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
ScriptData: <?xml version="1.0" encoding="utf-8"?><Script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Commands><ScriptAction><ScriptCommand xsi:type="MessageBoxCommand" CommandID="47aaa426-52ed-4b3f-ab93-9fceeff696a0" CommandName="MessageBoxCommand" IsCommented="false" SelectionName="Show Message" DefaultPause="0" LineNumber="1" PauseBeforeExeucution="false" CommandEnabled="true" v_ExecutionLocation="rem" v_Message="Hello World!" v_AutoCloseAfter="0" /></ScriptAction></Commands><Variables><ScriptVariable><VariableName>vResult</VariableName><VariableValue xsi:type="xsd:string"></VariableValue></ScriptVariable></Variables></Script>
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 978d0f69-fd7c-4c8c-9751-3b7c867f0790,1bfff7cf-14de-41a9-9f14-657eb1e0bf79
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Base64 Support

If you intend to send raw script data, you must ensure that there are no newline characters. To help account for this scenario, the API also supports receiving data encoded in UTF8 base64 format. The following script is the same as the previous, however, note that the script data is encoded in base64. When received by the taskt Client, it is deserialized and executed in the same manner:

POST /ExecuteScript HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
ScriptData: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxTY3JpcHQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+DQogIDxDb21tYW5kcz4NCiAgICA8U2NyaXB0QWN0aW9uPg0KICAgICAgPFNjcmlwdENvbW1hbmQgeHNpOnR5cGU9Ik1lc3NhZ2VCb3hDb21tYW5kIiBDb21tYW5kSUQ9IjQ3YWFhNDI2LTUyZWQtNGIzZi1hYjkzLTlmY2VlZmY2OTZhMCIgQ29tbWFuZE5hbWU9Ik1lc3NhZ2VCb3hDb21tYW5kIiBJc0NvbW1lbnRlZD0iZmFsc2UiIFNlbGVjdGlvbk5hbWU9IlNob3cgTWVzc2FnZSIgRGVmYXVsdFBhdXNlPSIwIiBMaW5lTnVtYmVyPSIxIiBQYXVzZUJlZm9yZUV4ZXVjdXRpb249ImZhbHNlIiBDb21tYW5kRW5hYmxlZD0idHJ1ZSIgdl9FeGVjdXRpb25Mb2NhdGlvbj0icmVtIiB2X01lc3NhZ2U9IkhlbGxvIFdvcmxkISIgdl9BdXRvQ2xvc2VBZnRlcj0iMCIgLz4NCiAgICA8L1NjcmlwdEFjdGlvbj4NCiAgPC9Db21tYW5kcz4NCiAgPFZhcmlhYmxlcz4NCiAgICA8U2NyaXB0VmFyaWFibGU+DQogICAgICA8VmFyaWFibGVOYW1lPnZSZXN1bHQ8L1ZhcmlhYmxlTmFtZT4NCiAgICAgIDxWYXJpYWJsZVZhbHVlIHhzaTp0eXBlPSJ4c2Q6c3RyaW5nIj48L1ZhcmlhYmxlVmFsdWU+DQogICAgPC9TY3JpcHRWYXJpYWJsZT4NCiAgPC9WYXJpYWJsZXM+DQo8L1NjcmlwdD4=
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 0c2b7578-ca48-43f9-8468-9ba6f42ef84e,11f9703e-457d-4194-aae7-4d1fbf026be6
Host: 192.168.86.200:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Await Script API Sample

This API functions the exact same as Execute Script API, however, it will not return a result until the script has finished (Success or Error). This API should be used synchronously as there is no queue support yet. You can return a custom value back to the calling client by setting variable taskt.Result before the script has finished executing. If you decide not the set the taskt.Result variable, the client will return Successfully Completed Script as the default response.

Configuring Custom Response https://i.imgur.com/DHvH5aV.png

API Returning Sample Response https://i.imgur.com/UgprjWd.png

POST /AwaitScript HTTP/1.1
Host: 192.168.86.200:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
ScriptData: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxTY3JpcHQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSI+DQogIDxDb21tYW5kcz4NCiAgICA8U2NyaXB0QWN0aW9uPg0KICAgICAgPFNjcmlwdENvbW1hbmQgeHNpOnR5cGU9Ik1lc3NhZ2VCb3hDb21tYW5kIiBDb21tYW5kSUQ9IjNjZWY4N2JlLTI3MWMtNDdiNy04ZDU2LTQzMzk4NjZmNjk4YSIgQ29tbWFuZE5hbWU9Ik1lc3NhZ2VCb3hDb21tYW5kIiBJc0NvbW1lbnRlZD0iZmFsc2UiIFNlbGVjdGlvbk5hbWU9IlNob3cgTWVzc2FnZSIgRGVmYXVsdFBhdXNlPSIwIiBMaW5lTnVtYmVyPSIxIiBQYXVzZUJlZm9yZUV4ZXVjdXRpb249ImZhbHNlIiBDb21tYW5kRW5hYmxlZD0idHJ1ZSIgdl9NZXNzYWdlPSJUZXN0aW5nIEF3YWl0ISIgdl9BdXRvQ2xvc2VBZnRlcj0iMCIgLz4NCiAgICA8L1NjcmlwdEFjdGlvbj4NCiAgICA8U2NyaXB0QWN0aW9uPg0KICAgICAgPFNjcmlwdENvbW1hbmQgeHNpOnR5cGU9IlZhcmlhYmxlQ29tbWFuZCIgQ29tbWFuZElEPSIzNTc4ZDQ3Mi05ZmRkLTQ5MTMtYTkxNi0zZGJjYjUwMzhjY2MiIENvbW1hbmROYW1lPSJWYXJpYWJsZUNvbW1hbmQiIElzQ29tbWVudGVkPSJmYWxzZSIgU2VsZWN0aW9uTmFtZT0iU2V0IFZhcmlhYmxlIiBEZWZhdWx0UGF1c2U9IjAiIExpbmVOdW1iZXI9IjIiIFBhdXNlQmVmb3JlRXhldWN1dGlvbj0iZmFsc2UiIENvbW1hbmRFbmFibGVkPSJ0cnVlIiB2X3VzZXJWYXJpYWJsZU5hbWU9InRhc2t0LlJlc3VsdCIgdl9JbnB1dD0iV29vIGhvbyB0aGlzIGlzIG15IHJlc3VsdCIgLz4NCiAgICA8L1NjcmlwdEFjdGlvbj4NCiAgPC9Db21tYW5kcz4NCiAgPFZhcmlhYmxlcyAvPg0KPC9TY3JpcHQ+
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 8bf7ec94-4eac-4515-a64e-3a194e980407,a89548b3-5bc2-444c-b751-f6c16ce30240
Host: localhost:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Execute Command API Sample

This API enables you to execute an individual command remotely instead of an entire script. To get the JSON of the command, you can right-click any command in the builder and select "View Code". Note you can pass the JSON as a single string or in Base64 format. This API supports only executing a single command at a time. If you require multiple commands, consider calling this API multiple times or simply passing a script to the ExecuteScript API.

https://i.imgur.com/8m34lWd.png

POST /ExecuteCommand HTTP/1.1
Host: Localhost:19312
Content-Type: text/plain
AuthKey: e52cdb2d-7c4c-4ae3-a231-55ce1638acc2
CommandData: {"$type":"taskt.Core.Automation.Commands.MessageBoxCommand, taskt","v_Message":"{vres}","v_AutoCloseAfter":0,"CommandID":"40aae430-f6bc-4d04-861c-4f6f03dd0601","CommandName":"MessageBoxCommand","IsCommented":false,"SelectionName":"Show Message","DefaultPause":0,"LineNumber":2,"PauseBeforeExeucution":false,"DisplayForeColor":"SteelBlue","v_Comment":null,"CommandEnabled":true,"CustomRendering":true}
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 4e8930bd-90f9-4c8d-8351-093226620488,3c260e1c-a6f0-4efd-83b3-c019996fdff6
Host: localhost:19312
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache