Hilfe & Wissen Welche Automation Funktionen gibt es?

Welche Automation Funktionen gibt es?

logging.info / logging.error

Beispiel

logging.info("landingpagename") # 2024-02-02 15:01:46 +0100: landingpagename

Definition und Benutzung

Loggt mi dem Mode etwas während der Automation aus. Bei dem Typ event der Automation muss noch zusätzlich mit dem Befehl envVariables['should_log'] = True das logging angeschaltet werden, das es Standardmässig aus ist, und nur Angeschaltet wird, wenn bestimmte Funktionen aufgerufen und ausgeführt werden, um nicht zuviel unnützes Logging zu haben.

Syntax

logging.info(object_)

ident

Beispiel

ident("landingpagename") # "landingpagename"

Definition und Benutzung

Gibt einfach das Object zurück. Das kann manchmal benutzt werden, um danach auf die .Funktionen get, replace, strip und split zuzugreifen.

Syntax

ident(object_)

to_str

Beispiel

to_str(15) # "15"

Definition und Benutzung

Wandelt ein Object in ein String um. Sollte die Umwandlung nicht klappen kommt ein Leerer String zurück

Syntax

to_str(object_)

to_int

Beispiel

to_int("15")  # 15
to_int(3.141) # 3
to_int(3.0)   # 3

Definition und Benutzung

Wandelt ein Object in Integer um. Sollte die Umwandlung nicht klappen kommt 0 zurück.

Syntax

to_int(object_)

to_float

Beispiel

to_float("3.141") # 3.141
to_float(3) # 3.0

Definition und Benutzung

Wandelt ein Object in Float um. Sollte die Umwandlung nicht klappen kommt 0 zurück.

Syntax

to_float(object_)

json_loads

Beispiel

json_loads('{"Hallo": "Hallo"}') # {'Hallo':'Hallo'}

Definition und Benutzung

Ladt ein JSON Object von einem String

Syntax

json_loads(json_string)

json_dumps

Beispiel

json_dumps({'Hallo':'Hallo'}) # '{"Hallo": "Hallo"}'

Definition und Benutzung

Wandelt ein Object ein ein JSON String um

Syntax

json_dumps(object_)

base64_encode

Beispiel

base64_encode("string") # "c3RyaW5n"

Definition und Benutzung

Encodiert einen String nach base64

Syntax

base64_encode(string)

base64_decode

Beispiel

base64_decode("c3RyaW5n") # "string"

Definition und Benutzung

Dekodicert einen base64 String

Syntax

base64_decode(base64_string)

urlencode

Beispiel

urlencode({"test":"test", "hallo": "hallo 1"}) # test=test&hallo=hallo+1

Definition und Benutzung

URL encodiert den paramString

Syntax

urlencode(dict_)

parse_url_query_string

Beispiel

parse_url_query_string("https://kajomi.de?test=test&hallo=hallo+1") # {'test': ['test'], 'hallo': ['hallo 1']}

Definition und Benutzung

Parsed den Query String einer Domain

Syntax

parse_url_query_string(string_)

determine_random_guid

Beispiel

determine_random_guid(5) # "eOuYh"

Definition und Benutzung

Gibt eine zufälligen erzeugten String zurück

Syntax

determine_random_guid(length=10)

uuid4

Beispiel

uuid4() # "342d8b45-1fdd-4416-90bc-9312eb8e2af8"

Definition und Benutzung

Gibt eine zufälligen erzeugten uuid4 String zurück

Syntax

uuid4()

copy_simple_object

Beispiel

test = {'Hallo': 'Hallo'}
copy_simple_object(test) # {'Hallo': 'Hallo'}

Definition und Benutzung

Kopiert ein Object mit python copy.deepcopy

Syntax

copy_simple_object(object_)

datetime

Beispiel

datetime.datetime.now() # datetime.datetime(2024, 2, 3, 16, 4, 22, 979463)

Definition und Benutzung

Grift auf die python datetime Library zu. https://docs.python.org/3/library/datetime.html

Syntax

datetime.*

