Gene explained it well. Webhooks are a service’s way of proactively sending information, but instead of sending it to a person (like via a phone call), it is sending it to another computer. That other computer needs to have an “endpoint” (“phone number”) to receive the “call”, and needs to know what to do with it.
Interesting that Gene used the analogy of a phone call … that’s pretty close to what I’m actually doing. I’ve developed a “hobby” Azure Web App that’s my personal webhook handler. It receives webhooks for everything from my network monitor, to my Visual Studio build server, to my IP phone. I’ve built integrations with Twilio, so a common use case is to send me a text or call me when some event happens, like calling me when there’s a “network down” event or sending me a text whenever a code build finishes.
My plan here is to build webhooks for Rachio to call so I can do logging or get calls/texts whenever events happen like a rain delay or when a rain sensor is triggered, etc.
To Gene’s point, In order for my app to “do something”, it has to be be programmed to understand the data that Rachio is sending. That’s what motivated my question … I know which events Rachio can “call me” about, but not what it will tell me when it calls. Without knowing that, I can’t program my “receiver” to act on it.
I think it’s awesome that Rachio is empowering integrations by providing webhooks. It’s a very powerful tool to drive adoption, because it will be able to participate with a variety of other products and services, and will be a player in the growing “Internet of Things” ecosystem.
I’d humbly suggest, however, that you document the structure of the data being passed. It’s not really practical to have me just start capturing and logging the data for a while, hoping that all the events i’m interested in will fire, and them comb the logged data to figure out the data. It’s unpredictalbe when all the events would actually fire; it’s a tedious and error-prone process; and there will surely be developers building integrations (say to home automation systems) that (sadly) don’t actually have a Rachio controller. Just a set of sample data would be a big help.
Please don’t take that suggestion as criticism. I’m thrilled that you’re providing the integrations. Keep up the good work!