Source
import demistomock as demisto from CommonServerPython import * from CommonServerUserPython import * def filter_OOO_users(get_users_response, ooo_list_name): """ Given the response with all OnCall users, remove the users that are Out Of Office, using the list `OOO List`. """ all_users = get_users_response.get("Contents") if not all_users: return "No data returned" # get OOO users ooo_list = demisto.executeCommand("GetUsersOOO", {"listname": ooo_list_name}) if isError(ooo_list[0]): return_error(f'Error occurred while trying to get OOO users: {ooo_list[0].get("Contents")}') # Get Away Users away_users_response = demisto.executeCommand("GetAwayUsers", {}) if is_error(away_users_response) or not away_users_response: return_error(f"Failed to get away users: {get_error(away_users_response)!s}") away_users: list[Dict] = away_users_response[0].get("EntryContext", {}).get("AwayUsers", []) away_users = away_users if away_users else [] list_info = ooo_list[0].get("EntryContext").get("ShiftManagment.OOOUsers") list_info = list_info + away_users OOO_usernames = [i["username"] for i in list_info] try: in_office_users = [] for user in all_users: if user.get("username") in OOO_usernames: continue else: in_office_users.append(user) return "On-Call Team members\n" + tableToMarkdown("", in_office_users, ["username", "email", "name", "phone", "roles"]) except Exception as e: demisto.error(f"Encountered the following exception: {e.args[0]}\n Returning all users without filtering.") return get_users_response.get("HumanReadable") def main(): include_out_of_office_users = demisto.args().get("include_OOO_users", "false") == "true" get_users_response: list = demisto.executeCommand("getUsers", {"onCall": True}) list_name = demisto.getArg("listname") if is_error(get_users_response): demisto.error(f"Failed to get users on call: {get_error(get_users_response)!s}") else: if include_out_of_office_users: contents = get_users_response[0]["HumanReadable"].replace("## On-Call Users", "On-Call Team members") else: contents = filter_OOO_users(get_users_response[0], list_name) if contents == "No data returned": contents = "On-Call Team members\nNo team members were found on-call." demisto.results({"Type": entryTypes["note"], "ContentsFormat": formats["markdown"], "Contents": contents}) if __name__ in ("__builtin__", "builtins", "__main__"): main()
README
Retrieves users who are currently on call.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | Shift Management, widget |
| Cortex XSOAR Version | 5.5.0 |
Inputs
| Argument Name | Description |
|---|---|
| include_OOO_users | Whether to retrieve all users, including users who are out of the office. If “true” will retrieve all users. If “false”, will only retrieve users who are not out of office. Default is “false”. |
| listname | The name of the out-of-office XSOAR list. Default is “OOO List”. |
Outputs
There are no outputs for this script.