csv_reader

Beispiel

reader = csv_reader(b"test;test\nhallo;hallo") # <_csv.reader object at 0x7ff44b20ce48>
for row in reader:
  row # ['test', 'test'] / ['hallo', 'hallo']

Definition und Benutzung

Liest ein Bytes String in ein csv reader object ein

Syntax

csv_reader(byte_string)

csv_writerows

Beispiel

csv_writerows([['test', 'test'], ['hallo', 'hallo']]) # b'test;test\r\nhallo;hallo\r\n'

Definition und Benutzung

Wandelt eine liste einer liste in ein byte string um

Syntax

csv_writerows(list_of_list)

is_email_disposable

Beispiel

is_email_disposable('test@dispemail.com') # True

Definition und Benutzung

Ist das eine Wegwerf E-Mail. Wenn Sie einige finden die nicht auf der Liste stehen bitte support@kajomi.de anschreiben, damit wir unsere Liste updaten können.

Syntax

is_email_disposable(email_as_string)

is_email_multi_able_used

Beispiel

is_email_multi_able_used('test+already@gmail.com', 1) # True

Definition und Benutzung

Schaut ob diese E-Mail schonmal in unserem Beispiel mit test@gmail.com im Verteiler vorkommt. Wenn ja kommt True zurück.

Syntax

is_email_multi_able_used(email_as_string, listnum)

call_url

Beispiel

call_url('https://presise.api.de', method="GET", headers={'Authorization': 'meinToken'}) # response Object wo auf response.body und response.code zugegriffen werden kann
call_url('https://presise.api.de', params={"hallo": "hallo"}) # https://presise.api.de?hallo=hallo

Definition und Benutzung

Ruft die url mit der method und den header auf. Wenn user und listnum gesetzt ist, dann können in den parametern auf die Templatesprache zugegriffen werden Bsp. %email% des Users. Wenn to_string=True gesetzt wird, wird immer daraus bei ein Query String gemacht, anderen Falls werdn die Parameter in JSON umgewandelt.

Syntax

call_url(url, method='GET', params=None, user=None, listnum=None, headers={}, to_string=True)

parse_mail

Beispiel

parsed_mail = parse_mail(mail) # {"from": {"email": "test@test.de", "firstname": "Absender", "lastname": ""}, "to": [{"email": "t@t.de", "firstname": "Nikolai", "lastname": "Kordulla"}], "subject": "Bin ein Subject", "content": "Hallo", "htcontent": ""}

Definition und Benutzung

Parsed eine E-Mail (Quelltext) in Ihre Bestandteile und gibt sie als Object zurück

Syntax

parse_mail(email_as_source_string)

verify_email

Beispiel

verify_email(mail) # schmeisst eine Exception

Definition und Benutzung

Verifiziert ob diese E-Mail wirklich von diesem Absender kommt. Wirft eine Exception wenn es nicht der Fall ist.

Syntax

verify_email(email_as_source_string)

check_signature

Beispiel

user = check_signature(request)

Definition und Benutzung

Verifiziert den kajomi Signatur String auf einem request, und gibt den user zurück. Wenn man Bsp. ein webhook als replacement für das kajomi Anmeldeformular verwenden will, sollte man immer die Signatur auch überprüfen.

Syntax

check_signature(request)

determine_link

Beispiel

if event.get('category') == 'KJMTrack' and event.get('action') == 'click':
  link = determine_link(event.get('label')) # {'id': 1, 'type': 'html' , 'url': 'https://www.kajomi.de'}

Definition und Benutzung

Extrahert Bsp. aus einem event den dazugehörigen link.

Syntax

determine_link(link_id)

add_email_to_blacklist

Beispiel

how_many = add_email_to_blacklist('max@mustermann.de', 0) # 2 - in dem Fall wurden 2 E-Mails aus den Verteilern gelöscht. Da listnum=0 übergeben wurde kommt die E-Mail auf die globale Blackliste

Definition und Benutzung

Fügt die E-Mail der Blacklist hinzu. Schmeisst eine Exception wenn es keine Valide E-Mail ist.

