টুল: search_messages
কীওয়ার্ড ও ফিল্টার ব্যবহার করে গুগল চ্যাট মেসেজ অনুসন্ধান করে এবং সেগুলোকে মার্কডাউন ফরম্যাটে ফেরত দেয়। এটি ব্যবহারকারীর অ্যাক্সেস থাকা সমস্ত স্পেসে কাজ করে, অথবা কোনো নির্দিষ্ট কথোপকথনের জন্য সীমাবদ্ধ করা যেতে পারে।
অন্যান্য সার্চ বা রিড টুলের পরিবর্তে search_messages ব্যবহার করার সিদ্ধান্ত নেওয়ার সময় এই নির্দেশিকা অনুসরণ করুন:
- একাধিক স্পেস জুড়ে অথবা কোনো পরিচিত কনভারসেশন আইডি ছাড়াই নির্দিষ্ট মেসেজের বিষয়বস্তু, কীওয়ার্ড, মেনশন, লিঙ্ক, প্রেরক বা অপঠিত মেসেজ খোঁজার জন্য
search_messagesব্যবহার করুন। - যখন আপনি নির্দিষ্ট স্পেস বা থ্রেড আইডি জানেন এবং বার্তাগুলি কালানুক্রমিকভাবে ক্রমানুসারে পড়তে চান, তখন
list_messagesব্যবহার করুন। - স্পেস ডিসপ্লে নেম বা অংশগ্রহণকারীদের দ্বারা কনভারসেশন আইডি-র মতো স্পেস মেটাডেটা খুঁজে পেতে
search_conversationsব্যবহার করুন (এটি শুধুমাত্র মেটাডেটা অনুসন্ধান করে, বার্তার বিষয়বস্তু নয়)।
যদি নির্দিষ্ট ফিল্টার ছাড়া searchParameters প্রদান করা হয়, তাহলে ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য কথোপকথনগুলো থেকে সাম্প্রতিক বার্তাগুলো ফেরত দেওয়া হয়।
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে curl ব্যবহার করে search_messages MCP টুলটিকে কল করতে হয়।
| কার্ল অনুরোধ |
|---|
curl --location 'https://chatmcp.googleapis.com/mcp/v1' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "search_messages", "arguments": { // provide these details according to the tool MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
ইনপুট স্কিমা
অনুসন্ধান বার্তা অনুরোধ
| JSON উপস্থাপনা |
|---|
{
"searchParameters": {
object ( |
| ক্ষেত্র | |
|---|---|
searchParameters | আবশ্যক। অনুসন্ধানের জন্য ব্যবহৃত প্যারামিটারসমূহ। |
pageSize | ঐচ্ছিক। ফেরত দেওয়া ফলাফলের সর্বোচ্চ সংখ্যা (সর্বোচ্চ ১০০টি পর্যন্ত)। নির্দিষ্ট না করা হলে, সর্বাধিক ২৫টি ফেরত দেওয়া হবে। |
pageToken | ঐচ্ছিক। পূর্ববর্তী |
অনুসন্ধান পরামিতি
| JSON উপস্থাপনা |
|---|
{ "keywords": [ string ], "conversationId": string, "sender": string, "isUnread": boolean, "hasLink": boolean, "startTime": string, "endTime": string, "mentionsMe": boolean, "conversationIncludesUser": string, "spaceDisplayNames": [ string ] } |
| ক্ষেত্র | |
|---|---|
keywords[] | ঐচ্ছিক। ফলাফল ফিল্টার করার জন্য ব্যবহৃত কীওয়ার্ডের একটি সেট। |
conversationId | ঐচ্ছিক। এটি search_conversations টুল থেকে প্রাপ্ত একটি নির্দিষ্ট কথোপকথন শনাক্তকারীর মধ্যে অনুসন্ধানকে সীমাবদ্ধ করে। ফরম্যাট: |
sender | ঐচ্ছিক। কোনো নির্দিষ্ট ব্যবহারকারীর বার্তা ফিল্টার করুন। প্রেরকের ইমেল অথবা রিসোর্স নেম ব্যবহার করা যেতে পারে। ব্যবহারকারীর রিসোর্স নেম |
isUnread | ঐচ্ছিক। প্রেরক ব্যবহারকারীর দ্বারা অপঠিত হয়নি এমন বার্তাগুলির জন্য ফিল্টার করুন। |
hasLink | ঐচ্ছিক। যেসব মেসেজে অন্তত একটি URL আছে, সেগুলোর জন্য ফিল্টার করুন। |
startTime | ঐচ্ছিক। এই সময়ের পরে তৈরি হওয়া বার্তাগুলির জন্য ফিল্টার করুন। ফরম্যাট: আইএসও ৮৬০১ টাইমস্ট্যাম্প। |
endTime | ঐচ্ছিক। এই সময়ের আগে তৈরি হওয়া বার্তাগুলির জন্য ফিল্টার করুন। ফরম্যাট: আইএসও ৮৬০১ টাইমস্ট্যাম্প। |
mentionsMe | ঐচ্ছিক। সেইসব মেসেজ ফিল্টার করুন যেগুলিতে কলকারী ব্যবহারকারীর নাম স্পষ্টভাবে উল্লেখ করা আছে। |
conversationIncludesUser | ঐচ্ছিক। ডিএম এবং গ্রুপ চ্যাটে থাকা সেইসব মেসেজ ফিল্টার করুন, যেগুলিতে নির্দিষ্ট ব্যবহারকারীর ইমেল বা আইডি অন্তর্ভুক্ত রয়েছে। |
spaceDisplayNames[] | ঐচ্ছিক। স্পেস নামের তালিকা দ্বারা ফিল্টার করুন; স্পেস ডিসপ্লে নামগুলো আংশিকভাবে মেলানো হয়। দ্রষ্টব্য: শুধুমাত্র শীর্ষ ৫টি মিল ফেরত দেওয়া হয়। |
আউটপুট স্কিমা
গুগল চ্যাট বার্তা অনুসন্ধানের প্রতিক্রিয়া। যদি next_page_token-টি পূরণ করা থাকে, তাহলে ফলাফলের পরবর্তী পৃষ্ঠাটি আনার জন্য সেই টোকেনটি ব্যবহার করে SearchMessages ফাংশনটিকে আবার কল করা যেতে পারে।
অনুসন্ধান বার্তা প্রতিক্রিয়া
| JSON উপস্থাপনা |
|---|
{
"messages": [
{
object ( |
| ক্ষেত্র | |
|---|---|
messages[] | অনুসন্ধানের শর্তের সাথে মেলে এমন মেসেজ অবজেক্টগুলোর তালিকা। |
nextPageToken | পরবর্তী পৃষ্ঠা আনার জন্য |
চ্যাট বার্তা
| JSON উপস্থাপনা |
|---|
{ "messageId": string, "threadId": string, "plaintextBody": string, "sender": { object ( |
| ক্ষেত্র | |
|---|---|
messageId | বার্তার রিসোর্স নাম। ফরম্যাট: স্পেস/{স্পেস}/বার্তা/{বার্তা} |
threadId | এই বার্তাটি যে থ্রেডের অন্তর্গত। বার্তাটি আনথ্রেডেড হলে এটি খালি থাকবে। ফরম্যাট: স্পেস/{স্পেস}/থ্রেড/{থ্রেড} |
plaintextBody | মার্কডাউন ফরম্যাটিং ব্যবহার করে বার্তার মূল অংশ। |
sender | বার্তার প্রেরক। |
createTime | শুধুমাত্র আউটপুট। বার্তাটি তৈরি হওয়ার সময়কার টাইমস্ট্যাম্প। |
threadedReply | বার্তাটি একটি থ্রেড রিপ্লাই কিনা। |
attachments[] | বার্তার সাথে সংযুক্ত ফাইলগুলো রয়েছে। |
reactionSummaries[] | বার্তাটিতে ইমোজি প্রতিক্রিয়াগুলোর সারাংশ অন্তর্ভুক্ত করা হয়েছে। |
ব্যবহারকারী
| JSON উপস্থাপনা |
|---|
{
"userId": string,
"displayName": string,
"email": string,
"userType": enum ( |
| ক্ষেত্র | |
|---|---|
userId | চ্যাট ব্যবহারকারীর রিসোর্স নাম। ফরম্যাট: users/{user}। |
displayName | একজন চ্যাট ব্যবহারকারীর প্রদর্শিত নাম। |
email | ব্যবহারকারীর ইমেল ঠিকানা। এই ক্ষেত্রটি শুধুমাত্র তখনই পূরণ করা হয় যখন ব্যবহারকারীর ধরন মানুষ (HUMAN) হয়। |
userType | ব্যবহারকারীর ধরণ। |
চ্যাট সংযুক্তি মেটাডেটা
| JSON উপস্থাপনা |
|---|
{
"attachmentId": string,
"filename": string,
"mimeType": string,
"source": enum ( |
| ক্ষেত্র | |
|---|---|
attachmentId | সংযুক্তিটির রিসোর্স নাম। ফরম্যাট: spaces/{space}/messages/{message}/attachments/{attachment}. |
filename | সংযুক্তিটির নাম। |
mimeType | বিষয়বস্তুর ধরণ (MIME টাইপ)। |
source | সংযুক্তিটির উৎস। |
প্রতিক্রিয়া সারাংশ
| JSON উপস্থাপনা |
|---|
{ "emoji": string, "count": integer } |
| ক্ষেত্র | |
|---|---|
emoji | ইমোজি ইউনিকোড স্ট্রিং অথবা নিজস্ব ইমোজির নাম। |
count | সংশ্লিষ্ট ইমোজি ব্যবহার করে করা মোট প্রতিক্রিয়ার সংখ্যা। |
ব্যবহারকারীর ধরণ
গুগল চ্যাট ব্যবহারকারীর প্রকারভেদ।
| এনাম | |
|---|---|
USER_TYPE_UNSPECIFIED | অনির্দিষ্ট। |
HUMAN | মানব ব্যবহারকারী। |
APP | অ্যাপ ব্যবহারকারী। |
উৎস
সংযুক্তিটির উৎস।
| এনাম | |
|---|---|
SOURCE_UNSPECIFIED | সংরক্ষিত। |
DRIVE_FILE | ফাইলটি একটি গুগল ড্রাইভ ফাইল। |
UPLOADED_CONTENT | ফাইলটি চ্যাটে আপলোড করা হয়েছে। |
টুল টীকা
কোনো নির্দিষ্ট টুলের প্রাথমিক ঝুঁকি বর্ণনা করার জন্য টুল অ্যানোটেশনগুলো এমসিপি ক্লায়েন্টদের কাছে পাঠানো হয়। বেশিরভাগ ক্লায়েন্ট এই ইঙ্গিতগুলোকে অবিশ্বস্ত হিসেবে গণ্য করে, কিন্তু কখন একজন ব্যবহারকারীকে নিশ্চিতকরণের জন্য প্রম্পট পাঠানো হবে, সেই সিদ্ধান্ত নিতে এগুলো ব্যবহার করা যেতে পারে।
টাইটেল স্ট্রিং-এর পাশাপাশি, নিম্নলিখিত বুলিয়ান হিন্টগুলো নিম্নরূপভাবে সংজ্ঞায়িত করা হয়েছে:
-
readOnlyHint: যদি true হয়, টুলটি তার পরিবেশ পরিবর্তন করে না। ডিফল্ট: false। -
destructiveHint: যদি true হয়, তাহলে টুলটি ধ্বংসাত্মক কাজ করতে পারবে। যদি false হয়, তাহলে টুলটি শুধুমাত্র সংযোজনমূলক কাজ করতে পারবে। ডিফল্ট: true। -
idempotentHint: যদি true হয়, তাহলে একই আর্গুমেন্ট দিয়ে টুলটিকে বারবার কল করলেও এর এনভায়রনমেন্টের উপর কোনো অতিরিক্ত প্রভাব পড়বে না। ডিফল্ট: false। -
openWorldHint: যদি true হয়, তাহলে টুলটি বাহ্যিক সত্তার 'ওপেন ওয়ার্ল্ড'-এর সাথে ইন্টারঅ্যাক্ট করতে পারবে। যদি false হয়, তাহলে টুলটি শুধুমাত্র অভ্যন্তরীণ সত্তার সাথে ইন্টারঅ্যাক্ট করতে পারবে। উদাহরণস্বরূপ, একটি ওয়েব সার্চ টুল ওপেন ওয়ার্ল্ড হবে, কিন্তু একটি মেমরি টুল ওপেন ওয়ার্ল্ড হবে না।
ধ্বংসাত্মক ইঙ্গিত: ❌ | স্বকীয় ইঙ্গিত: ✅ | শুধুমাত্র পঠনযোগ্য ইঙ্গিত: ✅ | উন্মুক্ত বিশ্ব ইঙ্গিত: ❌
অনুমোদনের পরিধি
নিম্নলিখিত OAuth স্কোপগুলির মধ্যে একটি প্রয়োজন:
-
https://www.googleapis.com/auth/chat.messages.readonly -
https://www.googleapis.com/auth/chat.spaces.readonly -
https://www.googleapis.com/auth/chat.memberships.readonly -
https://www.googleapis.com/auth/chat.users.readstate.readonly