def CreateTicket(SIEM_Events): conf = LoadConfig.Load() client = Client("%s" % conf['otrs']['server'], "%s" % conf['otrs']['user'], "%s" % conf['otrs']['pass']) client.session_create() with open("siem_events.csv", "rt") as events: data = csv.reader(events) for event in data: ticket = Ticket.create_basic(Title=event[0], Queue=event[1], State=event[2], Priority=event[3], CustomerUser=event[4]) article = Article({"Subject": event[5], "Body": event[6]}) logging.info(client.ticket_create(ticket, article)) sleep(30)
def buildTicket(OTRS_SERVER, OTRS_USER, OTRS_PASS, HOST, TRIGGERID, SEVERITY, DESCRIPTION, QUEUE, STATE, PRIORITY, CUSTOMERUSER): client = Client(OTRS_SERVER, OTRS_USER, OTRS_PASS) client.session_create() new_ticket = Ticket.create_basic(Title="Server " + HOST + " Down", Queue="" + QUEUE + "", State=u"" + STATE + "", Priority=u"" + PRIORITY + "", CustomerUser="" + CUSTOMERUSER + "") first_article = Article({ "Subject": "Server " + HOST + " Down", "Body": "Host: " + HOST + " Trigger ID: " + TRIGGERID + " Severity: " + SEVERITY + "Descricao: " + DESCRIPTION }) dynamic_field = DynamicField("TriggerID", value="" + TRIGGERID + "") client.ticket_create(new_ticket, first_article, None, dynamic_fields=[dynamic_field]) return "Ticket Build"
#!/usr/bin/env python3 import sys from pyotrs import Article, Client, DynamicField, Ticket title = "title" body = "body" client = Client(URL, USER, PASSWORD) client.session_create() new_ticket = Ticket.create_basic( Title=title, Queue="Novos tickets via telefone", State=u"new", Priority=u"Media prioridade", CustomerUser="******" ) first_article = Article({"Subject": title, "Body": body}) create_ticket = client.ticket_create(new_ticket, first_article) print(create_ticket, "Retorno função") print(create_ticket['TicketNumber']) print(type(create_ticket['TicketNumber'])) ticketnumber = create_ticket['TicketNumber'] variable = '"OTRSTICKET"'
def create_ticket_command(): title = demisto.args().get('title') queue = demisto.args().get('queue') state = translate_state(demisto.args().get('state')) priority = translate_priority(demisto.args().get('priority')) customer_user = demisto.args().get('customer_user') article_subject = demisto.args().get('article_subject') article_body = demisto.args().get('article_body') ticket_type = demisto.args().get('type') dynamic_fields = demisto.args().get('dynamic_fields') attachment = demisto.args().get('attachment') df = [] df_output = [] if dynamic_fields: dynamic_fields_list = argToList(dynamic_fields) for field in dynamic_fields_list: splitted_field = field.split('=') current_field, current_value = splitted_field[0], splitted_field[1] df.append(DynamicField(current_field, current_value)) df_output.append({current_field: current_value}) attachments = [] if attachment: attachments_list = argToList(attachment) attachments = demisto_entry_to_otrs_attachment(attachments_list) new_ticket = Ticket.create_basic(Title=title, Queue=queue, State=state, Priority=priority, CustomerUser=customer_user, Type=ticket_type) article = Article({'Subject': article_subject, 'Body': article_body}) ticket = create_ticket(new_ticket, article, df, attachments) context = { 'ID': str(ticket['TicketID']), 'Number': ticket['TicketNumber'], 'CustomerUser': customer_user, 'Priority': priority, 'Queue': queue, 'State': state, 'Title': title, 'Article': { 'Subject': article_subject, 'Body': article_body }, 'Type': ticket_type, 'DynamicField': df_output } ec = {'OTRS.Ticket(val.ID===obj.ID)': context} output = 'Created ticket {} successfully'.format(ticket['TicketID']) demisto.results({ 'Type': entryTypes['note'], 'Contents': context, 'ContentsFormat': formats['json'], 'ReadableContentsFormat': formats['markdown'], 'HumanReadable': output, 'EntryContext': ec })
def run(self, params={}): client = self.connection.client try: client.session_create() except Exception as e: raise Exception( "Unable to connect to OTRS webservice! Please check your connection information and " "that you have properly configured OTRS webservice. Information on configuring the " "webservice can be found in the Connection help") # dynamic fields new_dynamic_fields = params.get("dynamic_fields") del (params["dynamic_fields"]) params = komand.helper.clean(params) # cleaning up params new_article = params.get("article") del (params["article"]) # helper.clean will not remove empty list. If these are left empty and not removed the plugin will fail if not new_article["ExcludeMuteNotificationToUserID"]: del (new_article["ExcludeMuteNotificationToUserID"]) if not new_article["ExcludeNotificationToUserID"]: del (new_article["ExcludeNotificationToUserID"]) if not new_article["ForceNotificationToUserID"]: del (new_article["ForceNotificationToUserID"]) # Set attachments new_attachments = params.get("attachments") del (params["attachments"]) # basics basics = {} for basic_param in [ "Title", "Queue", "Type", "State", "Priority", "CustomerUser" ]: if basic_param in params: basics[basic_param] = params.get(basic_param) del (params[basic_param]) else: raise Exception( "Parameter {} was not found. This is required to create a ticket" .format(basic_param)) # left over params added to other_basics other_basics = {} for k, v in params.items(): if v: other_basics[k] = v # build attachments attachments = [] for attachment in new_attachments: a = Attachment.create_basic(Content=attachment["content"], ContentType=mimetypes.guess_type( attachment["filename"])[0], Filename=attachment["filename"]) attachments.append(a) # build dynamic fields dynamic_fields = list( map(lambda f: DynamicField(**f), new_dynamic_fields)) # create ticket from basics and all other params new_ticket = Ticket.create_basic(**basics) new_article = Article(new_article) new_attachments = attachments new_dynamic_fields = dynamic_fields # Create Ticket ticket_results = client.ticket_create( ticket=new_ticket, article=new_article, attachments=new_attachments, dynamic_fields=new_dynamic_fields, **other_basics) ticket_id = ticket_results.get("TicketID") # check if pendingtime is left unmodified if params.get("PendingTime").startswith("0001-01-01"): del (params["PendingTime"]) else: PyOTRSUtils.add_pendingtime(self, client, params.get("PendingTime"), ticket_id) # update SLA if params.get("SLA"): PyOTRSUtils.add_sla(self, client=client, ticket_id=ticket_id, sla=params.get("SLA"), sla_service=params.get("Service")) ticket_details = client.ticket_get_by_id( ticket_id, articles=False, attachments=False, dynamic_fields=False, html_body_as_attachment=False) ticket_details = ticket_details.to_dct() if ticket_details["Ticket"]["SLAID"] == "": raise Exception( "SLA and Service was not set. Please check the SLA and Service parameters as they maybe set incorrectly!\n" f"SLA Parameter: {params.get('SLA')}\n" f"SLA Service parameter: {params.get('Service')}\n" f"Please note ticket ID:{ticket_id} was created but the SLA and Sevice parameters were not updated." ) # format TicketNumber as its required as an INT in other actions and returned here as a string return { "ticket_id": int(ticket_results["TicketID"]), "ticket_number": int(ticket_results["TicketNumber"]) }
from pyotrs import Client, Article, Ticket client = Client("http://172.16.1.50", "admin", "admin") client.session_create() #client.ticket_get_by_id(2, articles=True, attachments=False, dynamic_fields=False) new_ticket = Ticket.create_basic(Title="This is the Title", Queue="Junk", State=u"new", Priority=u"3 normal", CustomerUser="******") first_article = Article({"Subject": "Subj", "Body": "New Body"}) client.ticket_create(new_ticket, first_article)