Syntax

add_email_to_blacklist(email, listnum)

set_marker_for_mailing_id

Beispiel

users = set_marker_for_mailing_id('test', 2) # 10 - In dem Fall haben 10 user den Marker test gesetzt bekommen.

Definition und Benutzung

Fügt einen Marker für alle Users eines Mailings hinzu. Die Zeichenanzahl des Markser darf nicht länger als 10 Zeichen sein, sollte das der Fall sein wird eine Exception geworfen.

Syntax

set_marker_for_mailing_id(marker, mailing_id)

send_mailing

Beispiel

mailing_id = send_mailing(listnum=1, template_id=10) # 1 - sendet einen Newsletter mit der template_id=10 an den Verteiler 1
send_mailing('VIRT', 1, virt_template={'content': 'Test', 'subject': 'Test' }) # 1 - Hier wird das "Virtuelle Template" an die Liste 1 geschickt
preparedqueue = [{"target": "selection","type": "AND","selection": "sex == 1","description":"Shoud mark nothing"},
]  
send_mailing(listnum=1, preparedqueue=preparedqueue, template_id=%10) # 1 - Hier wird das Template mit der id 10 an den Verteiler 1 aber nur an alle männlichen Mitglieder der Liste geschickt

Definition und Benutzung

Erstellt einen Newsletter und versendet ihn sofort. Wenn die template="VIRT" ist wird das template das virttemplate genommen, andernfalls wird das template mit der templateid geladen. Als Rückgabewert gibt es die mailing_id des Newsletters

Syntax

send_mailing(template_id, listnum, preparedqueue=[], linktracking=True, senderemail=None, virt_template={})

select_mailing

Beispiel

mailing = select_mailings('description == "kajomi"') # {'id': 31699, 'sendername': 'sende', 'senderemail': 'hallo@hallo.de', 'description': 'kajomi', 'subject': 'sub', 'content': 'Asd', 'htcontent': '', 'date': '2024-02-03', 'time': '17:40:34', 'list': 2, 'loadrule': '1==1', 'preparedqueue': [], 'mailType': 'prepared', 'amount': 0, 'action': 'mailing', 'datesent': '2024-02-03T16:40:34Z', 'order': 'desc', 'selectlimit': 1, 'overview': {'selections': [], 'blacklists': [], 'whitelists': [], 'mailings': [], 'followups': [], 'blackselections': [], 'hasTracking': False, 'cnf': 1, 'readonline': True, 'attachments': []}, 'status': 2, 'size': 1, 'linktracking': False, 'ignoreLinks': {'content': [], 'htcontent': []}, 'splitrun': None}

Definition und Benutzung

Selektiert Mailings und gibt eines zurück. Sollten mehrer zurückkommen gibt es eins zurück

Syntax

select_mailing(selectSql)

select_mailings

Beispiel

mailing = select_mailings('description == "kajomi"') # [{'id': 31699, 'sendername': 'sende', 'senderemail': 'hallo@hallo.de', 'description': 'kajomi', 'subject': 'sub', 'content': 'Asd', 'htcontent': '', 'date': '2024-02-03', 'time': '17:40:34', 'list': 2, 'loadrule': '1==1', 'preparedqueue': [], 'mailType': 'prepared', 'amount': 0, 'action': 'mailing', 'datesent': '2024-02-03T16:40:34Z', 'order': 'desc', 'selectlimit': 1, 'overview': {'selections': [], 'blacklists': [], 'whitelists': [], 'mailings': [], 'followups': [], 'blackselections': [], 'hasTracking': False, 'cnf': 1, 'readonline': True, 'attachments': []}, 'status': 2, 'size': 1, 'linktracking': False, 'ignoreLinks': {'content': [], 'htcontent': []}, 'splitrun': None}]

Definition und Benutzung

Selektiert ein Mailing und gibt sie zurück.

Syntax

select_mailings(selectSql)

delete_mailings_by_selection

Beispiel

delete_mailings_by_selection('description == "kajomi" && status <= 0') # 1 - hier wurde damit 1 Mailing gelöscht.

