ফ্লাইট স্ট্যাটাস ইন্টিগ্রেশন
যাত্রীদের ফ্লাইটে পরিবর্তন ঘটার সাথে সাথেই তাদের জানান: একটি নতুন গেট, বিলম্ব, বোর্ডিং, আগমন, বা বাতিলকরণ। ফ্লাইট স্ট্যাটাস ইন্টিগ্রেশন Pushwoosh-কে AeroDataBox-এর সাথে কানেক্ট করে, যা একটি ফ্লাইট-ডেটা প্রদানকারী, যাতে একটি কাস্টমার জার্নি একজন নির্দিষ্ট যাত্রীর ফ্লাইট পর্যবেক্ষণ করতে পারে এবং এর স্ট্যাটাস পরিবর্তনের মুহূর্তে প্রতিক্রিয়া জানাতে পারে।
ইন্টিগ্রেশন ওভারভিউ
Anchor link toইন্টিগ্রেশনের প্রকার
Anchor link toউৎস: আপনি একটি জার্নির ভেতর থেকে একটি বুকিংকে তার ফ্লাইটের জন্য সাবস্ক্রাইব করেন। Pushwoosh স্ট্যাটাস পরিবর্তনগুলিকে একটি ইভেন্ট হিসাবে ফেরত পাঠায় যা আপনি পরে সেই একই জার্নিতে ব্যবহার করেন।
পূর্বশর্ত
Anchor link toফ্লাইট স্ট্যাটাস কানেক্ট করার আগে, নিশ্চিত করুন যে আপনার কাছে আছে:
- Pushwoosh-এর NUE ডেটা সেন্টারে একটি অ্যাপ্লিকেশন সহ একটি সক্রিয় Pushwoosh অ্যাকাউন্ট। ফ্লাইট স্ট্যাটাস এখনও অন্য ডেটা সেন্টারে উপলব্ধ নয়।
- একটি AeroDataBox অ্যাকাউন্ট এবং API কী। ফিডটি আপনার নিজের AeroDataBox অ্যাকাউন্টে বিল করা হয়।
- একটি বুকিং ইভেন্ট যা ফ্লাইটের ক্যারিয়ার, নম্বর, তারিখ এবং প্রস্থানের বিমানবন্দর বহন করে (দেখুন ফ্লাইট স্ট্যাটাস জার্নি তৈরি করুন)।
- জার্নিকে প্রমাণীকরণের জন্য একটি ডেডিকেটেড API Access token।
ইন্টিগ্রেশনটি কীভাবে কাজ করে?
Anchor link toইন্টিগ্রেশন কানেক্ট করা এবং একটি ফ্লাইট পর্যবেক্ষণ করা দুটি পৃথক স্টেপ, যা বিভিন্ন সময়ে করা হয়:
- Settings → 3rd-party integrations-এ আপনার AeroDataBox কী কানেক্ট করুন।
- একটি বুকিং ইভেন্ট আপনার জার্নিতে একজন যাত্রীকে প্রবেশ করায়।
- জার্নির Webhook স্টেপ Pushwoosh-এর পাবলিক API-এর মাধ্যমে সেই বুকিংটিকে তার ফ্লাইটে সাবস্ক্রাইব করে।
- Pushwoosh AeroDataBox-এর সাথে ফ্লাইটটি পর্যবেক্ষণ করে এবং পরিবর্তনগুলি সনাক্ত করে: গেট, বিলম্ব, বোর্ডিং, আগমন, বাতিলকরণ, বা ব্যাগেজ বেল্ট অ্যাসাইনমেন্ট।
- প্রতিটি পরিবর্তন অ্যাপে একটি
PW_FlightStatusChangedইভেন্ট হিসাবে ডেলিভার করা হয়, যা জার্নির Wait for Trigger এবং Condition split সঠিক মেসেজে রুট করে।
প্রতিটি ফ্লাইট সাবস্ক্রিপশন স্থানীয় প্রস্থানের তারিখের 36 ঘন্টা পরে স্বয়ংক্রিয়ভাবে শেষ হয়। এটি আগেও শেষ হতে পারে: ফ্লাইট অবতরণ করলে বা বাতিল হলে, অথবা যখন আর কিছুই এটি পর্যবেক্ষণ করছে না। এরপর Pushwoosh সংশ্লিষ্ট AeroDataBox সাবস্ক্রিপশনটি বাতিল করে, যাতে এটি ব্যাকগ্রাউন্ডে বিল হতে না থাকে।
এই সময়সীমা সাবস্ক্রাইব করার মুহূর্তে বুক করা প্রস্থানের তারিখ থেকে নির্ধারিত হয়, এবং পরে AeroDataBox কোনো বিলম্ব রিপোর্ট করলেও এটি সরে না। যে বিলম্ব ফ্লাইটকে পরের ক্যালেন্ডার দিনে ঠেলে দেয়, তার ফলে বিলম্বিত প্রকৃত প্রস্থানের আগেই সাবস্ক্রিপশন শেষ হয়ে যেতে পারে।
ব্যবহারের ক্ষেত্র
Anchor link toফ্লাইট স্ট্যাটাস চার ধরনের আপডেট কভার করে, প্রতিটি নিজে থেকে ব্যবহারযোগ্য বা একটি জার্নিতে একত্রিত করা যায়:
- গেট পরিবর্তনের সতর্কতা: যাত্রীদের প্রস্থানের গেট পরিবর্তনের মুহূর্তে অবহিত করুন।
- বিলম্বের নোটিফিকেশন: ফ্লাইটের বিলম্ব কয়েক মিনিট অতিক্রম করলে যাত্রীদের সতর্ক করুন, যাতে তারা তাদের পরিকল্পনা সামঞ্জস্য করতে পারে।
- বোর্ডিং এবং আগমনের আপডেট: বোর্ডিং শুরু হলে বা তাদের ফ্লাইট অবতরণ করলে যাত্রীদের জানান।
- ব্যাগেজ ক্লেইম: ব্যাগেজ বেল্ট নম্বরটি নির্ধারিত হওয়ার সাথে সাথে পাঠান।
ইন্টিগ্রেশন সেট আপ করুন
Anchor link toফ্লাইট স্ট্যাটাসকে Pushwoosh-এর সাথে কানেক্ট করুন
Anchor link toপ্রতি অ্যাপ্লিকেশনের জন্য আপনার AeroDataBox কী একবার কানেক্ট করুন:
-
আপনার অ্যাপ্লিকেশন খুলুন এবং Settings → 3rd-party integrations-এ যান।
-
Available services-এর অধীনে, Flight Status কার্ডটি খুঁজুন এবং Configure-এ ক্লিক করুন।

