এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে, কীভাবে গুগল চ্যাট এপিআই-এর Media রিসোর্সের download মেথড ব্যবহার করে গুগল চ্যাটের কোনো মেসেজ থেকে মিডিয়া (একটি ফাইল) ডাউনলোড করা যায়।
যখন ব্যবহারকারী আপনার অ্যাপে একটি বার্তা পাঠান, তখন গুগল চ্যাট একটি MESSAGE ইন্টারঅ্যাকশন ইভেন্ট প্রেরণ করে। আপনার অ্যাপে প্রাপ্ত ইন্টারঅ্যাকশন ইভেন্টটিতে একটি রিকোয়েস্ট বডি থাকে, যা হলো ইন্টারঅ্যাকশন ইভেন্টটির প্রতিনিধিত্বকারী JSON পেলোড এবং এতে যেকোনো অ্যাটাচমেন্ট অন্তর্ভুক্ত থাকে। অ্যাটাচমেন্টটি আপলোড করা কন্টেন্ট (একটি স্থানীয় ফাইল) নাকি ড্রাইভে সংরক্ষিত ফাইল, তার উপর নির্ভর করে অ্যাটাচমেন্টের ডেটা ভিন্ন হয়। Media রিসোর্সটি গুগল চ্যাটে আপলোড করা ফাইলকে প্রতিনিধিত্ব করে, যেমন ছবি, ভিডিও এবং ডকুমেন্ট। Attachment রিসোর্সটি একটি বার্তার সাথে সংযুক্ত মিডিয়ার একটি ইনস্ট্যান্স—একটি ফাইল—কে প্রতিনিধিত্ব করে। Attachment রিসোর্সটিতে অ্যাটাচমেন্ট সম্পর্কিত মেটাডেটা অন্তর্ভুক্ত থাকে, যেমন এটি কোথায় সংরক্ষিত আছে।
পূর্বশর্ত
পাইথন
- গুগল চ্যাট ব্যবহারের সুবিধাসহ একটি ব্যবসায়িক বা এন্টারপ্রাইজ গুগল ওয়ার্কস্পেস অ্যাকাউন্ট।
- আপনার পরিবেশ প্রস্তুত করুন:
- একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন ।
- OAuth সম্মতি স্ক্রিনটি কনফিগার করুন ।
- আপনার চ্যাট অ্যাপের জন্য একটি নাম, আইকন এবং বিবরণ দিয়ে গুগল চ্যাট এপিআই সক্রিয় ও কনফিগার করুন ।
- পাইথন গুগল এপিআই ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।
- আপনার গুগল চ্যাট এপিআই অনুরোধে আপনি যেভাবে প্রমাণীকরণ করতে চান, তার উপর ভিত্তি করে অ্যাক্সেস ক্রেডেনশিয়াল তৈরি করুন:
- চ্যাট ব্যবহারকারী হিসেবে প্রমাণীকরণের জন্য, OAuth ক্লায়েন্ট আইডি ক্রেডেনশিয়াল তৈরি করুন এবং ক্রেডেনশিয়ালগুলো আপনার স্থানীয় ডিরেক্টরিতে
credentials.jsonনামের একটি JSON ফাইল হিসেবে সংরক্ষণ করুন। - চ্যাট অ্যাপ হিসেবে প্রমাণীকরণের জন্য, পরিষেবা অ্যাকাউন্টের ক্রেডেনশিয়াল তৈরি করুন এবং ক্রেডেনশিয়ালগুলো
credentials.jsonনামের একটি JSON ফাইল হিসেবে সংরক্ষণ করুন।
- চ্যাট ব্যবহারকারী হিসেবে প্রমাণীকরণের জন্য, OAuth ক্লায়েন্ট আইডি ক্রেডেনশিয়াল তৈরি করুন এবং ক্রেডেনশিয়ালগুলো আপনার স্থানীয় ডিরেক্টরিতে
- আপনি ব্যবহারকারী হিসেবে নাকি চ্যাট অ্যাপ হিসেবে প্রমাণীকরণ করতে চান, তার উপর ভিত্তি করে অনুমোদনের পরিধি বেছে নিন ।
ফাইল সংযুক্তি থেকে ডাউনলোড করুন
ফাইল অ্যাটাচমেন্ট থেকে মিডিয়া ডাউনলোড করতে, আপনার অনুরোধে নিম্নলিখিত তথ্যগুলো দিন:
- ব্যবহারকারী প্রমাণীকরণের ক্ষেত্রে,
chat.messages.readonlyঅথবাchat.messagesঅথরাইজেশন স্কোপ নির্দিষ্ট করুন। অ্যাপ প্রমাণীকরণের ক্ষেত্রে,chat.botঅথরাইজেশন স্কোপ নির্দিষ্ট করুন। - নিম্নলিখিত গুগল চ্যাট পদ্ধতিগুলি কল করুন:
- নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি কল করে
attachmentDataRefপান: -
Mediaরিসোর্সেরdownloadমেথডটি কল করুন এবং পূর্বে প্রাপ্তattachmentDataRef.resourceNamemedia.download.resourceNameহিসেবে নির্দিষ্ট করুন।
- নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি কল করে
নিম্নলিখিত উদাহরণটি একটি বার্তার সাথে সংযুক্ত একটি ফাইল ডাউনলোড করে:
পাইথন
- আপনার ওয়ার্কিং ডিরেক্টরিতে
chat_media_and_attachment_download.pyনামে একটি ফাইল তৈরি করুন। chat_media_and_attachment_download.pyফাইলে নিম্নলিখিত কোডটি অন্তর্ভুক্ত করুন:import io from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then downloads a file attached to a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Download media resource. request = chat.media().download_media( resourceName=RESOURCE_NAME, ) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() if status.total_size: print(f'Total size: {status.total_size}') print(f'Download {int(status.progress() * 100)}') if __name__ == '__main__': main()কোডে,
RESOURCE_NAMEattachmentDataRef.resourceNameদিয়ে প্রতিস্থাপন করুন, যা আপনি নিম্নলিখিত উপায়গুলোর যেকোনো একটির মাধ্যমে পেতে পারেন:আপনার ওয়ার্কিং ডিরেক্টরিতে, স্যাম্পলটি বিল্ড ও রান করুন:
python3 chat_media_and_attachment_download.py
সফল হলে, এই মেথডটি ফাইলের বিষয়বস্তু বাইট হিসেবে ফেরত দেয়।
ফাইলটির বিষয়বস্তু ডাউনলোড করতে নিচের পদ্ধতিগুলোর মধ্যে যেকোনো একটি বেছে নিন:
আমরা পাইথনে
MediaIoBaseDownloadক্লাসটি ব্যবহার করার পরামর্শ দিই, যেটিতে ফাইলটিকে বিভিন্ন অংশে ডাউনলোড করার এবং এর বিষয়বস্তু একটি আউটপুট স্ট্রিমে সংরক্ষণ করার মেথড রয়েছে।যদি আপনাকে ম্যানুয়ালি HTTP রিকোয়েস্ট করতেই হয়, তাহলে
downloadমেথডটি কল করুন এবংRangeহেডারের সাথে একটি বাইট রেঞ্জ ব্যবহার করে ফাইলের যে অংশটি ডাউনলোড করতে চান তা নির্দিষ্ট করে দিন—উদাহরণস্বরূপ:Range: bytes=500-999।
সম্পর্কিত বিষয়
- বার্তাটি যদি একটি ড্রাইভ ফাইল হয়, তাহলে ফাইলটিতে অ্যাক্সেস পেতে ড্রাইভ এপিআই (Drive API) ব্যবহার করুন।
- মিডিয়া ফাইল সংযুক্তি হিসেবে আপলোড করুন
- মিডিয়া ফাইল সংযুক্তি হিসেবে ডাউনলোড করুন
- একটি বার্তা সংযুক্তি সম্পর্কে মেটাডেটা পান