Issue in Pybossa webhooks, how to execute it

205 views Asked by At

I am working with the Pybossa webhooks, and found this plugin to analyse the Pybossa results in real-time. I forked it but not getting how it is to be executed.

Currently, I am executing it as follows:

python app.py test_project

where test_project is my project_short_name. But, it is reverting me to index.html page of this repository.

2

There are 2 answers

0
Link On BEST ANSWER

I found it ! Look into pybossa.model.event_listeners you will find push_webhookfunction, it push webhook into queue. And it's called by on_taskrun_submit, on_auditrun_submit function in the same file.

If you really want to execute webhook manually, look into pybossa.jobs, you will find webhook function, it's where the webhook execute. You can call it manually like this:

def trigger_webhook(short_name, task_id=0, result_id=0):
    from pybossa.jobs import webhook
    from datetime import datetime
    from pybossa.core import project_repo

    with app.app_context():
        project = project_repo.get_by_shortname(short_name)

        payload = dict(event="task_completed",
                       project_short_name=project.short_name,
                       project_id=project.id,
                       task_id=task_id,
                       result_id=result_id,
                       fired_at=datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"))
        webhook(project.webhook, payload)

I put this function in cli.py so I can call it handily.

8
Joseph Coco On

I haven't set it up myself, but it would seem you run both the primary Pybossa site in addition to a custom microservice you can fork from the webhooks project.

  1. Install and run the primary Pybossa server and create an admin account.
  2. Install and run webhooks fork
  3. Grab your API key from an admin's account page on your primary PyBossa server.
  4. In webhooks, Clone the settings.py.tmpl and update the information such as API key.
  5. Run the microservice.
  6. In Pybossa, Configure your project to use the webhook URL in your settings.
  7. In webhooks, load the index.html page.

You would change the charts on the index page to display the results you're interested in. But like I said, this is just what I understand needs to be done. I haven't done it myself as I'm just going to modify the presenter JS to use the API to perform some operations I desire dependent on value of submitted answer. Best of luck.