Definition und Benutzung

Selektiert mailings und löscht diese. Der Status sollte immer mit =0 abgefragt werden. Als Rückgabewert wird die Anzahl der Mailings angegeben. Ist das Mailing ein Splitrun Master kann es auch nicht gelöscht werden.

Syntax

delete_mailings_by_selection(selection)

determine_template_of_mailing

Beispiel

mailing = select_mailings('description == "kajomi"')
template = determine_template_of_mailing(mailing) # {'_copy': True, 'linktracking': True, 'htcontent': '', 'subject': 'Betreff', 'sendername': 'test@test.de', 'content': 'Hallo', 'attachments': [], 'ignoreLinks': {'content': [], 'htcontent': []}}
send_transaction_mailing(template_id='VIRT', user=user, description="Last newsletter", virt_template=template)

Definition und Benutzung

Gibt das Template eines Mailing Objects zurück, und kann dann wiederrum als Mailing versendet werden. Erst wird das Template des Mailings kopiert und dann das Linktracking rückgängig gemacht.

Syntax

determine_template_of_mailing(mailing)

send_transaction_mailing

Beispiel

send_transaction_mailing(template_id=10, user=user, description="DOI email")       

Definition und Benutzung

Sendet eine Transaktionsmail mit dem templateid an den User. Sollte templateid=VIRT sein wird dann das virttemplate benutzt. Der eventuser wird in addfields['eventuser'] gekapselt. Die addfields können im Template mit folgendem Code zugegriffen werden: [[ kjm.ident(%addfields%).get("eventuser").get("firstname") ]] . Wenn addfields benutzt werden sollen, muss className gesetzt werden. Das ist die Klasse nach der die Transactions Mails zusammengezählt werden.

Syntax

send_transaction_mailing(template_id, user, linktracking=True, description="", virt_template={}, className=None, event_user=None, add_fields={}, attachments=[])

determine_bonuscode_size

Beispiel

determine_bonuscode_size('gutschein2022') # 10 - 10 Gutscheincodes sind vom type gutschein2022 noch nicht verbraucht.

Definition und Benutzung

Gibt die Anzahl der unverbrauchten gutscheincodes eines typs zurück.

Syntax

determine_bonuscode_size(bonuscode_type)

select_user

Beispiel

select_user(['email', 'sex'], 'cnf = 1') # {'email': 'max@mustermann.de', 'sex': 1}

Definition und Benutzung

Gibt einen Empfänger zurück. Sollten mehrere benutzer exisiteren gibt er den ersten zurück.

Syntax

select_user(fields, selection)

select_users

Beispiel

select_users(['email', 'sex'], 'cnf = 1') # [{'email': 'max@mustermann.de', 'sex': 1}, {'email': 'lea@mustermann.de', 'sex': 2}] 

Definition und Benutzung

Gibt mehrere Empfänger zurück.

Syntax

select_user(fields, selection, limit=100)

add_user

added = add_user(2, user, response) # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': '', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}

Definition und Benutzung

Fügt einen Empfänger dem Verteiler listnum hinzu. Ist ein response object gegeben, dann fügt er die richtige Response für das Signup Formular hinzu. Als Rückgabewert wird der User zurückgegeben.

Syntax

add_user(listnum, userfields, response=None)

add_or_update_user

added = add_or_update_user(user) # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': '', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}

Definition und Benutzung

Fügt einen Empfänger dem Verteiler hinzu oder update ihn wenn er existiert. Wenn im user das Feld unique_field existiert wird nach diesem abgeglichen. Ist keines gesetzt wird standardmässig die E-Mail genommen. beachten sie das der Verteiler mit dem Key list existieren muss. Als Rückgabewert kommt der vollw User zurück.

Syntax

add_or_update_user(user)

update_user

rowcount = update_user('SET user1 = "hallo"', "listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de")  # 2

Definition und Benutzung

Updated auch mehrere User mit einer SET Selektion und einer QUERY Selektion.

Syntax

update_user(update, selection)

