অ্যাপফাংশন আপনার অ্যান্ড্রয়েড অ্যাপকে নির্দিষ্ট কিছু কার্যকারিতা শেয়ার করার সুযোগ দেয়, যা সিস্টেম এবং বিভিন্ন এআই এজেন্ট ও অ্যাসিস্ট্যান্ট শনাক্ত ও ব্যবহার করতে পারে। এই ফাংশনগুলো সংজ্ঞায়িত করার মাধ্যমে, আপনি আপনার অ্যাপকে অ্যান্ড্রয়েড অপারেটিং সিস্টেমে পরিষেবা, ডেটা এবং অ্যাকশন সরবরাহ করতে সক্ষম করেন, যা ব্যবহারকারীদের এআই এজেন্ট এবং সিস্টেম-স্তরের ইন্টারঅ্যাকশনের মাধ্যমে কাজ সম্পন্ন করতে সাহায্য করে।
অ্যাপফাংশনগুলো মডেল কনটেক্সট প্রোটোকল (MCP)- এর টুলগুলোর মোবাইল সংস্করণ হিসেবে কাজ করে। যেখানে MCP ঐতিহ্যগতভাবে এজেন্টদের সার্ভার-সাইড টুলের সাথে সংযোগ স্থাপনের পদ্ধতিকে মানসম্মত করে, সেখানে অ্যাপফাংশনগুলো অ্যান্ড্রয়েড অ্যাপের জন্য একই প্রক্রিয়া সরবরাহ করে। এটি আপনাকে আপনার অ্যাপের সক্ষমতাগুলোকে পরিচালনাযোগ্য "টুল" হিসেবে প্রকাশ করতে সাহায্য করে, যা অনুমোদিত অ্যাপগুলো (কলার) ব্যবহারকারীর উদ্দেশ্য পূরণের জন্য খুঁজে বের করতে এবং কার্যকর করতে পারে। অ্যাপফাংশন খুঁজে বের করতে এবং কার্যকর করতে কলারদের অবশ্যই EXECUTE_APP_FUNCTIONS পারমিশন থাকতে হবে এবং এর মধ্যে এজেন্ট, অ্যাপ এবং জেমিনির মতো এআই অ্যাসিস্ট্যান্ট অন্তর্ভুক্ত থাকতে পারে।
অ্যাপফাংশনগুলো অ্যান্ড্রয়েড ১৬ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোতে কাজ করে।
ব্যবহারের উদাহরণ
অ্যাপফাংশনগুলো কাজ স্বয়ংক্রিয় করতে এবং ব্যবহারকারীর মিথস্ক্রিয়াকে সহজ করতে একটি শক্তিশালী ব্যবস্থা প্রদান করে। আপনার অ্যাপের সক্ষমতাগুলো প্রকাশ করার মাধ্যমে, আপনি ব্যবহারকারীদের স্বাভাবিক ভাষা ব্যবহার করে জটিল লক্ষ্য অর্জন করতে সক্ষম করেন, যার ফলে প্রায়শই আপনার UI-তে ধাপে ধাপে ম্যানুয়াল নেভিগেশনের প্রয়োজন হয় না।
নিম্নলিখিত পরিস্থিতিগুলো তুলে ধরে যে কীভাবে বিভিন্ন ধরণের অ্যাপ ক্যাটাগরির মধ্যে অভিজ্ঞতা চালনা করতে অ্যাপফাংশন ব্যবহার করা যেতে পারে:
- কাজ ব্যবস্থাপনা এবং উৎপাদনশীলতা
- ব্যবহারকারীর অনুরোধ : " আজ বিকাল ৫টায় কর্মস্থল থেকে আমার পার্সেলটি নিয়ে নেওয়ার জন্য আমাকে মনে করিয়ে দেবেন ।"
- অ্যাপফাংশন অ্যাকশন : কলার প্রাসঙ্গিক টাস্ক ম্যানেজমেন্ট অ্যাপটি শনাক্ত করে এবং একটি টাস্ক তৈরি করার জন্য একটি ফাংশন কল করে, যা ব্যবহারকারীর প্রম্পটের উপর ভিত্তি করে শিরোনাম, সময় এবং অবস্থান ফিল্ডগুলি স্বয়ংক্রিয়ভাবে পূরণ করে।
- মিডিয়া এবং বিনোদন
- ব্যবহারকারীর অনুরোধ : " এই বছরের সেরা জ্যাজ অ্যালবামগুলো দিয়ে একটি নতুন প্লেলিস্ট তৈরি করুন "।
- AppFunction action : কলার একটি মিউজিক অ্যাপের মধ্যে প্লেলিস্ট তৈরির ফাংশনটি কার্যকর করে, যেখানে কন্টেন্টটি অবিলম্বে তৈরি ও চালু করার জন্য কোয়েরি হিসেবে "২০২৬ সালের সেরা জ্যাজ অ্যালবাম"-এর মতো কনটেক্সট পাস করা হয়।
- ক্রস-অ্যাপ ওয়ার্কফ্লো
- ব্যবহারকারীর অনুরোধ : " লিসার ইমেল থেকে নুডলসের রেসিপিটি খুঁজে বের করুন এবং উপকরণগুলো আমার কেনাকাটার তালিকায় যোগ করুন "।
- অ্যাপফাংশন অ্যাকশন : এই অনুরোধটি একাধিক অ্যাপের ফাংশন ব্যবহার করে। প্রথমে, কলার একটি ইমেল অ্যাপের সার্চ ফাংশন ব্যবহার করে বিষয়বস্তু সংগ্রহ করে। তারপর, এটি প্রাসঙ্গিক উপাদানগুলো বের করে এবং ব্যবহারকারীর তালিকাটি পূরণ করার জন্য একটি শপিং লিস্ট অ্যাপের ফাংশন চালু করে।
- ক্যালেন্ডার এবং সময়সূচী
- ব্যবহারকারীর অনুরোধ : " আগামী সোমবার সন্ধ্যা ৬টায় মায়ের জন্মদিনের পার্টিটি আমার ক্যালেন্ডারে যোগ করুন "।
- অ্যাপফাংশন অ্যাকশন : অনুমোদিত এজেন্টিক অ্যাপটি ক্যালেন্ডার অ্যাপের "ক্রিয়েট ইভেন্ট" ফাংশনটি কল করে এবং "নেক্সট মানডে" ও "সন্ধ্যা ৬টা"-র মতো প্রাসঙ্গিক তথ্য পার্স করে এন্ট্রিটি তৈরি করে, যার ফলে ব্যবহারকারীকে ম্যানুয়ালি ক্যালেন্ডার খুলতে হয় না।
অ্যাপফাংশনগুলি কীভাবে কাজ করে
AppFunctions হলো অ্যান্ড্রয়েড ১৬ প্ল্যাটফর্মের একটি ফিচার এবং এর সাথে থাকা একটি জেটপ্যাক লাইব্রেরি , যা অ্যাপগুলোকে এজেন্ট অ্যাপের মতো কলারদের জন্য ডিভাইসে নির্দিষ্ট ফাংশন অ্যাক্সেস ও এক্সিকিউট করার সুযোগ দেয়।
নিম্নলিখিত ডায়াগ্রামটি দেখায় যে কীভাবে অ্যাপগুলি একটি এজেন্টের কাছে AppFunction শেয়ার করে এবং পরবর্তীতে তা কার্যকর করে। ব্যবহারকারীর অনুরোধগুলি পরিচালনা করার সময় এজেন্টরা সম্ভবত সার্ভার-সাইড রিমোট MCP টুল এবং স্থানীয় AppFunction উভয়কেই একসাথে বিবেচনা করে। স্থানীয় AppFunction ব্যবহার করার বিস্তারিত কার্যপ্রবাহটি নিম্নরূপ:
- অ্যাপফাংশন ঘোষণা : অ্যান্ড্রয়েড অ্যাপটি তার অ্যাপফাংশনগুলো, যেমন "নোট তৈরি করুন" বা "বার্তা পাঠান", প্রকাশ করার জন্য তৈরি করা হয়েছে।
- স্কিমা তৈরি : AppFunctions Jetpack লাইব্রেরি একটি XML স্কিমা ফাইল তৈরি করে, যেখানে অ্যাপের মধ্যে ঘোষিত সমস্ত AppFunction-এর তালিকা থাকে। অ্যান্ড্রয়েড অপারেটিং সিস্টেম উপলব্ধ AppFunction-গুলোকে সূচীবদ্ধ করতে এই ফাইলটি ব্যবহার করে।
- মেটাডেটা পুনরুদ্ধার : এজেন্ট কোয়েরি করার মাধ্যমে অ্যাপফাংশন মেটাডেটা পুনরুদ্ধার করতে পারে।
- অ্যাপফাংশন নির্বাচন ও সম্পাদন : ব্যবহারকারীর নির্দেশনার ভিত্তিতে, এজেন্ট যথাযথ প্যারামিটারসহ উপযুক্ত অ্যাপফাংশনটি নির্বাচন ও সম্পাদন করবে।
AppFunctions Jetpack লাইব্রেরি আপনার অ্যাপের কার্যকারিতা প্রকাশ করাকে সহজ করে তোলে। অ্যানোটেশন প্রসেসরের সাহায্যে, ডেভেলপাররা যে ফাংশনগুলো প্রকাশ করতে চান সেগুলোকে অ্যানোটেট করেন। এরপর কলাররা AppFunctionManager ব্যবহার করে এই ইনডেক্স করা ফাংশনগুলো খুঁজে বের করতে এবং কল করতে পারে।
কোনো ফাংশন কল করার আগে, কলারদের AppFunctionManager এর একটি ইনস্ট্যান্স পুনরুদ্ধার করার চেষ্টা করে যাচাই করে নেওয়া উচিত যে ডিভাইসটি AppFunctions ফিচারটি সমর্থন করে কি না। একবার সমর্থিত হলে, কলাররা isAppFunctionEnabled(packageName, functionId) ব্যবহার করে টার্গেট অ্যাপের মধ্যে একটি নির্দিষ্ট ফাংশন সক্রিয় আছে কি না তা যাচাই করতে পারে। অন্যান্য প্যাকেজের ফাংশনগুলির অবস্থা জানতে android.permission.EXECUTE_APP_FUNCTIONS permission প্রয়োজন হয়।
আপনার অ্যাপের AppFunction ফিচারটি সমর্থিত কিনা তা যাচাই করার প্রয়োজন নেই; এটি Jetpack লাইব্রেরির মধ্যেই স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। উদাহরণস্বরূপ, AppFunctionManager ফিচারটি সমর্থিত কিনা তা যাচাই করতে পারে।
এখানে একটি নোট-নেওয়ার অ্যাপের AppFunction-এর উদাহরণ দেওয়া হলো, যেটিতে নোট তৈরি, সম্পাদনা এবং তালিকাভুক্ত করার সুবিধা রয়েছে:
/** * A note app's [AppFunction]s. */ class NoteFunctions( private val noteRepository: NoteRepository ) { /** * Lists all available notes. * * @param appFunctionContext The context in which the AppFunction is executed. */ @AppFunction(isDescribedByKDoc = true) suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? { return noteRepository.appNotes.ifEmpty { null }?.toList() } /** * Adds a new note to the app. * * @param appFunctionContext The context in which the AppFunction is executed. * @param title The title of the note. * @param content The note's content. */ @AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note { return noteRepository.createNote(title, content) } /** * Edits a single note. * * @param appFunctionContext The context in which the AppFunction is executed. * @param noteId The target note's ID. * @param title The note's title if it should be updated. * @param content The new content if it should be updated. */ @AppFunction(isDescribedByKDoc = true) suspend fun editNote( appFunctionContext: AppFunctionContext, noteId: Int, title: String?, content: String?, ): Note? { return noteRepository.updateNote(noteId, title, content) } } /** * A note. */ @AppFunctionSerializable(isDescribedByKDoc = true) data class Note( /** The note's identifier */ val id: Int, /** The note's title */ val title: String, /** The note's content */ val content: String )
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
নিম্নলিখিত বিভাগে অ্যাপফাংশন সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির উত্তর দেওয়া হয়েছে।
প্রশ্ন: আমি একজন অ্যাপ ডেভেলপার। আমি কি আজ অ্যাপফাংশনগুলো প্রয়োগ করতে পারি?
এ : হ্যাঁ, পূর্ববর্তী বিভাগগুলিতে বিস্তারিত নির্দেশিকা অনুসরণ করে আপনার অ্যাপের মধ্যে AppFunctions প্রয়োগ এবং পরীক্ষা করা সম্ভব।
প্রশ্ন: আমি আমার অ্যাপে AppFunctions প্রয়োগ করেছি। আমার সিস্টেম এজেন্ট কেন সেগুলো অ্যাক্সেস করতে পারছে না?
অ্যাপফাংশন একটি পরীক্ষামূলক ফিচার। এই পরীক্ষামূলক পর্যায়ে সামগ্রিক অভিজ্ঞতার মান সতর্কতার সাথে মূল্যায়ন করার জন্য, শুধুমাত্র সীমিত সংখ্যক অ্যাপ এবং সিস্টেম এজেন্ট সম্পূর্ণ পাইপলাইনটি অ্যাক্সেস করতে পারবে।
প্রশ্ন: আমি একটি এজেন্ট তৈরি করছি। আমি কি অ্যাপগুলো দ্বারা প্রদত্ত AppFunction-গুলো অ্যাক্সেস করতে পারি?
এ : আপনার টেস্ট এজেন্ট একটি ডেভেলপমেন্ট এনভায়রনমেন্টে AppFunctions অ্যাক্সেস করতে পারে। এই পরীক্ষামূলক পর্যায়ে, প্রোডাকশনে শুধুমাত্র সীমিত সংখ্যক সিস্টেম এজেন্ট AppFunctions অ্যাক্সেস ও এক্সিকিউট করতে পারবে।
প্রশ্ন: কোন সিস্টেম এজেন্টগুলোর AppFunctions-এ অ্যাক্সেস আছে?
এ : যেহেতু অ্যাপফাংশনগুলো পরীক্ষামূলক পর্যায়ে রয়েছে, তাই শুধুমাত্র সীমিত সংখ্যক সিস্টেম এজেন্ট সম্পূর্ণ পাইপলাইনটি অ্যাক্সেস করতে পারে।
আমি কীভাবে আমার অ্যাপটিকে AppFunctions-এর সাধারণ উপলব্ধির জন্য প্রস্তুত করতে পারি?
আপনার অ্যাপের কোন ফিচারগুলো আপনি এজেন্টিক অটোমেশনের আওতায় আনতে চান, তা বিবেচনা করুন। আপনি আপনার অ্যাপে অ্যাপফাংশন (AppFunctions) প্রয়োগ করতে পারেন। এটি করার জন্য, এই পৃষ্ঠার পূর্ববর্তী বিভাগগুলোর ধাপগুলো অনুসরণ করুন এবং adb shell cmd app_function list-app-functions .com কল করে যাচাই করুন যে সেগুলো ডিভাইসে নিবন্ধিত হয়েছে।
প্রশ্ন: আমি কি এন্ড-টু-এন্ড এজেন্টিক ডেভেলপার এক্সপেরিয়েন্সে আগেভাগে অ্যাক্সেস পেতে পারি?
আমরা অ্যান্ড্রয়েডে AppFunctions-কে প্রোডাকশনে চালু করার জন্য প্রয়োজনীয় এন্ড-টু-এন্ড ডেভেলপার এক্সপেরিয়েন্স পরীক্ষা করার উদ্দেশ্যে নির্বাচিত কিছু অ্যাপকে অন্তর্ভুক্ত করতে একটি আর্লি অ্যাক্সেস প্রোগ্রাম (EAP) পরিচালনা করছি। আপনি এই EAP রেজিস্ট্রেশন ফর্মের মাধ্যমে আপনার AppFunctions ইন্টিগ্রেট করার জন্য আগ্রহ প্রকাশ করতে পারেন। আগ্রহ প্রকাশ করলেই আপনি স্বয়ংক্রিয়ভাবে সম্পূর্ণ ইন্টিগ্রেশনের অ্যাক্সেস পাবেন না। আপনার অ্যাপটি EAP-এর জন্য নির্বাচিত হলে, অথবা AppFunctions সর্বসাধারণের জন্য উপলব্ধ হলে আমরা আপনাকে ইমেল করে জানাব।
আমি AppFunctions সম্পর্কে কীভাবে মতামত জানাতে পারি?
এ : আপনি একটি ইস্যু ফাইল করে এবং আর্লি অ্যাক্সেস প্রোগ্রাম ফর্মে আপনার আগ্রহ নিবন্ধন করে এপিআই (API) সম্পর্কে মতামত জানাতে পারেন।