Harshad Yeola
Harshad Yeola

Reputation: 1190

How to integrate slack with IronWorker tasks to get its status

I would like to get the notification about the status of the IronWorker task after its finished. I tried to setup and incoming-webhook, but could not find any way to achieve this.

Update I know how to setup incoming webhook in slack. I am finding a way to trigger this webhook by IronWorker after its completed. I just don't want to integrate the request code in my worker code.

Any help would be appreciated.

Upvotes: 1

Views: 112

Answers (2)

pulkitsinghal
pulkitsinghal

Reputation: 4084

  1. IronWorkers allow you to configure a UDP log feed. They tend to send logs to papertrailapp over this UDP feed. If you have ELK stack then try pointing to that. Most log aggregation frameworks have a detect and notify feature built in. So logentries or papertrail or ELK could then look for a log statement from your worker like DONE and notify you in email/slack/text etc.

  2. If your worker has reached the end of its business logic safely then perhaps it is safe to assume that it can also send a REST request to slack on its own saying i'm done! And that such an action wouldn't be an extra burden or cause any additional failures ... try & see ... then share!

    (a) you could queue a notification task in a "notification worker" queue as the last step in your workers ... if you want to reduce the chances of failures or retries caused by the notification code itself.

  3. The current API doesn't show a way to register and receive notifications about worker status from iron.io itself ... it seems only polling based: http://dev.iron.io/worker/reference/api/

Upvotes: 1

Abhinav Rai
Abhinav Rai

Reputation: 144

So you want to set up incoming webhook in slack. And you want to trigger them when the task is complete.

After registering the incoming webhook in slack, you will get the Webhook URL. Its of the form - https://hooks.slack.com/services/SECRET/SECRET

Now we have to make a post request to this url along with the data.

import requests
import json
url = 'https://hooks.slack.com/services/SECRET/'
payload = {'text': 'Random test',"username": "A slack bot","icon_url": "https://slack.com/img/icons/app-57.png","channel": "@abhinav_rai"}
r = requests.post(url, data=json.dumps(payload))
print r.text
print r.status_code

The Following is the python code to make request to the webhook url. This will post your data in the desired channel.

For more information: Visit https://api.slack.com/incoming-webhooks or comment below.

Upvotes: 0

Related Questions