AnyLlmSearchXsoarIncident
Search incident fields for text results. Results are placed in the search results buffer where they can be added to the LLM's conversation context.
python · Anything LLM
Source
import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 def GetJsonByDot(value: dict, field: str): keys = field.split(".") for k in keys: if isinstance(value, list): if k.isdigit(): value = value[int(k)] else: value = value[k] elif isinstance(value, dict): value = value[k] return value def ConvertLabels(labels): value = {} for ll in labels: value[ll["type"]] = ll["value"] return value def main(): try: args = demisto.args() ids = args.get("ids", "").split(",") fields = args.get("fields", "").split(",") text = "" for incid in ids: incident = execute_command("getIncidents", {"id": incid}, extract_contents=True)["data"][0] if text != "": text += "\n" text += f"{incid} " for fld in fields: value = demisto.get(incident, fld, "") ff = fld.split(".", 1) if "CustomFields" in incident: if ff[0] in incident["CustomFields"]: value = demisto.get(incident["CustomFields"], ff[0], "") else: value = demisto.get(incident, ff[0], "") else: value = demisto.get(incident, ff[0], "") if len(ff) > 1: if ff[0] == "labels": value = ConvertLabels(value) value = GetJsonByDot(value, ff[1]) if value != "": text += f"{fld}:{value} " execute_command("setIncident", {"customFields": {"anythingllmsearchresults": text}}) except Exception as ex: demisto.error(traceback.format_exc()) return_error(f"AnyLlmSearchXsoarIncident: error is - {ex}") if __name__ in ("__main__", "__builtin__", "builtins"): main()
README
Search incident fields for text results. Results are placed in the search results buffer where they can be added to the LLM’s conversation context
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
Inputs
| Argument Name | Description |
|---|---|
| ids | CSV list of incident IDs to search for text |
| fields | CSV list of field names to search. Each field uses JSON dot notation. Example: triagesla.runStatus |
Outputs
There are no outputs for this script.