csbot.plugins.webhook module¶
Uses webserver to create a generic URL for incoming webhooks so that other plugins can handle
webhook events.
To act as a webhook handler, a plugin should hook the webhook.{service} event, for example:
class MyPlugin(Plugin):
@Plugin.hook('webhook.myplugin')
async def webhook(self, e):
self.log.info(f'Handling {e["request"]}')
The request key of the event contains the aiohttp.web.Request object.
Note
The webhook plugin only responds to POST requests.
Configuration¶
The following configuration options are supported in the [webhook] config section:
| Setting | Description |
|---|---|
prefix |
URL prefix for the web server sub-application. Default: /webhook. |
url_secret |
Extra URL component to make valid endpoints hard to guess. |
URL Format & Request Handling¶
The URL path for a webhook is {prefix}/{service}/{url_secret}. The host and port elements, plus any additional
prefix, are determined by the webserver plugin and/or any reverse-proxy that is in front of it.
For example, the main deployment of csbot received webhooks at https://{host}/csbot/webhook/{service}/{url_secret}
and sits behind nginx with the following configuration:
location /csbot/ {
proxy_pass http://localhost:8180/;
}