Node.js سے WhatsApp میسجز بھیجیں اور وصول کریں
وصولی ایک روٹ ہے جو Meta کی تصدیقی GET کا جواب دیتا ہے اور POSTs قبول کرتا ہے۔ بھیجنے کے لیے Cloud API کو fetch کال کریں، جس میں فون نمبر کی phone number id اور ٹوکن شامل ہوں۔ ہماری طرف سے کوئی SDK یا انسٹالیشن درکار نہیں۔
Meta کی تصدیق کے لیے ایک GET اور ایونٹس کے لیے ایک POST۔
کسٹمر کے میسج کے بعد وہ ونڈو جس میں مفت متن بھیجا جا سکتا ہے۔
اس ونڈو کے باہر مفت متن بھیجنے پر واپس آنے والا ایرر۔
Node میں میسجز کیسے وصول کریں؟
Express، Fastify، Next route handler یا سادہ سرور میں دو طریقوں والا ایک روٹ بنائیں۔
GET، Meta کی تصدیق کا جواب دیتا ہے: query سے hub.mode، hub.verify_token اور hub.challenge پڑھیں، ٹوکن کو اپنے ٹوکن سے ملائیں، اور challenge کو plain text کے طور پر واپس کریں۔ اسے JSON کے طور پر واپس کرنا عام غلطی ہے۔ اس سے ایسا اینڈ پوائنٹ بنتا ہے جو درست نظر آتا ہے، مگر کبھی کچھ وصول نہیں کرتا۔
POST ایونٹس وصول کرتا ہے۔ فوراً 200 کا جواب دیں اور اس کے بعد پراسیس کریں۔ Meta سست درخواستیں دوبارہ بھیجتا ہے، اور جواب دینے سے پہلے کام کرنے والا ہینڈلر ایک ہی میسج ایک سے زیادہ بار دیکھے گا۔ خاص طور پر serverless میں پہلے جواب دینا اور کام کو queue میں ڈالنا cold start کو duplicate بنانے سے روکتا ہے۔
میسج کیسے بھیجیں؟
فون نمبر کی phone number id کے لیے Cloud API messages اینڈ پوائنٹ پر fetch کریں، اور ٹوکن کو bearer header میں بھیجیں۔
اس میں ہماری پروڈکٹ سے متعلق کچھ خاص نہیں، اس لیے درخواست بالکل Meta کی اپنی documentation کے مطابق رہتی ہے۔ سیکھنے یا کسی wrapper کا پابند ہونے کی ضرورت نہیں۔ دونوں قدریں ڈیش بورڈ میں ہیں، اور اگر کوئی اسسٹنٹ wiring کر رہا ہو تو get_api_credentials انہیں MCP connector کے ذریعے واپس کرتا ہے۔
باڈی وقت کے حساب سے بدلتی ہے۔ کسٹمر کے آخری آنے والے میسج کے 24 گھنٹوں کے اندر text object بھیجیں۔ اس کے بعد منظور شدہ template نام اور زبان کے ساتھ template object بھیجیں۔ صرف متن بھیجنے والا کوڈ ہر ٹیسٹ پاس کرتا ہے، مگر رات بھر بعد آنے والے پہلے میسج پر ناکام ہو جاتا ہے۔
serverless میں کیا مختلف ہے؟
دو چیزیں، اور دونوں کا تعلق اس بات سے ہے کہ کام ختم ہونے سے پہلے فنکشن ختم ہو جاتا ہے۔
200 واپس کرنے کے بعد پراسیس جاری رکھنا ایسے فنکشن میں نہیں چلتا جو جواب دیتے ہی freeze ہو جائے۔ اپنا پلیٹ فارم کام کو جواب کے بعد زندہ رکھنے کے لیے جو سہولت دیتا ہے، وہ استعمال کریں، یا پے لوڈ کو queue میں ڈالیں اور الگ فنکشن سے سنبھلوائیں۔ Meta کو صرف جلدی acknowledgement چاہیے، کام کا مکمل ہونا نہیں۔
Cold starts سست جوابوں کا امکان بھی بڑھاتے ہیں، جس سے مزید retries اور duplicates ہوتے ہیں۔ wamid میسج id پر deduplication اس صورت میں اختیاری نہیں، بلکہ reliability کی بنیادی شرط ہے۔
عام غلطیاں
- challenge کو raw body کے بجائے JSON کے طور پر واپس کرنا۔
- 200 کا جواب دینے سے پہلے کام کرنا۔ serverless میں جواب دیتے ہی فنکشن freeze ہو سکتا ہے۔
- deduplication چھوڑ دینا۔ Meta جان بوجھ کر retries کرتا ہے اور duplicates عام ہیں، کوئی نایاب صورت نہیں۔
نمبر کو easycoexistence.com سے کنیکٹ کریں، ویب ہک کی منزل اپنے روٹ پر سیٹ کریں، اور ڈیش بورڈ سے phone number id اور ٹوکن پڑھیں۔ فی نمبر ماہانہ US$ 9 سے شروع، volume پر US$ 2 تک کم، پہلے 7 دن فری ٹرائل کے ساتھ۔
اکثر پوچھے جانے والے سوالات
کیا مجھے کسی library کی ضرورت ہے؟
نہیں۔ ایک روٹ اور fetch کافی ہیں، اور کال بالکل Meta کی documentation کے مطابق ہے۔
کیا یہ Vercel یا Lambda پر چلتا ہے؟
ہاں، معمول کی serverless احتیاط کے ساتھ: پہلے acknowledgement دیں، پھر inline کے بجائے queue یا background mechanism سے پراسیس کریں۔
میں کیسے تصدیق کروں کہ درخواست Meta سے آئی ہے؟
signature header کو اپنے ایپ secret سے ملائیں۔ اینڈ پوائنٹ public ہوتے ہی یہ کرنا بہتر ہے۔
کیا میں TypeScript استعمال کر سکتا ہوں؟
ہاں۔ ہماری طرف سے type کرنے کے لیے کچھ نہیں، کیونکہ پے لوڈ Meta کا ہے اور Meta نے اسے document کیا ہے۔
مزید پڑھیں
شروع کرنے کے لیے تیار ہیں؟
WhatsApp Coexistence چند منٹ میں سیٹ اپ کریں، مہینوں میں نہیں۔ ایپ فون پر کام کرتی رہتی ہے۔
فری ٹرائل شروع کریںتصدیق شدہ تاریخ