এই নির্দেশিকাটি বর্ণনা করে যে ব্যবহারকারীরা কার্ডের বার্তা এবং ডায়ালগে প্রবেশ করা তথ্যগুলি কীভাবে গ্রহণ করবেন এবং পড়তে হবে। ব্যবহারকারীরা এমন ডেটা ইনপুট করতে পারে যা চ্যাট অ্যাপগুলি গ্রহণ করে, পড়তে পারে এবং প্রতিক্রিয়া জানায়। ব্যবহারকারীদের তথ্য প্রবেশ করতে দেয় এমন উইজেটগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
- ফ্রি-ফর্ম টেক্সট এন্ট্রির জন্য
TextInput
যা পরামর্শ সমর্থন করে। - তালিকা আইটেম এবং মেনুগুলির জন্য
SelectionInput
, যেমন চেকবক্স, রেডিও বোতাম এবং ড্রপ-ডাউন মেনু। - তারিখ এবং সময় এন্ট্রি জন্য
DateTimePicker
.
চ্যাট অ্যাপের জন্য JSON কার্ড মেসেজ ডিজাইন ও প্রিভিউ করতে কার্ড বিল্ডার ব্যবহার করুন:
কার্ড বিল্ডার খুলুনব্যবহারকারীদের কাছ থেকে ডেটা ইনপুট প্রাপ্ত করা চ্যাট অ্যাপগুলিকে নিম্নলিখিতগুলি করতে দেয়:
- গ্রাহক পরিষেবা ক্ষেত্রে আপডেট করুন।
- কাজের আদেশ তৈরি করুন।
- ওয়েব পরিষেবাগুলির সাথে প্রমাণীকরণ করুন৷
ডেটা গ্রহণ কিভাবে কাজ করে
একটি চ্যাট অ্যাপ ব্যবহারকারীর কাছে একটি ডায়ালগ বা কার্ড বার্তা হিসাবে তথ্য উপস্থাপন করে। এই উদাহরণে, একটি ডায়ালগ ব্যবহারকারীকে TextInput
এবং SelectionInput
উইজেট ব্যবহার করে একটি পরিচিতি সম্পর্কে তথ্য লিখতে বলে:
শেষ হয়ে গেলে, চ্যাট অ্যাপটি ব্যবহারকারীদের ডায়ালগে JSON ফর্ম্যাটে প্রবেশ করা ডেটা এবং একটি ইন্টারঅ্যাকশন ইভেন্ট পায় যেখানে:
-
EventType
হলCARD_CLICKED
। -
DialogEventType
হলSUBMIT_DIALOG
(শুধুমাত্র ডায়ালগের জন্য)।
ব্যবহারকারীরা কী ইনপুট করেছে সে সম্পর্কে ডেটা পেতে, ইভেন্ট পেলোডে Event.common.formInputs
ক্ষেত্রটি ব্যবহার করুন৷ formInputs
ক্ষেত্র হল একটি মানচিত্র যেখানে কীগুলি প্রতিটি উইজেটের জন্য নির্ধারিত স্ট্রিং আইডি এবং মানগুলি প্রতিটি উইজেটের জন্য ব্যবহারকারীর ইনপুট উপস্থাপন করে। বিভিন্ন অবজেক্ট বিভিন্ন ইনপুট ডেটা টাইপের প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, Event.common.formInputs.stringInputs
স্ট্রিং ইনপুট উপস্থাপন করে।
আপনার অ্যাপ event.common.formInputs. NAME .stringInputs.value[0]
, যেখানে NAME
হল একটি TextInput
উইজেটের name
ক্ষেত্র।
কার্ড থেকে তথ্য গ্রহণ
যখন কোনও ব্যবহারকারী কার্ডের বার্তায় ডেটা ইনপুট করেন, তখন আপনার চ্যাট অ্যাপ একটি চ্যাট অ্যাপ ইন্টারঅ্যাকশন ইভেন্ট পায়, যেমন নিম্নলিখিত উদাহরণ:
JSON
{
"type": enum (EventType),
"eventTime": string,
"threadKey": string,
"message": {
object (Message)
},
"user": {
object (User)
},
"space": {
object (Space)
},
"action": {
object (FormAction)
},
"configCompleteRedirectUrl": string,
"common": {
// Represents user data entered in a card.
"formInputs": {
// Represents user data entered for a specific field in a card.
"NAME": {
// Represents string data entered in a card, like text input fields
// and check boxes.
"stringInputs": {
// An array of strings entered by the user in a card.
"value": [
string
]
}
}
},
"parameters": {
string: string,
...
},
"invokedFunction": string
}
}
ডায়ালগ থেকে ডেটা গ্রহণ করুন
যখন একজন ব্যবহারকারী একটি ডায়ালগে ডেটা জমা দেন, তখন আপনার চ্যাট অ্যাপ আরেকটি চ্যাট অ্যাপ ইন্টারঅ্যাকশন ইভেন্ট পায়, যেমন নিম্নলিখিত উদাহরণ:
JSON
{
"type": enum (EventType),
"eventTime": string,
"threadKey": string,
"message": {
object (Message)
},
"user": {
object (User)
},
"space": {
object (Space)
},
"action": {
object (FormAction)
},
"configCompleteRedirectUrl": string,
// Indicates that this event is dialog-related.
"isDialogEvent": true,
// Indicates that a user clicked a button, and all data
// they entered in the dialog is included in Event.common.formInputs.
"dialogEventType": "SUBMIT_DIALOG",
"common": {
"userLocale": string,
"hostApp": enum (HostApp),
"platform": enum (Platform),
"timeZone": {
object (TimeZone)
},
// Represents user data entered in a dialog.
"formInputs": {
// Represents user data entered for a specific field in a dialog.
"NAME": {
// Represents string data entered in a dialog, like text input fields
// and check boxes.
"stringInputs": {
// An array of strings entered by the user in a dialog.
"value": [
string
]
}
}
},
"parameters": {
string: string,
...
},
"invokedFunction": string
}
}
একটি কার্ড বার্তা বা ডায়ালগ থেকে সংগৃহীত ডেটার উত্তর দিন
একটি কার্ড বার্তা বা ডায়ালগ থেকে ডেটা প্রাপ্তির পরে, চ্যাট অ্যাপটি হয় প্রাপ্তি স্বীকার করে বা একটি ত্রুটি ফেরত দিয়ে প্রতিক্রিয়া জানায়, উভয়ই একটি ActionResponse
ফেরত দিয়ে করা হয়:
- সফল প্রাপ্তি স্বীকার করতে, একটি
ActionResponse
প্যারামিটার দিয়ে প্রতিক্রিয়া জানান যার"actionStatus": "OK"
। - একটি ত্রুটি ফেরত দিতে, একটি
ActionResponse
প্যারামিটার দিয়ে সাড়া দিন যাতে"actionStatus": " ERROR MESSAGE "
।
উদাহরণ
নিচের উদাহরণটি একটি name
মানের উপস্থিতি পরীক্ষা করে। অনুপস্থিত থাকলে, অ্যাপটি একটি ত্রুটি ফেরত দেয়। উপস্থিত থাকলে, অ্যাপটি ফর্ম ডেটার প্রাপ্তি স্বীকার করে এবং ডায়ালগ বন্ধ করে দেয়।
Node.js
/**
* Checks for a form input error, the absence of
* a "name" value, and returns an error if absent.
* Otherwise, confirms successful receipt of a dialog.
*
* Confirms successful receipt of a dialog.
*
* @param {Object} event the event object from Chat API.
*
* @return {object} open a Dialog in Google Chat.
*/
function receiveDialog(event) {
// Checks to make sure the user entered a name
// in a dialog. If no name value detected, returns
// an error message.
if (event.common.formInputs.WIDGET_NAME.stringInputs.value[0] == "") {
res.json({
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "Don't forget to name your new contact!"
}
}
});
// Otherwise the app indicates that it received
// form data from the dialog. Any value other than "OK"
// gets returned as an error. "OK" is interpreted as
// code 200, and the dialog closes.
} else {
res.json({
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "OK"
}
}
});
}
}
অ্যাপস স্ক্রিপ্ট
এই উদাহরণ কার্ড JSON ফেরত দিয়ে একটি কার্ড বার্তা পাঠায়। আপনি Apps স্ক্রিপ্ট কার্ড পরিষেবাও ব্যবহার করতে পারেন৷
/**
* Checks for a form input error, the absence of
* a "name" value, and returns an error if absent.
* Otherwise, confirms successful receipt of a dialog.
*
* Confirms successful receipt of a dialog.
*
* @param {Object} event the event object from Chat API.
*
* @return {object} open a Dialog in Google Chat.
*/
function receiveDialog(event) {
// Checks to make sure the user entered a name
// in a dialog. If no name value detected, returns
// an error message.
if (event.common.formInputs.WIDGET_NAME[""].stringInputs.value[0] == "") {
return {
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "Don't forget to name your new contact!"
}
}
};
// Otherwise the app indicates that it received
// form data from the dialog. Any value other than "OK"
// gets returned as an error. "OK" is interpreted as
// code 200, and the dialog closes.
} else {
return {
"actionResponse": {
"type": "DIALOG",
"dialogAction": {
"actionStatus": "OK"
}
}
};
}
}
পাইথন
def receive_dialog(event: Mapping[str, Any]) -> Mapping[str, Any]:
"""Checks for a form input error, the absence of a "name" value, and returns
an error if absent. Otherwise, confirms successful receipt of a dialog.
Args:
event (Mapping[str, Any]): the event object from Chat API.
Returns:
Mapping[str, Any]: the response.
"""
if common := event.get('common'):
if form_inputs := common.get('formInputs'):
if contact_name := form_inputs.get('WIDGET_NAME'):
if string_inputs := contact_name.get('stringInputs'):
if name := string_inputs.get('value')[0]:
return {
'actionResponse': {
'type': 'DIALOG',
'dialogAction': {
'actionStatus': 'OK'
}
}
}
else:
return {
'actionResponse': {
'type': 'DIALOG',
'dialogAction': {
'actionStatus': 'Don\'t forget to name your new contact!'
}
}
}
সমস্যা সমাধান
যখন একটি Google চ্যাট অ্যাপ বা কার্ড একটি ত্রুটি ফেরত দেয়, তখন চ্যাট ইন্টারফেস "কিছু ভুল হয়েছে" বলে একটি বার্তা দেখায়। অথবা "আপনার অনুরোধ প্রক্রিয়া করতে অক্ষম।" কখনও কখনও চ্যাট UI কোনও ত্রুটি বার্তা প্রদর্শন করে না, তবে চ্যাট অ্যাপ বা কার্ড একটি অপ্রত্যাশিত ফলাফল তৈরি করে; উদাহরণস্বরূপ, একটি কার্ড বার্তা প্রদর্শিত নাও হতে পারে৷
যদিও একটি ত্রুটি বার্তা চ্যাট UI-তে প্রদর্শিত নাও হতে পারে, বর্ণনামূলক ত্রুটি বার্তা এবং লগ ডেটা উপলব্ধ রয়েছে যাতে আপনি যখন চ্যাট অ্যাপগুলির জন্য ত্রুটি লগিং চালু থাকে তখন ত্রুটিগুলি ঠিক করতে সহায়তা করে৷ দেখা, ডিবাগিং এবং ত্রুটিগুলি সংশোধন করতে সহায়তার জন্য, Google Chat ত্রুটিগুলি সমস্যা সমাধান এবং ঠিক করুন দেখুন৷