2blane / octoprint-webhooks Goto Github PK
View Code? Open in Web Editor NEWMake OctoPrint events call your custom webhooks!
License: GNU Affero General Public License v3.0
Make OctoPrint events call your custom webhooks!
License: GNU Affero General Public License v3.0
So there is the option to run webhook when a print is done. But what about calling a webhook after cooldown? Basically, i want to turn of my printer by itself, but i want to wait until the cooldown took place.
Hi,
Is there ability to post data as a regular form (like curl -F ...
)? I am trying to post to a server that does not accept json. The other option (url-encoded-form) does not seem to do the trick either.
Is there any way to have additional parameters as human readable equivalents of existing parameters? I wanted to setup a notification to be sent to Alexa using Notify Me skill whenever the print has finished. Something like:
"Your print has finished at around 8:40 pm. It consumed 17.23 meters of filament and took 13:16:54 to complete."
"Your print has been paused at 8:40pm pending user intervention"
The only alternative I can think of is to setup a separate local server in the raspberry pi that serves as an intermediary server that transforms the data before sending it off. However, it would be great if the plugin does this by default.
When making changes to the settings they are not saved using save button in the general settings window. They are only saved if e.g. a web hook is deleted. Also when a template is loaded the settings are saved. So when just editing something the test still sends the old settings.
Or is there any button for saving modifications to web hook which I cannot find?
Hi,
I'm using "http://192.168.0.140:1881/octoprint" as my url, but keep getting a no schema specified error. What am I doing wrong? I can specify that url in postman and it works.
Thanks,
Bill
I've tested webhooks and everything works with the test calls. I get empty objects for progress, state, etc, but that's fine, I can still see the structure of those objects. Something like this:
topic: Print Started
message: Your print has started
progress: {"completion": null, "filepos": null, "printTime": null, "printTimeLeft": null, "printTimeOrigin": null}
state: {"text": "Offline", "flags": {"operational": false, "printing": false, "cancelling": false, "pausing": false, "resuming": false, "finishing": false, "closedOrError": true, "error": false, "paused": false, "ready": false, "sdReady": false}, "error": ""}
job: {"file": {"name": null, "path": null, "size": null, "origin": null, "date": null}, "estimatedPrintTime": null, "lastPrintTime": null, "filament": {"length": null, "volume": null}, "user": null}
currentTime: 1635649547
all keys: deviceIdentifier, apiSecret, topic, message, extra, state, job, progress, offsets, meta, currentTime
however, when I run the server connected to the printer, I get the calls but only topic and message are populated. state, progress and job are completely null, not even empty objects, just not sent at all. I get this:
topic: Print Progress
message: 18
progress:
state:
job:
currentTime: 1635721418
all keys: deviceIdentifier, apiSecret, topic, message, extra, state, job, progress, currentZ, offsets, meta, currentTime
In my webhooks config, my data is the default setting, so it looks like this:
{
"deviceIdentifier":"@deviceIdentifier",
"apiSecret":"@apiSecret",
"topic":"@topic",
"message":"@message",
"extra":"@extra",
"state": "@state",
"job": "@job",
"progress": "@progress",
"currentZ": "@currentZ",
"offsets": "@offsets",
"meta": "@meta",
"currentTime": "@currentTime",
"snapshot": "@snapshot"
}
And finally, a big dump of all the stuff sent with the request
topic: Print Progress
message: 38
Request Params
[deviceIdentifier] =
[apiSecret] =
[topic] = Print Progress
[message] = 38
[extra] = {}
[state] =
[job] =
[progress] =
[currentZ] =
[offsets] =
[meta] =
[currentTime] = 1635722107
[ALL_HTTP] = HTTP_CONNECTION:keep-alive
HTTP_CONTENT_LENGTH:71822
HTTP_CONTENT_TYPE:multipart/form-data; boundary=75b8518b1fa90aab01efd2c24878d10c
HTTP_ACCEPT:*/*
HTTP_ACCEPT_ENCODING:gzip, deflate
HTTP_HOST:DONT_WORRY_ABOUT_MY_HOSTNAME.com
HTTP_USER_AGENT:python-requests/2.26.0
[ALL_RAW] = Connection: keep-alive
Content-Length: 71822
Content-Type: multipart/form-data; boundary=75b8518b1fa90aab01efd2c24878d10c
Accept: */*
Accept-Encoding: gzip, deflate
Host: DONT_WORRY_ABOUT_MY_HOSTNAME.com
User-Agent: python-requests/2.26.0
[APPL_MD_PATH] = /LM/W3SVC/5/ROOT
[APPL_PHYSICAL_PATH] = C:\inetpub\wwwroot\DONT_WORRY_ABOUT_MY_HOSTNAME\
[AUTH_TYPE] =
[AUTH_USER] =
[AUTH_PASSWORD] =
[LOGON_USER] =
[REMOTE_USER] =
[CERT_COOKIE] =
[CERT_FLAGS] =
[CERT_ISSUER] =
[CERT_KEYSIZE] = 256
[CERT_SECRETKEYSIZE] = 3072
[CERT_SERIALNUMBER] =
[CERT_SERVER_ISSUER] = C=US, O=Let's Encrypt, CN=R3
[CERT_SERVER_SUBJECT] = CN=DONT_WORRY_ABOUT_MY_HOSTNAME
[CERT_SUBJECT] =
[CONTENT_LENGTH] = 71822
[CONTENT_TYPE] = multipart/form-data; boundary=75b8518b1fa90aab01efd2c24878d10c
[GATEWAY_INTERFACE] = CGI/1.1
[HTTPS] = on
[HTTPS_KEYSIZE] = 256
[HTTPS_SECRETKEYSIZE] = 3072
[HTTPS_SERVER_ISSUER] = C=US, O=Let's Encrypt, CN=R3
[HTTPS_SERVER_SUBJECT] = CN=DONT_WORRY_ABOUT_MY_HOSTNAME
[INSTANCE_ID] = 5
[INSTANCE_META_PATH] = /LM/W3SVC/5
[LOCAL_ADDR] = 10.1.0.4
[PATH_INFO] = /home/PrintMessage
[PATH_TRANSLATED] = C:\inetpub\wwwroot\DONT_WORRY_ABOUT_MY_HOSTNAME\home\PrintMessage
[QUERY_STRING] =
[REMOTE_ADDR] = DONT_WORRY_ABOUT_MY_HOSTNAME
[REMOTE_HOST] = DONT_WORRY_ABOUT_MY_HOSTNAME
[REMOTE_PORT] = 39054
[REQUEST_METHOD] = POST
[SCRIPT_NAME] = /home/PrintMessage
[SERVER_NAME] = DONT_WORRY_ABOUT_MY_HOSTNAME.com
[SERVER_PORT] = 443
[SERVER_PORT_SECURE] = 1
[SERVER_PROTOCOL] = HTTP/1.1
[SERVER_SOFTWARE] = Microsoft-IIS/10.0
[URL] = /home/PrintMessage
[HTTP_CONNECTION] = keep-alive
[HTTP_CONTENT_LENGTH] = 71822
[HTTP_CONTENT_TYPE] = multipart/form-data; boundary=75b8518b1fa90aab01efd2c24878d10c
[HTTP_ACCEPT] = */*
[HTTP_ACCEPT_ENCODING] = gzip, deflate
[HTTP_HOST] = DONT_WORRY_ABOUT_MY_HOSTNAME.com
[HTTP_USER_AGENT] = python-requests/2.26.0
Request FORM
[deviceIdentifier] =
[apiSecret] =
[topic] = Print Progress
[message] = 38
[extra] = {}
[state] =
[job] =
[progress] =
[currentZ] =
[offsets] =
[meta] =
[currentTime] = 1635722107
Request Headers
[Connection] = keep-alive
[Content-Length] = 71822
[Content-Type] = multipart/form-data; boundary=75b8518b1fa90aab01efd2c24878d10c
[Accept] = */*
[Accept-Encoding] = gzip, deflate
[Host] = DONT_WORRY_ABOUT_MY_HOSTNAME.com
[User-Agent] = python-requests/2.26.0
Hi,
noticed that saving the Octoprint settings with this plugin repeatedly broke / deleted other plugin settings.
Most obviously the selected theme in UI customizer and who knows what else.
For that reason I had to uninstall this plugin as in the current version I'm not taking a shot in destroying my Octoprint instance :-(
Sorry but the current version should be blacklisted in my opinion :-(
best regards
When trying to install on OctoPi Version 1.3.6 running on raspi0 I get the following...
Installing plugin "OctoPrint-Webhooks" from https://github.com/2blane/OctoPrint-Webhooks/archive/master.zip.../home/pi/oprint/bin/python2 -m pip install https://github.com/2blane/OctoPrint-Webhooks/archive/master.zipCollecting https://github.com/2blane/OctoPrint-Webhooks/archive/master.zipDownloading https://github.com/2blane/OctoPrint-Webhooks/archive/master.zipRequirement already satisfied: OctoPrint in /home/pi/oprint/lib/python2.7/site-packages (from OctoPrint-Webhooks==3.0.3)Requirement already satisfied: requests in /home/pi/oprint/lib/python2.7/site-packages (from OctoPrint-Webhooks==3.0.3)Collecting pillow (from OctoPrint-Webhooks==3.0.3)Downloading https://files.pythonhosted.org/packages/b3/d0/a20d8440b71adfbf133452d4f6e0fe80de2df7c2578c9b498fb812083383/Pillow-6.2.2.tar.gz (37.8MB)Exception:Traceback (most recent call last):File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in mainstatus = self.run(options, args)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/commands/install.py", line 335, in runwb.build(autobuilding=True)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/wheel.py", line 749, in buildself.requirement_set.prepare_files(self.finder)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/req/req_set.py", line 380, in prepare_filesignore_dependencies=self.ignore_dependencies))File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/req/req_set.py", line 620, in _prepare_filesession=self.session, hashes=hashes)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 821, in unpack_urlhashes=hashesFile "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 659, in unpack_http_urlhashes)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 882, in _download_http_url_download_url(resp, link, content_file, hashes)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 603, in _download_urlhashes.check_against_chunks(downloaded_chunks)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/utils/hashes.py", line 46, in check_against_chunksfor chunk in chunks:File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 571, in written_chunksfor chunk in chunks:File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/utils/ui.py", line 139, in iterfor x in it:File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/download.py", line 560, in resp_readdecode_content=False):File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/urllib3/response.py", line 436, in streamdata = self.read(amt=amt, decode_content=decode_content)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/urllib3/response.py", line 384, in readdata = self._fp.read(amt)File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 63, in readself._close()File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 50, in _closeself.__callback(self.__buf.getvalue())File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py", line 275, in cache_responseself.serializer.dumps(request, response, body=body),File "/home/pi/oprint/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 86, in dumpsdata, separators=(",", ":"), sort_keys=True,File "/usr/lib/python2.7/json/init.py", line 251, in dumpssort_keys=sort_keys, **kw).encode(obj)File "/usr/lib/python2.7/json/encoder.py", line 210, in encodereturn ''.join(chunks)MemoryError
Hello, I am a beginner and I am trying to connect this plugin to my mongodb database, to insert data coming from plugins
any one can help me please
thanks
I haven't looked all that far into this issue, but when my printers pauses for a color change it triggers the webhook every two seconds till I get to the printer.
Since the hook in question is on my own server, I was able to check the logs, on two different prints with a color change part way, on one there were 285 calls, on the other only 97 (I was on the same floor)
My server just validates the call from a machine on the local network then sends a text message using an online service, since I've seen this bad behavior in other apps, my server has a limit (same message repeated within 15 minutes won't get sent) but if I'd set it up to trigger directly on the cloud service I'd have had almost 400 messages sent.
Is this a function of the return value from the webpage, that I can control/change if necessary, something else in Octoprint, or a bug in the plugin?.
There should probably some kind of a throttle.
I'm running a camera on a Twitch channel, which requires that channel updates be sent via a PATCH request. It doesn't appear to be supported in this application.
I add a new webhook. I change Advanced โ HEADERS to:
{
"Content-Type": "application/json",
"test": "where is this header?"
}
But when I click Send Test Webhook, the call made to my server does not include the "test" header.
I have tried:
Hi, using node-red within home-assistant requiring basic auth.
as basic auth is not an option in the settings, I simply added the according custom header, but still get unauthorized from the API.
Tested the same header with Postman successfully and also checked that the header is right by generating it "regularly" in postman (using basic auth setting and comparing the generated header)
best regards
Christian
The application is telling me that the following is invalid JSON for sending a "Print Done" webhook (sending to a Google Apps Script to add a row to a Google Sheet):
{
"sheetid": "1L3Kl8TPWNtI1_zXaj8U77OYhoZOcajAozUI-LNDijC4",
"row": [
"=localDateTime(@currentTime)",
"@job.file.name",
"@jobfile.size",
"=TIME(0,0,@job.estimatedPrintTime)",
"=TIME(0,0,@job.lastPrintTime)",
"@job.filament.tool0.volume",
"@job.filament.tool0.length",
"@meta.analysis.dimensions.width",
"@meta.analysis.dimensions.depth",
"@meta.analysis.dimensions.height"
]
}
Thank you for great plugin, it seems to be very handy.
You write that it can be used with IFTT, but when i tried it (to show notification in my browser), it seems that IFTT is only accepting json parameters named "value1", "value2", and "value3".
It would be great to add possibility to construct own json payload using some "templating" mechanism or so. For example add something like
{
deviceIdentifier: "@deviceid",
apiSecret: "@apisecret",
topic: "@eventname",
message: "@eventdescription",
extra: @eventjson
}
into user configuration and simple replace...
I'm trying to setup the plugin but when I test I get a message saying "Invalid API Response: Cannot POST /use/xxxxxxxxxxx".
The url I've set is https://maker.ifttt.com/use/xxxxxxxxx
I've copied my octoprint instance API secret into the API secret setting and I've set my device identifier.
HTTP Method is POST and for content type I've tried both JSON and urlencoded.
I have the applet setup on IFTTT. It should send me an email as a result of the test event. What am I missing?
I have attempted this over 15 times with two different printers, while also reinstalling the plugin every now and then.
I've set the designated URL to something like http://localhost:5000/api/my-data-handler
and it ends up crashing my printer's server, sending it in an "infinite loading" state where the only way of fixing, is by resetting the Pi manually. I have used both OctoPrint v1.6.1 and v1.3.12 with both ending up as previously mentioned.
Also when I skipped the testing and had it try throwing it at my URL it error out saying something like "server is not in local bla bla, couldn't find server" even though I use the same URL that I already test with Postman.
By the way, this is honestly a really cool plugin that I hope ends up working! I was thinking about making my own plugin before I stumbled on this, maybe there are others that send calls from your printer to a designated URL?
Hello,
The openhab API must have the content type "text / plain", but the extended header is overridden by the content type of the webhook parameters.
Can the text field "Extended headers" have a higher priority than the combo box?
Thanks for your plugin :)
Multie
When the status of the print changes from Paused to Resume, I don't see a webhook coming out of the plugin. Is there any way that could be added or if not, could the "start" message be resent?
Hello,
I tried to use your plugin to send a custom url to an esp8266 module, which contains a program that does not allow the implementation of webhook / api.
(this program is not mine: => Wemos led NotifHour
It is a led display with a wemos
)
Here is the capture of each of my webhooks with a specific function and a precise message for each of them.
When I test each webhook, it works well. Unfortunately, in operation, I only have the webhook which was saved in active in the parameters which is functional.
Do you have another way of proceeding?
thank you in advance, I dream of being able to use it, because it is the only one that I found apart from ifttt that I do not want to use ;)
Hi Blane,
No matter what I try, my webhooks are receiving form-data instead of json.
The debugging indicates it's following the JSON path, but https://webhook.site/ (for example) always reports multipart/form-data
I look forward to using this once this is fixed
May be placed in bottom of settings page under title "Test Webhook events".
Under there a radio selector of the different event and a button with the text "Fire test event"-ich.
This way it's possible to test you API endpoint for receiving events from OctoPrint and not starting up the printer each time you want to test your API :-)
Maybe not the entire point of this plugin, but maybe make it possible to send more info through the API like time (remaining/progress/total), name of file being print, etc?
Hello and thanks for this project!
I would like to use this plugin to trigger HomeAssistant to shut off the outlet that both octoprint and the printer are connected to but I like to let my hot-end cool down until the extruder fan shuts off at 50 degrees. A target temperature event or fan status change event could allow me to achieve this functionality.
Thinking about it more, I might be asking for an event where multiple conditions are satisfied.
hello,
I'm trying to extract data from Json.
But when I return the data receive from POST on my server I have thing like that:
Response: --248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="deviceIdentifier"printer1--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="extra"{"origin": "local", "popup": true, "name": "example.gcode", "hook_index": 0, "time": 50.237335886, "owner": "example_user", "path": "example.gcode", "size": 242038}--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="job"{"file": {"date": null, "origin": null, "size": null, "name": null, "path": null}, "estimatedPrintTime": null, "user": null, "filament": {"volume": null, "length": null}, "lastPrintTime": null}--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="offsets"{}--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="apiSecret"pfkpfjrg--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="topic"Print Started--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="state"{"text": "Operational", "flags": {"cancelling": false, "paused": false, "operational": true, "pausing": false, "printing": false, "resuming": false, "sdReady": true, "error": false, "ready": true, "finishing": false, "closedOrError": false}}--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="meta"--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="currentTime"1593513960--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="progress"{"completion": null, "filepos": null, "printTime": null, "printTimeLeft": null, "printTimeOrigin": null}--248f0bf5eadc4780acfc88d7a82b61e0Content-Disposition: form-data; name="message"Your print has started--248f0bf5eadc4780acfc88d7a82b61e0--
I try with out the pluging to validate the server answer and I get json back, so I don't where is the trouble in my plugin configuration
Thanks for writing this plugin.
I wrote a web hook server to trigger a web hook to turn off 3D printer with a delay when the print is done.
But your simulation test fail when I only select one event. But if I select all events, the test passed.
Here is my test scenario:
URL: http://192.168.2.30:12000/done?delay=30
Events: only Done is selected
Testing: simulate Print Done
Headers: clear
Data: clear
Logs
2021-03-21 02:58:58,471 > Downloading/unpacking https://github.com/2blane/OctoPrint-Webhooks/archive/master.zip
2021-03-21 02:58:59,975 > Running setup.py (path:/tmp/pip-VCJ9cH-build/setup.py) egg_info for package from https://github.com/2blane/OctoPrint-Webhooks/archive/master.zip
2021-03-21 02:59:01,509 > Found packages: ['octoprint_webhooks']
2021-03-21 02:59:01,510 >
2021-03-21 02:59:01,511 > warning: no files found matching '*' under directory 'octoprint_webhooks/translations'
2021-03-21 02:59:02,515 > Requirement already satisfied (use --upgrade to upgrade): OctoPrint in /home/pi/Julia2018Octoprint/venv/lib/python2.7/site-packages (from OctoPrint-Webhooks==3.0.3)
2021-03-21 02:59:02,515 > Requirement already satisfied (use --upgrade to upgrade): requests in /home/pi/Julia2018Octoprint/venv/lib/python2.7/site-packages/requests-2.18.4-py2.7.egg (from OctoPrint-Webhooks==3.0.3)
2021-03-21 02:59:02,516 > Downloading/unpacking pillow (from OctoPrint-Webhooks==3.0.3)
2021-03-21 02:59:20,532 > Running setup.py (path:/tmp/pip-build-Rvforl/pillow/setup.py) egg_info for package pillow
2021-03-21 02:59:21,765 > Traceback (most recent call last):
2021-03-21 02:59:21,766 > File "<string>", line 17, in <module>
2021-03-21 02:59:21,766 > File "/tmp/pip-build-Rvforl/pillow/setup.py", line 45
2021-03-21 02:59:21,767 > f"Pillow {PILLOW_VERSION} does not support Python "
2021-03-21 02:59:21,768 > ^
2021-03-21 02:59:21,768 > SyntaxError: invalid syntax
2021-03-21 02:59:21,768 > Complete output from command python setup.py egg_info:
2021-03-21 02:59:21,769 > Traceback (most recent call last):
2021-03-21 02:59:21,770 >
2021-03-21 02:59:21,771 > File "<string>", line 17, in <module>
2021-03-21 02:59:21,771 >
2021-03-21 02:59:21,771 > File "/tmp/pip-build-Rvforl/pillow/setup.py", line 45
2021-03-21 02:59:21,772 >
2021-03-21 02:59:21,772 > f"Pillow {PILLOW_VERSION} does not support Python "
I think latest pillow version has got updated and that breaks the latest package of webhook. It is possible issue is only with python2.7
but I dont have root
access on the PI that came with my 3D printer to be able to debug more.
Any ideas?
CC @charutak
I have installed the plugin and want to send the data to my Node Red instance.
In the plugin I have configured the default data
in my node red i receive this data as payload
it looks like the parameters are not substituted for the transmission.
What other information should I provide?
All plugins and Octoprint are up to date. The following plugins are installed.
Hello,
I have this url firing a smart plug:
https://www.virtualsmarthome.xyz/url_routine_trigger/activate.php?trigger=739a253c-dbe7-4d11-b71f-ff3e91b4b6c8&token=8c055cbf-fbb1-40fe-8940-76f65e1e157d&response=json
(this is a test and it's not connected to real machines !!)
I tried to configure this URL in webhooks but with no results.
Really I don't know how to configure parameters and I always receive 403 error ...
Can you help me ??
Unless I'm missing something, it looks like you can only subscribe to a specific set of events (started, done, failed, etc). You should be able to subscribe to custom events like you can with the OctoPrint-IFTTT plugin. For instance, the OctoPrint-ngrok plugin fires the plugin_ngrok_connected
event when the tunnel is created and the plugin_ngrok_closed
event when the tunnel is closed. It'd be great to be able to subscribe to these events and any other events fired by other plugins
The plugin is not loading anymore:
ImportError: cannot import name '_imaging' from 'PIL' (/octoprint/plugins/lib/python3.8/site-packages/PIL/__init__.py)
I use the octoprint/octoprint docker image with ID 32d643752f07 (latest as per today).
According to Octoprint this error is related to the plugin itself: see issue I raised for Octoprint.
I have a webhook I use with this plugin which I need to toggle on and off depending on the job. Is there a way I can add a toggle button to the main screen or a tab on the main screen rather than having to goto settings - plugins - webhooks just to check/uncheck the enable box?
Since this repo appears to be abandoned, I have completed the process of adopting this plugin! The new repo is at https://github.com/derekantrican/OctoPrint-Webhooks . I will do my best to address the current concerns & issues, but keep in mind that I a have a full-time job & life (and other personal projects besides this) so I can't give this plugin full focus. I will do my best to work on it in my free time.
Has this plugin been abandoned? Looks like the last update was nearly 2 years ago at this point and that was just merging a PR for some templates. The last significant update seems to have been 2.5 years ago in May, 2020.
As far as I can tell, the last activity at all from @2blane is Feb 2021 in #25. But there seem to be some significant usage issues reported (eg #19 where the settings aren't being saved and was confirmed by @2blane as an issue - users are still seeing it as recently as a month ago).
If there is no interest in maintaining it, I'm interested in taking it over as I use this plugin a lot (and see a lot of potential for it). I'm even a little familiar with the codebase as I've been working on my own PR: https://github.com/derekantrican/OctoPrint-Webhooks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.