وب هوک (WebHook) چیست؟ — به زبان ساده
وب هوک (Webhook) پیام خودکاری است که در صورت وقوع یک رویداد به وسیله اپلیکیشنها ارسال میشود و در برنامه نویسی وب کاربرد دارد. Webhook حاوی یک بسته اطلاعاتی (Payload) است که به یک آدرس منحصربفرد (URL) ارسال میشود. وب هوک تقریباً همیشه روش بهتری نسبت به سرکشی کردن (Polling) به حساب میآید. Webhook بسیار شبیه به نوتیفیکیشن پیامک عمل میکند. در این مطلب، سعی شده است به طور کامل به این سئوال که وب هوک چیست پاسخ و تمام مسائل مربوط به آن با بیانی ساده و روان توضیح داده شود.
برای درک بهتر اینکه وب هوک چیست بهتر است دانش ابتدایی پیرامون HTTP وجود داشته باشد. بنابراین، در ابتدای مطلب «وب هوک (WebHook) چیست» به شرح مختصری درباره HTTP پرداخته شده است.
HTTP چیست ؟
HTTP سرنامی برای عبارت «Hypertext Transfer Protocol» که ترجمه فارسی آن، «پروتکل انتقال ابرمتن» یا «منشور انتقال ابرمتن» است. یک پروتکل، در واقع استانداردی برای برقرای ارتباط است. درست مثل وقتی که در یک ملاقات اولیه، فردی خودش را به فرد دیگری معرفی میکند. HTTP پروتکلی است که نحوه انتقال داده (انتقال ابر متن | انتقال Hypertext) را در برنامههایی مثل یک مرورگر وب تعیین میکند.
مرورگر وب و سرور (خدمتدهنده | Server) یک سایت، با روش خاصی بر سر منابع مذاکره میکنند. این منابع میتواند شامل تمام کدهای HTML، تصاویر و محتوای دیگری باشد که مرورگر وب به آنها نیازمند است. به لحاظ فنی در مکالمه HTTP، مرورگر به عنوان «کلاینت» (مشتری | Client) شناخته میشود. کلاینت دادهها را از سرور واکشی (Fetch) میکند.
میلیونها وب سرور (Web Server) از میلیاردها وبسایت میزبانی میکنند. تمامی وب سرورها درست مثل مرورگرهای وب به زبان HTTP ارتباط برقرار میکنند.
درخواست HTTP چیست ؟
زمانی که یک مرورگر قصد واکشی داده را از وب سرور داشته باشد، درخواستی برای دریافت آن داده با استفاده از HTTP ارسال میکند. به چنین تقاضایی «درخواست HTTP» یا «HTTP Request» گفته میشود. یک وب سرور میتواند از حجم عظیمی از دادهها میزبانی کند. بنابراین، در درخواست HTTP باید جزئیات کاملی در خصوص داده درخواستی وجود داشته باشد. پروتکل HTTP نحوه درخواست داده از جانب کلاینت را تعیین میکند.
درخواستهای GET و POST دو نوع از درخواستهای HTTP هستند. در اصل، GET برای واکشی و دریافت دادهها از سرور و POST برای درج یا بهروزرسانی دادهها در سرور استفاده میشوند. اکنون زمان آن فرا رسیده است که به سوال «وب هوک چیست» پاسخ داده شود.
وب هوک چیست ؟
وب هوک یکی از روشهایی است که به وسیله آن، وباپلیکیشنها میتوانند با هم در ارتباط باشند. با استفاده از وب هوک میتوان از APIهای شخص ثالث در پروژه توسعه اپلیکیشن استفاده کرد. وب هوک این امکان را فراهم میکند که هر گاه یک رویداد (Event) اتفاق افتاد، دادههای آنی (Real-Time) از یک اپلیکیشن به اپلیکیشن دیگر ارسال شوند. برای درک بهتر اینکه وب هوک چیست ابتدا بهتر است مفهوم رویداد شرح داده شود.
رویداد در وب هوک چیست ؟
رویدادها اعمال برانگیخته (trigger) شده توسط انسانها در یک اپلیکیشن هستند. برای مثال، با کلیک کردن روی گزینه افزودن به سبد خرید، ارسال پیام به شخص دیگر یا سر زدن به یک صفحه وب خاص، همگی رویدادهای برانگیخته شده توسط افراد هستند. دادههایی به این رویدادها مرتبط هستند.
برای مثال، وقتی یک گزینه به سبد خرید اضافه میشود، برچسب زمانی (Timestamp)، نام آن گزینه و قیمت آن احتمالاً بخشی از دادههایی هستند که به دنبال آن رویداد تولید میشوند. در تلگرام، وقتی پیغامی به یک بات ارسال میشود، برچسب زمانی، شناسه کاربری، شناسه پیام مربوطه و محتوای پیام، همگی جزء دادههایی هستند که تولید میشوند. برای درک بهتر اینکه وب هوک چیست، بهتر است با چند مثال آغاز کرد.
تعریف وب هوک با چند مثال
در این بخش از مطلب «وب هوک چیست»، مثالهایی برای درک بهتر اینکه وب هوک چیست ارائه شده است. ابتدا به مثال رستوران پرداخته میشود.
مثال رستوران
برای مثال، فرض میشود صاحب یک رستوران اپلیکیشنی با استفاده از Foursquare API (یک API بر بستر دادههای مکانی) برای پایش زمان ورود مشتریان به رستورانش ساخته باشد. در حالت ایدهآل، صاحب رستوران میخواهد این امکان را داشته باشد که به محض ورود یک مشتری، بتواند با خطاب قرار دادن نام وی و یک نوشیدنی رایگان از او استقبال کند.
کاری که یک وب هوک انجام میدهد به این صورت است که در صورت ورود یک مشتری، صاحب رستوران بلافاصله از طریق Foursquare مطلع خواهد شد و در نتیجه، در زمان وقوع این رویداد، صاحب رستوران میتواند هر عملیات و پردازش مورد نظر را در اپلیکیشن خود اجرا کند. بنابراین، دادهها بر بستر وب (HTTP) از اپلیکیشنی که رویداد در آنجا اتفاق افتاده به اپلیکیشن دریافت کننده ارسال میشوند. اپلیکیشن دریافت کننده، دادهها را میگیرد و بسته به نوع سرویس و کاری که باید انجام شود، پردازش لازم را روی دادهها انجام میدهد. در ادامه، مفهوم وب هوک به صورت بصری نمایش شده است.
این انتقال داده، بر بستر وب و از طریق «URL وب هوک» اتفاق میافتد. URL همان نشانی اینترنتی (Uniform Resource Locator) است. یک URL وب هوک به وسیله اپلیکیشن دریافت کننده (سیستم B) فراهم میشود و مثل یک شماره تلفن عمل میکند. وقتی یک رویداد رخ میدهد، سیستم A از طریق این شماره تلفن با سیستم B تماس میگیرد.
البته، این ساز و کار نسبت به شماره تلفن کمی پیچیدهتر است. چرا که، دادههای مربوط به یک رویداد، در قالب JSON یا XML به آدرس وب هوک (URL وب هوک) ارسال میشوند که به آن «بسته اطلاعاتی» یا همان «Payload» گفته میشود. در ادامه به عنوان مثال، یک URL وب هوک به همراه بسته اطلاعاتی در حال انتقال، ارائه شده است.
مثال لنگرگاه
در این بخش، تصویری از یک لنگرگاه برای روشن شدن نحوه عملکرد وب هوک ارائه شده است. ابتدا، یک جرثقیل محفظه باری را از یک کشتی بلند میکند و آن را روی جایگاه بارگیری قرار میدهد. از آنجا، هر کسی که در حال کنترل لنگرگاه باشد، میتواند تعیین کند که چه کاری با محموله انجام شود. به عنوان مثال، محفظه بار باید برداشته شده و روی کشتی دیگری قرار داده شود.
حالا اگر جرثقیل به عنوان وب هوک در نظر گرفته شود و دو کشتی درواقع، دو اپلیکیشن مختلف و جایگاه بارگیری نیز، URL وباپلیکیشن مورد نظر باشند، وب هوک داده را از اپلیکیشن شماره یک واکشی میکند و آن را به URL وباپلیکیشن میفرستد. از آنجا میتوان انتخاب کرد که آن دادهها به اپلیکیشن شماره دو فرستاده شوند یا هر کار دیگری با آنها انجام داده شود. در واقع، محفظه بار در مالکیت URL وباپلیکیشن است و بنابراین، وباپلیکیشن میتواند آن را وارسی (Inspect) یا ارسال کند.
اکنون، به کمک مثالهایی که ارائه شد، درکی از اینکه وب هوک چیست بدست آمد. بهتر است این سئوال پرسیده شود که چرا از وب هوک استفاده میشود؟ در ادامه، سعی شده به این سئوال پاسخ داده شود.
چرا از وب هوک استفاده می شود ؟
برای درک بهتر دلیل استفاده از وب هوک، باز هم توضیحات لازم در قالب مثالهایی ارائه شده است. در ادامه مطلب «وب هوک چیست»، مثالی در خصوص استفاده از وب هوک برای ارتباط خودکار یک سایت عضویت با سرویس خدمات پرداخت جهت بهروزرسانی وضعیت پرداخت مشتریان ارائه شده است.
مثال استفاده از وب هوک در سایت عضویت
اگر تصور شود یک وب سایت خدمات خاصی را تنها به اعضای ثبتنام شده ارائه میدهد (سایت عضویت | Membership Site)، هر بار که یک مشتری از طریق یک درگاه پرداخت (مثل آپ)، مبلغی را برای استفاده از خدمات سایت پرداخت میکند، صاحب سایت ناچار است اطلاعات پرداخت را به صورت دستی در برنامه مدیریت اعضا (Membership Management Application) وارد و ثبت کند. این کار برای این انجام میشود که مشتری بتواند پس از پرداخت و ثبتنام، وارد سایت شده و از خدمات آن استفاده کند.
دلیل استفاده از وب هوک در سایت عضویت
در صورت افزایش تعداد اعضای سایت، ثبت اطلاعات پرداخت هر مشتری به صورت دستی، به یک فرآیند بسیار ملالآور تبدیل میشود و منطقی به نظر نمیرسد. بنابراین، اگر اپلیکیشن ارائه دهنده خدمات پرداخت و برنامه عضوگیری میتوانستند به صورت خودکار با هم در ارتباط باشند، آن وقت هر کسی که پرداخت را از طریق ارائه دهنده خدمات پرداخت انجام میداد، به صورت خودکار به عنوان یک عضو در سایت عضویت اضافه میشد. استفاده از یک وب هوک، یکی از روشهای انجام چنین کاری است.
اگر فرض شود که ارائه دهنده خدمات پرداخت و نرمافزار مدیریت اعضا، هر دو انضمام (integration) وب هوک را داشته باشند، آنگاه امکان تنظیم انضمام اپلیکیشن ارائه دهنده خدمات برای ارسال خودکار اطلاعات پرداخت مشتری در هر رویداد پرداخت وجود خواهد داشت.
مثال استفاده از وب هوک در نرمافزار بازاریابی ایمیل
وب هوک ابزار فوقالعادهای است که روال کار را بسیار آسان میکند و از حجم کارها میکاهد. این محبوبیت به این معنا است که میتوان بسیاری از وباپلیکیشنهایی را که در حال استفاده هستند به وب هوک تجهیز کرد. برای مثال، اتصال نرمافزار بازاریابی از طریق ایمیل (Email Marketing Software) با سایر برنامههای کاربردی از طریق یک وب هوک میتواند قابلیتهای بسیاری را فراهم کند. این قابلیتها در ادامه فهرست شدهاند.
دلایل استفاده از وب هوک در نرمافزار بازاریابی ایمیل
- میتوان از وب هوک برای اتصال یک درگاه پرداخت به سامانه بازاریابی ایمیل استفاده کرد تا هرگاه پرداختی انجام میشود، کاربر یک ایمیل دریافت کند.
- میتوان از وب هوک برای همگامسازی دادههای کاربر در سایر برنامهها استفاده کرد. برای مثال، اگر یک کاربر نشانی ایمیل خود را تغییر دهد، میتوان اطمینان یافت که این تغییر در سامانه ارتباط مشتریان (CRM) نیز اعمال میشود.
- همچنین، میتوان از وب هوک برای ارسال اطلاعات در مورد رویدادهایی که در پایگاهدادههای خارجی (External Database) یا انبار داده (پایگاهداده تحلیلی | Data Warehouse) اتفاق میافتند، جهت تحلیل بیشتر استفاده کرد. از جمله این پایگاهدادهها میتوان Redshift آمازون یا Big Query گوگل را نام برد.
عالی بود و کمک فراوانی کرد
آیا امکان بر عکسش هم هستن از کانال به ورد پرس وب هوک کرد؟؟؟؟؟؟؟؟
با سلام و احترام؛
با توجه به مسئله و هدفی که دارید، ممکن است در برخی موارد بتوان این کار را انجام داد.
از همراهی شما با مجله فرادرس سپاسگزاریم.
سلام وقت بخیر من نرم افزار حسابداری رو به وکامرس متصل کردم و برای اتصال از وب هوک استفاده کردیم ولی هر 1 روز درمیان ارتباط غیر فعال میشه باید دستی فعال کنیم چطور میشه این مشکل رو برطرف کنیم
با سپاس
بسیار ممنون. واقعا روان و کاربردی بود
با سلام و احترام؛
صمیمانه از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم.
برای شما آرزوی سلامتی و موفقیت داریم.
مطلب خوبی بود ،یعنی عالی بود فقط وقتی سعی می کند همه چیر رو به فارسی برگردونید حتی اگه تو پرانتز مقدار درستش هم درج بشه ،مطلب شهید می شه به نظر بنده نیازی نیست اینقد هم به فارسی رو پاس بداریم
خیلی عالی بود. ممنون
خیلی طولانی بود ولی بازم ممنون از تهیه کننده این مطلب