def update(sf, sf_object, sf_id, **kwargs): # Temp fix for using pipe for ContactLensMatchedCategories data = {} if (sf_object == pnamespace + 'AC_ContactChannelAnalytics__c'): data = {k:v for k,v in kwargs.items()} else: data = {k:parse_date(v) for k,v in kwargs.items()} return {'Status':sf.update(sobject=sf_object, sobj_id=sf_id, data=data)}
def lambda_handler(event, context): sf_operation = str(event['Details']['Parameters']['sf_operation']) content_type = str(event['Details']['Parameters'].get('ContentType', '')) parameters = dict(event['Details']['Parameters']) sf = Salesforce() sf.sign_in() if content_type == "audio/wav": logger.info("event: CallRecording. ParentId: %s" % str(event['Details']['Parameters']['ParentId'])) else: logger.info("event: %s" % json.dumps(event)) del parameters['sf_operation'] event['Details']['Parameters'] = parameters if (sf_operation == "lookup"): resp = lookup(sf=sf, **event['Details']['Parameters']) elif (sf_operation == "create"): resp = create(sf=sf, **event['Details']['Parameters']) elif (sf_operation == "update"): resp = update(sf=sf, **event['Details']['Parameters']) elif (sf_operation == "phoneLookup"): resp = phoneLookup(sf, event['Details']['Parameters']['sf_phone'], event['Details']['Parameters']['sf_fields']) elif (sf_operation == 'invokeFlow'): sf_flow_id = str(event['Details']['Parameters']['sf_flow_id']) parameters = dict(event['Details']['Parameters']) del parameters['sf_flow_id'] event['Details']['Parameters'] = parameters data = {k: parse_date(v) for k, v in parameters.items()} resp = invoke_flow(sf, sf_flow_id, data) else: msg = "sf_operation unknown" logger.error(msg) raise Exception(msg) logger.info("result: %s" % resp) return resp
def update(sf, sf_object, sf_id, **kwargs): data = {k: parse_date(v) for k, v in kwargs.items()} return {'Status': sf.update(sobject=sf_object, sobj_id=sf_id, data=data)}
def create(sf, sf_object, **kwargs): data = {k: parse_date(v) for k, v in kwargs.items()} return {'Id': sf.create(sobject=sf_object, data=data)}