--- title: "system.secsgem.getResponse" description: "Attempts to retrieve a response message from the Gateway." --- # system.secsgem.getResponse > Attempts to retrieve a response message from the Gateway. This function is used in **Python Scripting**. ## Description Attempts to retrieve a response message from the Gateway. The transaction id from the sent message is used to retrieve the response. ## Client Permission Restrictions This scripting function has no [Client Permission](../../../ignition-modules/vision/vision-project-properties/vision-project-properties.md#vision-permissions-properties) restrictions. ## Syntax `system.secsgem.getResponse(transactionID, equipment, [timeout], [poll])` ### Parameters | Type | Parameter | Description | | ------- | ------- | ------ | | Integer| `transactionID` | The transactionID of the request and response. The transactionID is used to retrieve the response. Typically used in conjunction with [system.secsgem.sendRequest](appendix\scripting-functions\system-secsgem\system-secsgem-sendRequest.md) to generate a transactionID. | | String| `equipment` | Name of equipment connection. | | Integer| `timeout` | Specifies in seconds how long to wait for a response before returning None. If omitted the timeout will be 5 seconds. | | Integer| `poll` | Specifies in milliseconds how often to poll the system for a response. If omitted the poll will be 150 milliseconds. | ### Returns **Any** - A Python object, typically a dictionary. The actual result is a JSON string that's decoded into a Python object, as shown on the mapping on the [system.util.jsonDecode](../system-util/system-util-jsonDecode.md) page. ### Scope Gateway, Vision Client, Perspective Session ## Code Examples ```python title="Code Snippet 1" # Replace the string below with the equipment name you want to send the request to. myEquipment = "EquipmentOne" # Define the contents of the body. We're using an empty string, since S1F1 doesn't expect a body, and we need to define something (Python's None will result in an exception). body = "" # Store the returned transactionID in a variable. transactionID = system.secsgem.sendRequest("S1F1", True, body, myEquipment) # Use the transactionID to lookup the response. response = system.secsgem.getResponse(transactionID, myEquipment, 2) # We're printing out the response here, but you could do something more useful instead. print response ``` ```python title="Code Snippet 2" # This example demonstrates how to retrieve the value of a Status Variable via S1F3. # If using the simulator that comes with the SECS/GEM module, this example will return the current time from the Clock Status Variable. # Replace the string below with the equipment name you want to send the request to. myEquipment = "EquipmentOne" # Define the contents of the body. The Clock Status Variable has an SVID of 1. body = [{"format":"U4", "value":1}] # Store the returned transactionID in a variable. transactionID = system.secsgem.sendRequest("S1F3", True, body, myEquipment) # Retrieve the response. response = system.secsgem.getResponse(transactionID, myEquipment, 2) ## We need to do some digging to get the value of the Clock: ## -The response is a Dictionary. ## -Inside of the response is the key "body". ## -The value of "body" is a Python List containing another Dictionary (which has our Clock value) ## Thus we use [0] to access the Dictionary. ## -The Dictionary contains a key named "value", which is the value of our clock. theDatetime = response["body"][0]["value"] # We parse the date into something more human readable, and print it out. print system.date.parse(theDatetime, "yyMMddHHmmss") ```