Skip to content

Custom event handlers

You can create a custom event handler to listen to events from Lime CRM, both the built in core events, and events that you define and publish yourself from a custom endpoint or a custom limeobject.

To add a custom event handler to your package, run the following from the root of your package directory:

lime-project generate event-handler

This adds a custom event handler that listens for changes to companies and posts information to a URL if it sees that the name of the company has changed:

import logging
import requests

logger = logging.getLogger(__name__)


def company_renamed(worker, body, message):
    """Summarize your event handlers's functionality here"""
    logger.info('Received message: {}'.format(body))

    if 'name' in body['original_values']:
        logger.info('Company renamed, calling external API')
        data = dict(
            old_name=body['original_values']['name'],
            new_name=body['values']['name'])
        requests.post('https://some.api/company_renamed', json=data)

    message.ack()


def register_event_handlers(worker, config):
    worker.register_event_handler(
        handler_func=company_renamed,
        key='core.limeobject.company.update.v1',
        queue_name='company_renamed')

The register_event_handlers function starts listening to core events that are sent whenever a company is updated, and will call our handler function whenever it receives one.

The comapny_renamed function checks to see if the body of the event received indicates that the name of the company has changed. If so, it extracts the old and new name of the company and post that information to a URL.