CommunicationScriptsExample - skilchen/bots GitHub Wiki
Examples for small user exit
Filter email attachments
Some edi-partners send signatures etc in their email. Script does a simple check if incoming attachment starts with 'UNB'. (Note: Bots treats any text in the email body as another "attachment")
def accept_incoming_attachment(channeldict,ta,charset,content,contenttype,*args,**kwargs):
if 'UNB' in content[0:50]:
return True #attachments is OK
else:
return False #skip this attachment
Set email subject
Some edi-partners send signatures etc in their email.
By default bots uses a number for emails.
Sometimes you want a more meaningfull subject.
def subject(channeldict,ta,subjectstring,content,*args,**kwargs):
ta.synall() #needed to get access to attributes of object ta (eg ta.frompartner)
return 'EDI messages from ' + ta.frompartner + '_' + subjectstring
Name archive file same as input file
Not needed for bots 3.**; do this via setting in bots.ini **
import os
import bots.botslib as botslib
def archivename(channeldict,idta,filename,*args,**kwargs):
taparent=botslib.OldTransaction(idta=idta)
ta_list = botslib.trace_origin(ta=taparent,where={'status':EXTERNIN})
archivename = os.path.basename(ta_list[0].filename)
return archivename
Set the archive path
Path root is set in channel.
Add sub-dir per date, then sub-dir per channel under it.
import time
import bots.botslib as botslib
def archivepath(channeldict,*args,**kwargs):
archivepath = botslib.join(channeldict['archivepath'],time.strftime('%Y%m%d'),channeldict['idchannel'])
return archivepath
Partners in the output file name
Not needed for bots 3.; do this via file name in GUI
def filename(channeldict,filename,ta,*args,**kwargs):
ta.synall() #needed to get access to attributes of object ta (eg ta.frompartner)
return ta.frompartner + '_' + ta.topartner + '_' + filename
Name the output file from botskey
botskey can be set in grammar or mapping, eg. from customer's order
number.
If no botskey is found, the default file naming method will be used.
Syntax must contain 'merge':False.
Not needed for bots 3.; do this via file name in GUI.
def filename(channeldict,filename,ta,*args,**kwargs):
ta.synall()
if ta.botskey:
return filename + ta.botskey
else:
return filename
Name the output file same as input file
Syntax must contain 'merge':False.
Not needed for bots 3.