Cara Mudah di Webhooks: intimidasi berhenti sekarang

Webhook.

Kedengarannya seperti apa yang berlaku semasa anda melintasi labah-labah dan lanun. Namun dalam dunia internet, webhook adalah sesuatu yang sama sekali berbeza. Webhooks membantu menghubungkan perkhidmatan bersama.

Biar saya jelaskan.

Katakanlah kita mempunyai dua perkhidmatan hipotesis. Salah satunya adalah perkhidmatan yang menghasilkan data, dan yang lain mengumpulkan dan mengatur data tersebut.

Pembangun perkhidmatan pertama berfikir, "Man, platform kami hanya berguna Mari beri pengguna kemampuan untuk meneruskan data masa nyata ke perkhidmatan lain. "

Pemaju pemikiran perkhidmatan kedua. "Gee willikers, akan lebih baik jika pengguna kita dapat mengimport data dengan lebih mudah." Oleh itu, mereka menambahkan webhook untuk menerima data dalam masa nyata dari perkhidmatan seperti perkhidmatan pertama.

Sekarang sebagai pengguna, anda kebetulan menggunakan kedua-dua perkhidmatan tersebut. Anda kini mempunyai kuasa di tangan anda untuk menghubungkannya bersama.

Kaedah terbaik untuk menerangkannya adalah dengan contoh dunia nyata.

Contoh Dunia Sebenar

Pada projek baru-baru ini, saya menyambungkan sensor IoT ke Helaian Dokumen Google. Saya mengambil masa lebih kurang 10 minit sahaja. Saya akan menunjukkan yang sama sekarang.

Mari mulakan terlebih dahulu dengan menyediakan Google Sheet.

  • Buat helaian baru
  • Sebaik sahaja anda berada di sana, pergi ke Alat dan klik Editor skrip
  • Ia akan membuka tetingkap baru yang kelihatan seperti ini:
  • Salin dan tampal kod ini. Saya akan menerangkannya setelah kita melakukannya.
//this is a function that fires when the webapp receives a POST requestfunction doPost(e) { //Return if null if( e == undefined ) { console.log("no data"); return HtmlService.createHtmlOutput("need data"); } //Parse the JSON data var event = JSON.parse(e.postData.contents); var data = event.data;
//Get the last row without data var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = Math.max(sheet.getLastRow(),1); sheet.insertRowAfter(lastRow); //Get current timestamp var timestamp = new Date(); //Insert the data into the sheet sheet.getRange(lastRow + 1, 1).setValue(event.published_at); sheet.getRange(lastRow + 1, 2).setValue(data.temperature); sheet.getRange(lastRow + 1, 3).setValue(data.humidity); sheet.getRange(lastRow + 1, 4).setValue(data.pm10); sheet.getRange(lastRow + 1, 5).setValue(data.pm25); sheet.getRange(lastRow + 1, 6).setValue(data.tvoc); sheet.getRange(lastRow + 1, 7).setValue(data.c02); SpreadsheetApp.flush(); return HtmlService.createHtmlOutput("post request received");}

Sekarang, mari kita fahami semuanya.

function doPost(e) {

Adakah fungsi yang dipanggil pada acara POST. Pertimbangkan skrip ini sebagai pelayan web. Kami mengirimkannya data di alamat tertentu (yang akan kita miliki dalam satu saat yang sangat panas)

e adalah objek panggilan HTTP. Ia akan mempunyai data yang kami kirimkan. Oleh itu, adalah idea yang baik untuk memeriksa sama ada NULL. Sekiranya ada, maka tidak perlu menjalankan skrip.

Sekiranya kita mempunyai data yang sah, mari ubah dari rentetan menjadi JSON yang dapat digunakan. Anda boleh menggunakan fungsi kegemaran semua orang JSON.parseuntuk melakukannya.

var event = JSON.parse(e.postData.contents);

Ingat, struktur data akan menentukan bagaimana anda memprosesnya! Anda mungkin perlu menjalankan JSON.parsebeberapa kali bergantung pada seberapa bersarang data anda dan formatnya.

Setelah anda mempunyai data, inilah masanya untuk meletakkannya di tempat yang betul!

//Get the last row without datavar sheet = SpreadsheetApp.getActiveSheet();var lastRow = Math.max(sheet.getLastRow(),1);sheet.insertRowAfter(lastRow);

Ketiga-tiga panggilan ini akan membawa anda ke baris pertama yang tersedia bermula pada baris 1 (meninggalkan baris 0 untuk label lajur).

Kemudian, akhirnya, kami meletakkan data yang berturut-turut:

sheet.getRange(lastRow + 1, 1).setValue(event.published_at);

Di mana parameter pertama sheet.getRangeadalah baris dan yang kedua adalah lajur. Anda boleh menggunakan setValuefungsi untuk menetapkan apa yang anda mahukan dalam sel tertentu.

By the way, inspirasi untuk kod ini berasal dari catatan ini.

Sejuk. Oleh itu, kita mempunyai skrip. Bagaimana kita memanggilnya?

  • Tekan butang Terbitkan itu
  • Klik Deploy as a web app
  • Ubah tetapan agar sesuai dengan tangkapan skrin di bawah. Kemudian klikDeploy
  • Anda mungkin mendapat skrin yang meminta anda memperbarui kebenaran anda. KlikReview Permissions
  • Klik Advanceddan kemudian klikGo to me> in the bottom left.

Original text


  • Finally, click Allow
  • In the last screen, copy your Webhook URL!

Test it

Now we can test if everything works by using Postman. If you haven’t played with Postman yet, it’s a great graphical user interface for curl.

  • Install Postman. You may need an account to go further.
  • Once inside, create a new request. Name it so you know it belongs to this Google Docs webhook
  • Click body and enter the following test code:
{ "event": "gdxg", "data": { "temperature": 21 }, "coreid": "zczxvz", "published_at": "zcvzxcvx"}
  • Finally, click that blue Send button.
  • Go back to your excel sheet and see the magic!

Now we’re cooking with gas!

Conclusion

I hope you’ve gotten the above example to work. Luckily for you, there’s a lot less to worry about once you get this part up and running!

To recap, we’ve talked about webhooks and why they’re used. You should be feeling confident at this point to go and set up some of your own. If you’re still feeling intimidated, I recommend using services like Zapier or IFTTT. (They’re shiny front ends for APIS and Webhooks already available.)

Last but not least check out the full post where I integrate hardware and web in one awesome project.

Happy webhooking!