-
আপনার AeroDataBox কী API key-তে পেস্ট করুন এবং Connect-এ ক্লিক করুন।

Connect-এ ক্লিক করার পরে, কার্ডটি Connected services-এ চলে যায়।
যদি কী প্রত্যাখ্যান করা হয়
Anchor link toPushwoosh ব্যাকগ্রাউন্ডে কী পরীক্ষা করে। কিছু ভুল হলে, কার্ডটি এই বার্তাগুলির মধ্যে একটি দেখায়:
| বার্তা | কারণ |
|---|---|
provider rejected the API key | কীটি অবৈধ বা AeroDataBox-এ বাতিল করা হয়েছে |
provider account is out of credits | আপনার AeroDataBox প্ল্যানের ক্রেডিট শেষ হয়ে গেছে |
provider rate limit reached | AeroDataBox অনুরোধগুলি থ্রোটল করছে, এবং এটি নিজে থেকেই পরিষ্কার হয়ে যায় |
provider is unavailable | একটি নেটওয়ার্ক সমস্যা বা যেকোনো পক্ষের বিভ্রাটের কারণে AeroDataBox-এর সাথে সংযোগ করা যায়নি |
provider refused the request | AeroDataBox একটি ত্রুটি ফিরিয়েছে যা Pushwoosh অন্যথায় চিনতে পারে না |
কী প্রতিস্থাপন করুন
Anchor link toConnected services-এ Flight Status কার্ডটি পুনরায় খুলুন, উদাহরণস্বরূপ কী প্রত্যাখ্যাত হওয়ার পরে:
- কী প্রতিস্থাপন করুন: API key-তে একটি নতুন কী পেস্ট করুন।
- বর্তমান কী রাখুন: API key খালি রাখুন। ফিল্ডটি শুধুমাত্র সংরক্ষিত কী-এর শেষ কয়েকটি অক্ষর দেখায়।
ইন্টিগ্রেশন ডিসকানেক্ট করুন
Anchor link to- Connected services-এ Flight Status কার্ডটি খুলুন।
- কীটি সরিয়ে ফেলুন।
ডিসকানেক্ট করার পরে:
- নতুন সাবস্ক্রিপশন আর তৈরি হয় না।
- জার্নিগুলি ইতিমধ্যে যে ফ্লাইটগুলি পর্যবেক্ষণ করছে, সেগুলির সাবস্ক্রিপশন বজায় থাকে যতক্ষণ না সেগুলি নিজে থেকে শেষ হয় বা আপনি জার্নি থেকে সেগুলি মুছে ফেলেন।
- কার্ডের সক্রিয়-সাবস্ক্রিপশন গণনা এই সাবস্ক্রিপশনগুলিকে শেষ না হওয়া পর্যন্ত অন্তর্ভুক্ত করে।
ফ্লাইট স্ট্যাটাস জার্নি তৈরি করুন
Anchor link toজার্নি তৈরি করার আগে
Anchor link toনিশ্চিত করুন যে আপনার কাছে আছে:
- একটি বুকিং ইভেন্ট যা ফ্লাইটের ক্যারিয়ার, নম্বর, তারিখ (
YYYY-MM-DD), এবং প্রস্থানের বিমানবন্দর বহন করে, সাথে একটি অ্যাট্রিবিউট যা ফ্লাইটের কী<carrier><number>/<date>/<departure airport>ফরম্যাটে ধারণ করে, উদাহরণস্বরূপLH400/2026-09-20/MUC। এটিই সেশন ম্যাচিং জার্নি জুড়ে ব্যবহার করে। - একটি ডেডিকেটেড API Access token। সাবস্ক্রাইব মেথড আপনার অ্যাকাউন্ট থেকে যেকোনো টোকেন গ্রহণ করে, কোনো অনুমতি দেওয়ার প্রয়োজন নেই। এই জার্নির জন্য বিশেষভাবে একটি তৈরি করুন যাতে আপনি পরে অন্য কিছু স্পর্শ না করে এটি বাতিল করতে পারেন।
- আপনার ডেটা সেন্টারের পাবলিক API হোস্ট। NUE অ্যাকাউন্টগুলির জন্য, এটি হল
rpc-api.svc-nue.pushwoosh.com। - জার্নির Campaign entry limit বন্ধ করা আছে। Campaign entry limit শুধুমাত্র প্রতি ব্যবহারকারীর এন্ট্রি ট্র্যাক করে। এটি আপনার নিচে সেট আপ করা সেশন আইডেন্টিফায়ার সম্পর্কে জানে না, তাই এটি একজন যাত্রীর দ্বিতীয় ফ্লাইটকে লিমিট পিরিয়ড পার না হওয়া পর্যন্ত ব্লক করবে।
একটি বুকিং ইভেন্ট থেকে জার্নি শুরু করুন
Anchor link to- একটি Trigger-based entry যোগ করুন এবং আপনার বুকিং ইভেন্ট নির্বাচন করুন, উদাহরণস্বরূপ
flight_booked। - Control how many sessions a user can have at the same time-এর অধীনে, Multiple active sessions per user নির্বাচন করুন।
- সেশন আইডেন্টিফায়ার হিসাবে ফ্লাইট-কী অ্যাট্রিবিউটটি বেছে নিন। এটি একই যাত্রীকে একবারে একাধিক ফ্লাইট ট্র্যাক করতে দেয়, প্রতিটি তার নিজস্ব সেশনে।
একটি Webhook স্টেপ দিয়ে বুকিং সাবস্ক্রাইব করুন
Anchor link toএন্ট্রির ঠিক পরে একটি Webhook স্টেপ যোগ করুন। এর রিকোয়েস্ট বডি এন্ট্রি ইভেন্ট থেকে ফ্লাইটের ফিল্ডগুলি নিয়ে আসে, তাই স্টেপটিকে এন্ট্রির ঠিক পরে বসাতে হবে যাতে সেগুলি ব্যবহার করা যায়।
-
REQUEST TYPE-কে
POST-এ সেট করুন। -
URL-কে
https://rpc-api.svc-nue.pushwoosh.com/api/integrations/flight-status/subscriptions-এ সেট করুন। -
HEADERS-এ,
Content-Type: application/jsonরাখুন। -
একটি হেডার
Authorization: Token <your API token>যোগ করুন। আপনি সেভ করার পরে Pushwoosh এই মানটি মাস্ক করে দেয়, কারণAuthorizationনামের যেকোনো হেডার স্বয়ংক্রিয়ভাবে একটি গোপনীয়তা হিসাবে বিবেচিত হয়। এডিটিং এবং ভার্সন হিস্ট্রির জন্য এর অর্থ কী তা জানতে Mark a header value as secret দেখুন। -
DATA-তে, নিচের রিকোয়েস্ট বডিটি লিখুন, আপনার নিজের অ্যাপ্লিকেশন কোড সরাসরি টাইপ করে:
{"application": "<your application code>","user_id": "{{device:user_id}}","source": "journey","flight": {"carrier": "","flight_number": "","flight_date": "","departure_airport": ""}} -
চারটি খালি
flightমানের প্রতিটির জন্য, DATA BUILDER খুলুন। -
Event ক্যাটাগরি নির্বাচন করুন।
-
আপনার বুকিং ইভেন্ট থেকে ম্যাচিং অ্যাট্রিবিউটটি বেছে নিন (ক্যারিয়ার, ফ্লাইট নম্বর, ফ্লাইটের তারিখ, প্রস্থানের বিমানবন্দর)।
-
Pushwoosh যে ম্যাক্রো তৈরি করে তা কপি করুন এবং সেই ফিল্ডের মান হিসাবে পেস্ট করুন। বাকি তিনটি মানের জন্য পুনরাবৃত্তি করুন।
প্রতিক্রিয়া থেকে কিছু ম্যাপ করার প্রয়োজন নেই। এটি flight_key ফেরত দেয়, যা ইতিমধ্যে আপনার বুকিং ইভেন্টে রয়েছে।
একটি স্ট্যাটাস আপডেটের জন্য অপেক্ষা করুন
Anchor link toWebhook স্টেপের পরে একটি Wait for Trigger স্টেপ যোগ করুন।
- একটি ব্রাঞ্চ যোগ করুন এবং এর ইভেন্টকে
PW_FlightStatusChanged-এ সেট করুন। - মাল্টি-সেশন অ্যাট্রিবিউট ম্যাচিং-এর অধীনে, এন্ট্রিতে ব্যবহৃত একই ফ্লাইট-কী অ্যাট্রিবিউটটি নির্বাচন করুন। এটি নিশ্চিত করে যে একটি স্ট্যাটাস আপডেট শুধুমাত্র সেই যাত্রীকে জাগিয়ে তোলে যার ফ্লাইট সম্পর্কে এটি আসলে।
- ফ্লাইটের জন্য আরামদায়কভাবে সময় কভার করতে অপেক্ষার সময়কাল সেট করুন। বেশিরভাগ ভ্রমণসূচীর জন্য ৪৮ ঘন্টা যথেষ্ট।
- Not triggered ব্রাঞ্চটিকে পরবর্তী কোনো স্টেপ ছাড়াই ছেড়ে দিন, অথবা একটি ফলব্যাক মেসেজ যোগ করুন। অপেক্ষা শেষ হওয়ার আগে যে যাত্রীদের ফ্লাইটে কোনো আপডেট আসে না, তারা এখানে জার্নি থেকে বেরিয়ে যায়, এবং এটি প্রত্যাশিত।
ইভেন্টের প্রকার অনুসারে ব্রাঞ্চ করুন
Anchor link toWait for Trigger স্টেপের পরে একটি Condition split যোগ করুন।
- কন্ডিশন টাইপ হিসাবে Event নির্বাচন করুন।
- Event from Journey-তে,
PW_FlightStatusChangedনির্বাচন করুন। - Attribute-এর অধীনে,
event_typeনির্বাচন করুন। - কন্ডিশনকে is-এ সেট করুন।
gate_changeমান সহ একটি ব্রাঞ্চ যোগ করুন।- Save-এ ক্লিক করুন। এটি দুটি ব্রাঞ্চ তৈরি করে: একটি গেট পরিবর্তনের জন্য যা আপনি নাম দিয়েছেন, এবং অন্য সব ধরনের ইভেন্টের জন্য All other users।
অন্যান্য event_type মানগুলির জন্য এই এলিমেন্টটি পুনরাবৃত্তি করুন, বা এতে আরও ব্রাঞ্চ যোগ করুন, যেগুলির উপর আপনি কাজ করতে চান: delay, boarding, departed, arrived, cancelled, এবং baggage_ready সবই একইভাবে কাজ করে।
যাত্রীকে অবহিত করুন
Anchor link toগেট-চেঞ্জ ব্রাঞ্চে একটি Push এলিমেন্ট যোগ করুন।
- একটি পুশ প্রিসেট নির্বাচন করুন বা তৈরি করুন।
- Message type-কে Transactional message-এ সেট করুন, কারণ একটি ফ্লাইট স্ট্যাটাস সতর্কতা একটি পরিষেবা নোটিফিকেশন, কোনো প্রোমো নয়। ফ্রিকোয়েন্সি ক্যাপিং প্রযোজ্য নয়, এবং এটি এখনও একটি কন্ট্রোল গ্রুপ-এর যাত্রীদের কাছে পৌঁছায়।
- ইভেন্ট অ্যাট্রিবিউট সহ পার্সোনালাইজেশন সক্ষম করুন।
- সোর্স ইভেন্ট হিসাবে
PW_FlightStatusChangedনির্বাচন করুন। - আপনার প্রিসেটের প্লেসহোল্ডারগুলি
flight_numberএবংgate_newথেকে পূরণ করুন।
পরিবর্তে একটি Live Activity কার্ড দেখান
Anchor link toPush-এর পরিবর্তে বা এর পাশাপাশি, তিনটি Live Activity এলিমেন্ট যোগ করুন:
- Start: Webhook স্টেপের ঠিক পরে, সরাসরি এন্ট্রির পরে নয়। এন্ট্রি শুধুমাত্র একটি পরবর্তী স্টেপের সাথে কানেক্ট হয়, তাই Webhook এবং Start দুটোই এর ঠিক পরে আসতে পারে না।
- Update: গেট-চেঞ্জ ব্রাঞ্চে।
- End: যখন জার্নির আর ফ্লাইট ট্র্যাক করার প্রয়োজন নেই, উদাহরণস্বরূপ পৌঁছানো বা বাতিলের পরে।
Start এলিমেন্টে, Card attributes-এর অধীনে, কার্ডের ActivityAttributes টাইপের প্রয়োজনীয় সমস্ত ছয়টি ফিল্ড যোগ করুন। Card attributes হল নাম এবং মানের একটি মুক্ত তালিকা, এবং ইন্টারফেস নামগুলি যাচাই করে না, তাই প্রতিটি নাম ঠিক তালিকার মতো লিখুন। এর মধ্যে পাঁচটি ইতিমধ্যে আপনার বুকিং ইভেন্টে রয়েছে:
carrierflight_numberflight_datedeparture_airportflight_keyarrival_airport: সাবস্ক্রাইব কলের এটির প্রয়োজন হয় না, তাই শুধুমাত্র আপনি Live Activity ব্যবহার করলেই এটি আপনার বুকিং ইভেন্টে যোগ করুন।
শুধুমাত্র Start Card attributes সেট করে, এবং সেগুলি কার্ডের সম্পূর্ণ জীবনকাল জুড়ে একই থাকে। Update এবং End সেগুলি সেট করে না। যে ফিল্ডগুলি পরিবর্তিত হয়, যেমন স্ট্যাটাস, গেট এবং বিলম্ব, সেগুলি হল Card content, এবং সেগুলি আপনি এই অ্যাপের জন্য প্রকাশ করা উইজেট স্কিমা থেকে আসে।
PW_FlightStatusChanged ইভেন্ট রেফারেন্স
Anchor link toইন্টিগ্রেশন দ্বারা সনাক্ত করা প্রতিটি পরিবর্তন একটি PW_FlightStatusChanged ইভেন্ট হিসাবে ডেলিভার করা হয়, যেখানে সমস্ত অ্যাট্রিবিউট সর্বদা উপস্থিত থাকে: খালি অ্যাট্রিবিউটগুলি ফাঁকা মান হিসাবে পাঠানো হয়, কখনও বাদ দেওয়া হয় না।
| অ্যাট্রিবিউট | টাইপ | বিবরণ |
|---|---|---|
event_type | String | কী পরিবর্তন হয়েছে (নিচের মানগুলি দেখুন) |
flight_key | String | বুকিং ইভেন্টে আপনি যে ফ্লাইট কী সেট করেছেন, সেটিই |
flight_number | String | ফ্লাইট নম্বর |
departure_airport | String | প্রস্থানের বিমানবন্দর কোড |
arrival_airport | String | আগমনের বিমানবন্দর কোড |
status | String | বর্তমান ফ্লাইট স্ট্যাটাস (নিচের মানগুলি দেখুন) |
gate_old / gate_new | String | পরিবর্তনের আগে এবং পরে প্রস্থানের গেট |
terminal_old / terminal_new | String | পরিবর্তনের আগে এবং পরে প্রস্থানের টার্মিনাল |
baggage_claim | String | ব্যাগেজ বেল্ট নম্বর, একবার নির্ধারিত হলে |
provider | String | যে ডেটা প্রদানকারী পরিবর্তনটি রিপোর্ট করেছে (aerodatabox) |
delay_minutes | Integer | সময়সূচীর তুলনায় দেরির মিনিট, প্রতিটি ইভেন্টে উপস্থিত থাকে |
scheduled_at / estimated_at / actual_at | String | নির্ধারিত, বর্তমানে আনুমানিক, এবং প্রকৃত প্রস্থানের সময়, প্রদানকারীর নিজস্ব ফরম্যাটে |
arrival_terminal | String | আগমনের টার্মিনাল, একবার নির্ধারিত হলে |
arrival_scheduled_at / arrival_estimated_at / arrival_actual_at | String | নির্ধারিত, বর্তমানে আনুমানিক, এবং প্রকৃত আগমনের সময়, প্রদানকারীর নিজস্ব ফরম্যাটে |
scheduled_at_local / estimated_at_local / actual_at_local | String | উপরের তিনটি প্রস্থানের সময়, প্রস্থানের বিমানবন্দরের স্থানীয় সময়ে |
arrival_scheduled_at_local / arrival_estimated_at_local / arrival_actual_at_local | String | উপরের তিনটি আগমনের সময়, আগমনের বিমানবন্দরের স্থানীয় সময়ে |
flight_date / event_time | Date | ফ্লাইটের তারিখ, এবং যখন পরিবর্তনটি ঘটেছে |
অ্যাট্রিবিউটের মান এবং ফরম্যাট
Anchor link toevent_typeমান:gate_change,delay,boarding,departed,arrived,cancelled,baggage_ready।statusমান:scheduled,check_in,boarding,departed,delayed,arrived,cancelled,diverted,unknown। একটি AeroDataBox স্ট্যাটাস যা Pushwoosh চিনতে পারে না তাunknownহিসাবে রিপোর্ট করা হয়।delay_minutes: শুধুমাত্রdelayইভেন্টে নয়, প্রতিটি ইভেন্টে উপস্থিত থাকে। 0 মানে ফ্লাইট সময়মতো আছে, এবং একটি ঋণাত্মক মান মানে এটি নির্ধারিত সময়ের আগে চলছে। বিলম্ব 5 মিনিটে পৌঁছালে একটিdelayইভেন্ট পাঠানো হয়।- সময়ের অ্যাট্রিবিউট:
arrival_*এবং_localসহ সবগুলিই String, Date নয়। এর ফলে একটি খালি সময় ইভেন্ট থেকে বাদ পড়ে না, এবং একটি স্থানীয় সময় বিমানবন্দরের UTC অফসেট বজায় রাখে। তারিখ অনুসারে ফিল্টার করতে,flight_dateএবংevent_timeব্যবহার করুন।