update_user_fields

user = update_user_fields({'user1': 'update'}, "listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de")  # {'listnum': 2, 'sex': 0, 'firstname': '', 'lastname': '', 'email': 'max@mustermann.de', 'street': '', 'street_number': '', 'postcode': '', 'city': '', 'birthdate': None, 'country': '', 'area_code': '', 'phone_number': '0', 'cellphone_area_code': '', 'cellphone_number': '0', 'user1': 'update', 'user2': '', 'user3': '', 'user4': '', 'user5': '', 'user6': '', 'user7': '', 'user8': '', 'user9': '', 'user10': '', 'userx': '', 'cnf': '0', 'dateadd': '2024-02-03T17:16:52Z', 'ipaddr': '', 'refurl': '', 'htmail': '1', 'bounces': 0, 'modified': '2024-02-03T17:16:52Z', 'list': 2, 'id': 20434249, 'deleted': False}

Definition und Benutzung

Updated den ersten User der auf diese Selektion passt.

Syntax

update_user_fields(userfields, selection)

delete_users

row_count = delete_users("listnum in (1,3) && email == '%s' && cnf == 1" % "reward@reward.de")  # 2 

Definition und Benutzung

Löscht alle User die auf die Selektion passen. Als welche ip die Löschung ausgelöst hat, wird die ip genommen die übernommen wird. Der Grund ist Deleted by selection

Syntax

delete_users(selection, ip='127.0.0.1')

delete_templist_by_id

delete_templist_by_id('abcdef')

Definition und Benutzung

Löscht eine Templist by id

Syntax

delete_templist_by_id(templist_id)

delete_templists_by_selection

count_templist_deleted = delete_templists_by_selection(selection='description ~ "\{\{ whitelist \}\}%" && created <= DATE_ADD(NOW(), -10day)') # 2

Definition und Benutzung

Löscht alle templists die zu dieser Selektion passen.

Syntax

delete_templists_by_selection(selection)

select_templists

templists = select_templists(selection='description ~ "\{\{ whitelist \}\}%" && created <= DATE_ADD(NOW(), -10day)')

Definition und Benutzung

Selektiert die templists in der selektion und gibt sie als liste zurück

Syntax

select_templists(selection, limit=1000)

create_templist

whitelist = 'max@mustermann.de\nlea@mustermann.de'
create_whitelist = create_templist('whitelist', 'automatisch erstellt nach import:', 'test.csv', whitelist)

Definition und Benutzung

Erstellt eine templist und gibt diese zurück.

Syntax

create_templist(type_, description, filename, file_body):

create_import

data = 'max@mustermann.de\nlea@mustermann.de'
create_import(1, data, filename='create_import-automation.csv')

Definition und Benutzung

Uploaded den Import. Der Status ist dann uploaded, um den Import zu starten dann update_import benutzen.

Syntax

create_import(listnum, data, filename='creat_import-automation.csv')

update_import

download_csv = call_url('https://meine.csv')
user_import = create_import(1, download_csv.get('body'), 'meine.csv')
mapping = ['email', 'sex']
user_import = update_import(1, user_import.get('id'), mapping, 'sync', 'start')

Definition und Benutzung

Updated den hochgeladenen import, und starte ihn oder bricht ihn ab.

Syntax

update_import(listnum, import_id, mapping, mode='insert_update', action='start'):

replacehtmltag

replace_html_tag("<hr/>", "hr", "<br/>") # <br/>
replace_html_tag("<strong>Test</strong>", "strong", "<table><tr><td data-content='children'></td></tr></table>") # <table><tr><td>Test</td></tr></table>

Definition und Benutzung

Ersetz ein html tag durch ein anderes. Kann auch wie im zweiten Beispiel Inhalt mit übernehmen. Muss nicht valides html sein durch das es ersetzt wird man kann also auch Bsp. erst <ul> durch <table data-content='children'></table> ersetzen und dann die <li> durch <tr><td data-content='children'></td></tr> ersetzen.

Syntax

replace_html_tag(html_string, tagAsString, replacement):