Google Chat-এ পরিচিতি সংগ্রহ ও পরিচালনা করুন

এই টিউটোরিয়ালে দেখানো হয়েছে কীভাবে একটি গুগল চ্যাট অ্যাপ তৈরি করতে হয়, যা গুগল চ্যাট ব্যবহারকারীদের তাদের ব্যক্তিগত এবং ব্যবসায়িক কন্টাক্টগুলো পরিচালনা করতে সাহায্য করে। তথ্য সংগ্রহের জন্য, চ্যাট অ্যাপটি কার্ড মেসেজ এবং ডায়ালগে ব্যবহারকারীদের একটি কন্টাক্ট ফর্ম পূরণ করতে বলে।

চ্যাট অ্যাপটি বাস্তবে দেখুন:

  • স্ল্যাশ কমান্ড থেকে যোগাযোগ ফর্ম।
    চিত্র ১। চ্যাট অ্যাপটি /about স্ল্যাশ কমান্ডের জবাবে একটি টেক্সট মেসেজ এবং একটি বাটন পাঠায়, যা একটি কন্টাক্ট ফর্ম খুলে দেয়।
  • ডায়ালগ বক্সে যোগাযোগ ফর্ম।
    চিত্র ২। চ্যাট অ্যাপটি একটি ডায়ালগ বক্স খোলে যেখানে ব্যবহারকারীরা কোনো পরিচিতি সম্পর্কে তথ্য প্রবেশ করাতে পারেন।
  • সংলাপটি নিশ্চিত ও পর্যালোচনা করুন।
    চিত্র ৩। চ্যাট অ্যাপটি একটি নিশ্চিতকরণ ডায়ালগ বক্স দেখায়, যাতে ব্যবহারকারীরা তথ্য জমা দেওয়ার আগে তা পর্যালোচনা ও নিশ্চিত করতে পারেন।
  • একটি টেক্সট মেসেজ যা নতুন যোগাযোগটি নিশ্চিত করে।
    চিত্র ৪। ব্যবহারকারী ফর্মটি জমা দেওয়ার পর, চ্যাট অ্যাপটি জমা নিশ্চিত করার জন্য একটি ব্যক্তিগত টেক্সট মেসেজ পাঠায়।
  • কার্ড বার্তা থেকে যোগাযোগ ফর্ম।
    চিত্র ৫। চ্যাট অ্যাপটি ব্যবহারকারীদেরকে মেসেজের মধ্যে থাকা কার্ড থেকে কোনো কন্ট্যাক্ট যোগ করতেও অনুরোধ জানায়।

পূর্বশর্ত

উদ্দেশ্য

স্থাপত্য

চ্যাট অ্যাপটি গুগল অ্যাপস স্ক্রিপ্টে তৈরি করা হয়েছে এবং এটি চ্যাট ব্যবহারকারীদের বার্তা প্রসেস ও তার উত্তর দেওয়ার জন্য ইন্টারঅ্যাকশন ইভেন্ট ব্যবহার করে।

নিচে দেখানো হলো একজন ব্যবহারকারী সাধারণত চ্যাট অ্যাপের সাথে কীভাবে যোগাযোগ করতে পারেন:

  1. একজন ব্যবহারকারী চ্যাট অ্যাপ দিয়ে একটি সরাসরি বার্তা খোলেন, অথবা বিদ্যমান কোনো স্পেসে চ্যাট অ্যাপটি যোগ করেন।

  2. চ্যাট অ্যাপটি একটি card অবজেক্ট হিসেবে কন্টাক্ট ফর্ম তৈরি ও প্রদর্শন করার মাধ্যমে ব্যবহারকারীকে একটি কন্টাক্ট যোগ করতে অনুরোধ জানায়। কন্টাক্ট ফর্মটি উপস্থাপন করার জন্য, চ্যাট অ্যাপটি ব্যবহারকারীদের নিম্নলিখিত উপায়ে সাড়া দেয়:

    • @মেনশন এবং সরাসরি বার্তার জবাবে একটি কার্ড বার্তা পাঠানো হয়, যেটিতে যোগাযোগ ফর্মটি থাকে।
    • /addContact স্ল্যাশ কমান্ডের জবাবে কন্টাক্ট ফর্ম সহ একটি ডায়ালগ খোলে।
    • /about স্ল্যাশ কমান্ডের জবাবে একটি টেক্সট মেসেজ পাঠানো হয়, যেটিতে একটি ‘Add a contact’ বাটন থাকে। ব্যবহারকারীরা এই বাটনটিতে ক্লিক করে কন্টাক্ট ফর্মসহ একটি ডায়ালগ বক্স খুলতে পারেন।
  3. যোগাযোগ ফর্মটি প্রদর্শিত হলে, ব্যবহারকারী নিম্নলিখিত ফিল্ড এবং উইজেটগুলিতে যোগাযোগের তথ্য ইনপুট করেন:

    • প্রথম ও শেষ নাম : একটি textInput উইজেট যা স্ট্রিং গ্রহণ করে।
    • জন্মতারিখ : একটি dateTimePicker উইজেট যা শুধুমাত্র তারিখ গ্রহণ করে।
    • যোগাযোগের ধরণ : রেডিও বাটনের একটি selectionInput উইজেট যা ব্যবহারকারীদের একটি একক স্ট্রিং মান ( Personal অথবা Work ) নির্বাচন ও জমা দিতে দেয়।
    • পর্যালোচনা ও জমা দেওয়ার বাটন: এটি একটি buttonList অ্যারে, যার মধ্যে button উইজেট রয়েছে। ব্যবহারকারী তার ইনপুট করা মানগুলো জমা দেওয়ার জন্য এই বাটনটিতে ক্লিক করেন।
  4. গুগল চ্যাট অ্যাপ ব্যবহারকারীর ইনপুট করা মানগুলো প্রসেস করার জন্য একটি CARD_CLICKED ইন্টার‍্যাকশন ইভেন্ট পরিচালনা করে এবং সেই মানগুলো একটি কনফার্মেশন কার্ডে প্রদর্শন করে।

  5. ব্যবহারকারী নিশ্চিতকরণ কার্ডটি পর্যালোচনা করেন এবং যোগাযোগের তথ্য চূড়ান্ত করার জন্য সাবমিট বোতামে ক্লিক করেন।

  6. গুগল চ্যাট অ্যাপটি আবেদনটি নিশ্চিত করার জন্য একটি ব্যক্তিগত টেক্সট মেসেজ পাঠায়।

পরিবেশ প্রস্তুত করুন

এই অংশে দেখানো হয়েছে কীভাবে চ্যাট অ্যাপের জন্য একটি গুগল ক্লাউড প্রজেক্ট কনফিগার করতে হয়।

গুগল এপিআই কনসোলে আপনার ক্লাউড প্রজেক্টটি খুলুন।

যদি আগে থেকে খোলা না থাকে, তাহলে এই স্যাম্পলটির জন্য আপনি যে ক্লাউড প্রজেক্টটি ব্যবহার করতে চান সেটি খুলুন:

  1. গুগল এপিআই কনসোলে, 'প্রজেক্ট নির্বাচন করুন' পৃষ্ঠায় যান।

    একটি ক্লাউড প্রকল্প নির্বাচন করুন

  2. আপনি যে গুগল ক্লাউড প্রজেক্টটি ব্যবহার করতে চান, সেটি নির্বাচন করুন। অথবা, 'Create project'-এ ক্লিক করুন এবং স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন। আপনি যদি একটি গুগল ক্লাউড প্রজেক্ট তৈরি করেন, তাহলে প্রজেক্টটির জন্য বিলিং চালু করার প্রয়োজন হতে পারে।

প্রমাণীকরণ এবং অনুমোদন সেট আপ করুন

গুগল চ্যাট অ্যাপগুলির জন্য আপনাকে একটি OAuth সম্মতি স্ক্রিন কনফিগার করতে হবে, যাতে ব্যবহারকারীরা গুগল চ্যাট সহ গুগল ওয়ার্কস্পেস অ্যাপ্লিকেশনগুলিতে আপনার অ্যাপটিকে অনুমোদন করতে পারে।

এই টিউটোরিয়ালে, আপনি শুধুমাত্র পরীক্ষা এবং অভ্যন্তরীণ ব্যবহারের জন্য একটি চ্যাট অ্যাপ ডেপ্লয় করবেন, তাই কনসেন্ট স্ক্রিনের জন্য প্লেসহোল্ডার তথ্য ব্যবহার করা যেতে পারে। চ্যাট অ্যাপটি পাবলিশ করার আগে, যেকোনো প্লেসহোল্ডার তথ্য আসল তথ্য দিয়ে প্রতিস্থাপন করুন।

  1. Google API কনসোলে, > Google Auth প্ল্যাটফর্ম > ব্র্যান্ডিং- এ যান।

    ব্র্যান্ডিং-এ যান

  2. আপনি যদি ইতিমধ্যেই Google Auth প্ল্যাটফর্মটি কনফিগার করে থাকেন, তাহলে আপনি Branding , Audience , এবং Data Access- এ নিম্নলিখিত OAuth Consent Screen সেটিংস কনফিগার করতে পারেন। যদি আপনি এমন কোনো বার্তা দেখতে পান যেখানে লেখা আছে ‘Google Auth প্ল্যাটফর্ম এখনও কনফিগার করা হয়নি’ , তাহলে Get Started-এ ক্লিক করুন:

    1. অ্যাপ ইনফরমেশন-এর অধীনে, অ্যাপ নেম-এর জায়গায় Contact Manager টাইপ করুন।
    2. ব্যবহারকারী সহায়তা ইমেল- এ, আপনার ইমেল ঠিকানা অথবা একটি উপযুক্ত গুগল গ্রুপ নির্বাচন করুন।
    3. পরবর্তী ধাপে যান।
    4. Audience-এর অধীনে, Internal নির্বাচন করুন। যদি আপনি Internal নির্বাচন করতে না পারেন, তাহলে External নির্বাচন করুন।
    5. পরবর্তী ধাপে যান।
    6. যোগাযোগের তথ্যের অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে জানানো যাবে।
    7. পরবর্তী ধাপে যান।
    8. Finish-এর অধীনে, Google API Services ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে I agree to the Google API Services: User Data Policy নির্বাচন করুন।
    9. চালিয়ে যান-এ ক্লিক করুন।
    10. তৈরি করুন- এ ক্লিক করুন।
    11. যদি আপনি ব্যবহারকারীর ধরন হিসেবে 'এক্সটার্নাল' নির্বাচন করে থাকেন, তাহলে পরীক্ষামূলক ব্যবহারকারী যোগ করুন:
      1. দর্শকবৃন্দে ক্লিক করুন।
      2. টেস্ট ইউজার্স-এর অধীনে, অ্যাড ইউজার্স-এ ক্লিক করুন।
      3. আপনার ইমেল ঠিকানা এবং অন্য কোনো অনুমোদিত পরীক্ষামূলক ব্যবহারকারীর তথ্য প্রবেশ করান, তারপর সেভ-এ ক্লিক করুন।

চ্যাট অ্যাপ তৈরি এবং স্থাপন করুন

পরবর্তী অংশে, আপনি একটি সম্পূর্ণ অ্যাপস স্ক্রিপ্ট প্রজেক্ট কপি ও আপডেট করবেন, যেটিতে আপনার চ্যাট অ্যাপের জন্য প্রয়োজনীয় সমস্ত অ্যাপ্লিকেশন কোড রয়েছে, তাই প্রতিটি ফাইল কপি ও পেস্ট করার প্রয়োজন নেই।

চাইলে, আপনি গিটহাবে সম্পূর্ণ প্রজেক্টটি দেখতে পারেন।

গিটহাবে দেখুন

এখানে প্রতিটি ফাইলের একটি সংক্ষিপ্ত বিবরণ দেওয়া হলো:

main.gs

ব্যবহারকারীরা যখন চ্যাট অ্যাপে বার্তা পাঠান, চ্যাট অ্যাপের বার্তা থেকে বোতামে ক্লিক করেন, বা ডায়ালগ খোলেন ও বন্ধ করেন, সেই সম্পর্কিত ইন্টারঅ্যাকশন ইভেন্টগুলো সহ অ্যাপের সমস্ত লজিক পরিচালনা করে।

main.gs কোড দেখুন

apps-script/contact-form-app/main.gs
/**
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Responds to a MESSAGE interaction event in Google Chat.
 *
 * @param {Object} event the MESSAGE interaction event from Chat API.
 * @return {Object} message response that opens a dialog or sends private
 *                          message with text and card.
 */
function onMessage(event) {
  if (event.message.slashCommand) {
    switch (event.message.slashCommand.commandId) {
      case 1:
        // If the slash command is "/about", responds with a text message and button
        // that opens a dialog.
        return {
          text: "Manage your personal and business contacts 📇. To add a " +
                  "contact, use the slash command `/addContact`.",
          accessoryWidgets: [{
            buttonList: { buttons: [{
              text: "Add Contact",
              onClick: { action: {
                function: "openInitialDialog",
                interaction: "OPEN_DIALOG"
              }}
            }]}
          }]
        }
      case 2:
        // If the slash command is "/addContact", opens a dialog.
        return openInitialDialog();
    }
  }

  // If user sends the Chat app a message without a slash command, the app responds
  // privately with a text and card to add a contact.
  return {
    privateMessageViewer: event.user,
    text: "To add a contact, try `/addContact` or complete the form below:",
    cardsV2: [{
      cardId: "addContactForm",
      card: {
        header: { title: "Add a contact" },
        sections:[{ widgets: CONTACT_FORM_WIDGETS.concat([{
          buttonList: { buttons: [{
            text: "Review and submit",
            onClick: { action: { function : "openConfirmation" }}
          }]}
        }])}]
      }
    }]
  };
}

/**
 * Responds to CARD_CLICKED interaction events in Google Chat.
 *
 * @param {Object} event the CARD_CLICKED interaction event from Google Chat.
 * @return {Object} message responses specific to the dialog handling.
 */
function onCardClick(event) {
  // Initial dialog form page
  if (event.common.invokedFunction === "openInitialDialog") {
    return openInitialDialog();
  // Confirmation dialog form page
  } else if (event.common.invokedFunction === "openConfirmation") {
    return openConfirmation(event);
  // Submission dialog form page
  } else if (event.common.invokedFunction === "submitForm") {
    return submitForm(event);
  }
}

/**
 * Opens the initial step of the dialog that lets users add contact details.
 *
 * @return {Object} a message with an action response to open a dialog.
 */
function openInitialDialog() {
  return { actionResponse: {
    type: "DIALOG",
    dialogAction: { dialog: { body: { sections: [{
      header: "Add new contact",
      widgets: CONTACT_FORM_WIDGETS.concat([{
        buttonList: { buttons: [{
          text: "Review and submit",
          onClick: { action: { function: "openConfirmation" }}
        }]}
      }])
    }]}}}
  }};
}

/**
 * Returns the second step as a dialog or card message that lets users confirm details.
 *
 * @param {Object} event the interactive event with form inputs.
 * @return {Object} returns a dialog or private card message.
 */
function openConfirmation(event) {
  const name = fetchFormValue(event, "contactName") ?? "";
  const birthdate = fetchFormValue(event, "contactBirthdate") ?? "";
  const type = fetchFormValue(event, "contactType") ?? "";
  const cardConfirmation = {
    header: "Your contact",
    widgets: [{
      textParagraph: { text: "Confirm contact information and submit:" }}, {
      textParagraph: { text: "<b>Name:</b> " + name }}, {
      textParagraph: {
        text: "<b>Birthday:</b> " + convertMillisToDateString(birthdate)
      }}, {
      textParagraph: { text: "<b>Type:</b> " + type }}, {
      buttonList: { buttons: [{
        text: "Submit",
        onClick: { action: {
          function: "submitForm",
          parameters: [{
            key: "contactName", value: name }, {
            key: "contactBirthdate", value: birthdate }, {
            key: "contactType", value: type
          }]
        }}
      }]}
    }]
  };

  // Returns a dialog with contact information that the user input.
  if (event.isDialogEvent) {
    return { action_response: {
      type: "DIALOG",
      dialogAction: { dialog: { body: { sections: [ cardConfirmation ]}}}
    }};
  }

  // Updates existing card message with contact information that the user input.
  return {
    actionResponse: { type: "UPDATE_MESSAGE" },
    privateMessageViewer: event.user,
    cardsV2: [{
      card: { sections: [cardConfirmation]}
    }]
  }
}

/**
  * Validates and submits information from a dialog or card message
  * and notifies status.
  *
  * @param {Object} event the interactive event with parameters.
  * @return {Object} a message response that opens a dialog or posts a private
  *                  message.
  */
function submitForm(event) {
  const contactName = event.common.parameters["contactName"];
  // Checks to make sure the user entered a contact name.
  // If no name value detected, returns an error message.
  const errorMessage = "Don't forget to name your new contact!";
  if (!contactName && event.dialogEventType === "SUBMIT_DIALOG") {
    return { actionResponse: {
      type: "DIALOG",
      dialogAction: { actionStatus: {
        statusCode: "INVALID_ARGUMENT",
        userFacingMessage: errorMessage
      }}
    }};
  }
  if (!contactName) {
    return {
      privateMessageViewer: event.user,
      text: errorMessage
    };
  }

  // The Chat app indicates that it received form data from the dialog or card.
  // Sends private text message that confirms submission.
  const confirmationMessage = "✅ " + contactName + " has been added to your contacts.";
  if (event.dialogEventType === "SUBMIT_DIALOG") {
    return {
      actionResponse: {
        type: "DIALOG",
        dialogAction: { actionStatus: {
          statusCode: "OK",
          userFacingMessage: "Success " + contactName
        }}
      }
    };
  }
  return {
    actionResponse: { type: "NEW_MESSAGE" },
    privateMessageViewer: event.user,
    text: confirmationMessage
  };
}

/**
 * Extracts form input value for a given widget.
 *
 * @param {Object} event the CARD_CLICKED interaction event from Google Chat.
 * @param {String} widgetName a unique ID for the widget, specified in the widget's name field.
 * @returns the value inputted by the user, null if no value can be found.
 */
function fetchFormValue(event, widgetName) {
  const formItem = event.common.formInputs[widgetName][""];
  // For widgets that receive StringInputs data, the value input by the user.
  if (formItem.hasOwnProperty("stringInputs")) {
    const stringInput = event.common.formInputs[widgetName][""].stringInputs.value[0];
    if (stringInput != null) {
      return stringInput;
    }
  // For widgets that receive dateInput data, the value input by the user.
  } else if (formItem.hasOwnProperty("dateInput")) {
    const dateInput = event.common.formInputs[widgetName][""].dateInput.msSinceEpoch;
     if (dateInput != null) {
       return dateInput;
     }
  }

  return null;
}

/**
 * Converts date in milliseconds since epoch to user-friendly string.
 *
 * @param {Object} millis the milliseconds since epoch time.
 * @return {string} Display-friend date (English US).
 */
function convertMillisToDateString(millis) {
  const date = new Date(millis);
  const options = { year: 'numeric', month: 'long', day: 'numeric' };
  return date.toLocaleDateString('en-US', options);
}
contactForm.gs

এতে সেই উইজেটগুলো থাকে যেগুলো ব্যবহারকারীদের কাছ থেকে ফর্ম ডেটা গ্রহণ করে। এই ফর্ম ইনপুট উইজেটগুলো মেসেজ এবং ডায়ালগে প্রদর্শিত কার্ডের মধ্যে দেখানো হয়।

contactForm.gs কোড দেখুন

apps-script/contact-form-app/contactForm.gs
/**
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * The section of the contact card that contains the form input widgets. Used in a dialog and card message.
 * To add and preview widgets, use the Card Builder: https://addons.gsuite.google.com/uikit/builder
 */
const CONTACT_FORM_WIDGETS = [
  {
    "textInput": {
      "name": "contactName",
      "label": "First and last name",
      "type": "SINGLE_LINE"
    }
  },
  {
    "dateTimePicker": {
      "name": "contactBirthdate",
      "label": "Birthdate",
      "type": "DATE_ONLY"
    }
  },
  {
    "selectionInput": {
      "name": "contactType",
      "label": "Contact type",
      "type": "RADIO_BUTTON",
      "items": [
        {
          "text": "Work",
          "value": "Work",
          "selected": false
        },
        {
          "text": "Personal",
          "value": "Personal",
          "selected": false
        }
      ]
    }
  }
];
appsscript.json

অ্যাপস স্ক্রিপ্ট ম্যানিফেস্ট, যা চ্যাট অ্যাপের জন্য অ্যাপস স্ক্রিপ্ট প্রজেক্টকে সংজ্ঞায়িত ও কনফিগার করে।

appsscript.json কোড দেখুন

apps-script/contact-form-app/appsscript.json
{
  "timeZone": "America/Los_Angeles",
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "chat": {}
}

অ্যাপস স্ক্রিপ্ট প্রজেক্টটি তৈরি করুন

একটি অ্যাপস স্ক্রিপ্ট প্রজেক্ট তৈরি করতে:

  1. Google Chat Apps-এ পরিচিতি পরিচালনা (Manage contacts) স্ক্রিপ্ট প্রজেক্টটি খুলতে নিচের বোতামটিতে ক্লিক করুন।
    প্রকল্পটি খুলুন
  2. Overview-তে ক্লিক করুন।
  3. ওভারভিউ পৃষ্ঠায়, ক্লিক করুন অনুলিপি তৈরির আইকন একটি অনুলিপি তৈরি করুন
  4. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের কপিটির নামকরণ করুন:

    1. Google Chat-এ ‘Manage contacts’-এর কপিতে ক্লিক করুন।

    2. প্রজেক্টের শিরোনামে , টাইপ করুন Contact Manager - Google Chat app

    3. রিনেম-এ ক্লিক করুন।

ভবিষ্যতে, আপনি যদি নির্দিষ্ট Google API ব্যবহার করতে বা আপনার অ্যাপ প্রকাশ করতে চান, তাহলে আপনাকে অবশ্যই আপনার ক্লাউড প্রজেক্টকে আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টের সাথে যুক্ত করতে হবে। এই নির্দেশিকার জন্য, আপনাকে তা করতে হবে না। আরও জানতে, Google ক্লাউড প্রজেক্ট নির্দেশিকা দেখুন।

একটি অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট তৈরি করুন

এখন যেহেতু সমস্ত কোড ঠিকঠাকভাবে বসানো হয়ে গেছে, অ্যাপস স্ক্রিপ্ট প্রজেক্টটি ডিপ্লয় করুন। গুগল ক্লাউডে চ্যাট অ্যাপটি কনফিগার করার সময় আপনি ডিপ্লয়মেন্ট আইডিটি ব্যবহার করবেন।

  1. অ্যাপস স্ক্রিপ্টে, চ্যাট অ্যাপের প্রজেক্টটি খুলুন।

    অ্যাপস স্ক্রিপ্টে যান

  2. Deploy > New deployment-এ ক্লিক করুন।

  3. যদি অ্যাড-অন আগে থেকে নির্বাচিত না থাকে, তাহলে 'টাইপ নির্বাচন করুন'- এর পাশে 'ডিপ্লয়মেন্ট টাইপস'-এ ক্লিক করুন। প্রজেক্ট সেটিংসের জন্য আইকন এবং অ্যাড-অন নির্বাচন করুন।

  4. Description অংশে এই ভার্সনটির জন্য একটি বিবরণ লিখুন, যেমন Test of Contact Manager

  5. ডিপ্লয়-এ ক্লিক করুন। অ্যাপস স্ক্রিপ্ট সফল ডিপ্লয়মেন্ট রিপোর্ট করে এবং একটি ডিপ্লয়মেন্ট আইডি প্রদান করে।

  6. ডিপ্লয়মেন্ট আইডি কপি করতে তে ক্লিক করুন এবং তারপর `Done`-এ ক্লিক করুন।

গুগল এপিআই কনসোলে চ্যাট অ্যাপটি কনফিগার করুন।

এই বিভাগে দেখানো হয়েছে কীভাবে আপনার চ্যাট অ্যাপ সম্পর্কিত তথ্য দিয়ে গুগল এপিআই কনসোলে গুগল চ্যাট এপিআই কনফিগার করতে হয়, যার মধ্যে আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্ট থেকে সদ্য তৈরি করা ডিপ্লয়মেন্টের আইডি-ও অন্তর্ভুক্ত থাকবে।

  1. Google API কনসোলে, মেনু এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা > গুগল চ্যাট এপিআই > কনফিগারেশন- এ ক্লিক করুন

    চ্যাট এপিআই কনফিগারেশনে যান

  2. 'এই চ্যাট অ্যাপটিকে একটি গুগল ওয়ার্কস্পেস অ্যাড-অন হিসাবে তৈরি করুন ' বিকল্পটি থেকে টিক চিহ্ন তুলে দিন। নিশ্চিত করার জন্য একটি ডায়ালগ বক্স খুলবে। ডায়ালগ বক্সে, 'অক্ষম করুন' (Disable) বোতামে ক্লিক করুন।

  3. অ্যাপের নামে , Contact Manager টাইপ করুন।

  4. Avatar URL-https://developers.google.com/chat/images/contact-icon.png টাইপ করুন।

  5. Description-Manage your personal and business contacts টাইপ করুন।

  6. ইন্টারেক্টিভ ফিচার সক্ষম করুন টগলটি অন অবস্থানে ক্লিক করুন।

  7. Functionality-এর অধীনে, Join spaces and group conversations নির্বাচন করুন।

  8. সংযোগ সেটিংস-এর অধীনে, অ্যাপস স্ক্রিপ্ট নির্বাচন করুন।

  9. Deployment ID-এর জায়গায়, আগের অংশে অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট তৈরি করার সময় কপি করা অ্যাপস স্ক্রিপ্ট ডিপ্লয়মেন্ট আইডি-টি পেস্ট করুন।

  10. Commands-এর অধীনে, /about এবং /addContact স্ল্যাশ কমান্ডগুলো সেট আপ করুন:

    1. প্রথম স্ল্যাশ কমান্ডটি সেট আপ করতে ‘Add a slash command’- এ ক্লিক করুন।
    2. Name- এর জায়গায় About টাইপ করুন।
    3. কমান্ড আইডিতে 1 টাইপ করুন।
    4. Description- এ টাইপ করুন, Learn how to use this Chat app to manage your contacts
    5. কমান্ড টাইপ-এর অধীনে, Slash command নির্বাচন করুন।
    6. স্ল্যাশ কমান্ডের নামে , /about টাইপ করুন।
    7. নির্বাচন করলে একটি ডায়ালগ বক্স খোলে
    8. সম্পন্ন ক্লিক করুন।
    9. আরেকটি স্ল্যাশ কমান্ড সেট আপ করতে ‘অ্যাড আ কমান্ড’-এ ক্লিক করুন।
    10. Name- এর জায়গায় Add a contact টাইপ করুন।
    11. কমান্ড আইডিতে 2 টাইপ করুন।
    12. বিবরণ অংশে, Submit information about a contact টাইপ করুন।
    13. কমান্ড টাইপ-এর অধীনে, Slash command নির্বাচন করুন।
    14. স্ল্যাশ কমান্ডের নামে , /addContact টাইপ করুন।
    15. নির্বাচন করলে একটি ডায়ালগ বক্স খোলে
    16. সম্পন্ন ক্লিক করুন।
  11. ভিজিবিলিটি- এর অধীনে, YOUR DOMAIN নির্দিষ্ট ব্যক্তি ও গোষ্ঠীর জন্য এই চ্যাট অ্যাপটি উপলব্ধ করুন’ চেকবক্সটি নির্বাচন করুন এবং আপনার ইমেল ঠিকানা লিখুন।

  12. লগস-এর অধীনে, ত্রুটি লগ করার বিকল্পটি লগিং-এ নির্বাচন করুন।

  13. সংরক্ষণ করুন- এ ক্লিক করুন। কনফিগারেশন সংরক্ষিত হয়েছে এমন একটি বার্তা প্রদর্শিত হবে।

চ্যাট অ্যাপটি চ্যাটে ইনস্টল ও পরীক্ষা করার জন্য প্রস্তুত।

চ্যাট অ্যাপটি পরীক্ষা করুন

আপনার চ্যাট অ্যাপটি পরীক্ষা করতে, চ্যাট অ্যাপটি দিয়ে একটি ডিরেক্ট মেসেজ স্পেস খুলুন এবং একটি মেসেজ পাঠান:

  1. বিশ্বস্ত পরীক্ষক হিসেবে নিজেকে যুক্ত করার সময় আপনি যে Google Workspace অ্যাকাউন্টটি দিয়েছিলেন, সেটি ব্যবহার করে Google Chat খুলুন।

    গুগল চ্যাটে যান

  2. নতুন চ্যাট -এ ক্লিক করুন।
  3. ‘এক বা একাধিক ব্যক্তি যোগ করুন’ ফিল্ডে আপনার চ্যাট অ্যাপের নামটি টাইপ করুন।
  4. ফলাফল থেকে আপনার চ্যাট অ্যাপটি বেছে নিন। একটি সরাসরি বার্তা খুলে যাবে।

  1. চ্যাট অ্যাপের নতুন ডাইরেক্ট মেসেজে, /addContact টাইপ করুন এবং এন্টার চাপুন।

  2. যে ডায়ালগ বক্সটি খুলবে, সেখানে যোগাযোগের তথ্য প্রবেশ করান:

    1. প্রথম ও শেষ নামের টেক্সট ফিল্ডে একটি নাম লিখুন।
    2. জন্মতারিখ বাছাই করার স্থান থেকে একটি তারিখ নির্বাচন করুন।
    3. যোগাযোগের ধরনের অধীনে, কর্মক্ষেত্র বা ব্যক্তিগত রেডিও বোতামটি নির্বাচন করুন।
  3. পর্যালোচনা করুন এবং জমা দিন-এ ক্লিক করুন।

  4. নিশ্চিতকরণ ডায়ালগে, আপনার জমা দেওয়া তথ্যগুলো পর্যালোচনা করুন এবং 'জমা দিন' (Submit) বোতামে ক্লিক করুন। চ্যাট অ্যাপটি একটি টেক্সট মেসেজের মাধ্যমে উত্তর দেবে, যেখানে লেখা থাকবে: CONTACT NAME has been added to your contacts.

  5. ঐচ্ছিকভাবে, আপনি নিম্নলিখিত উপায়েও যোগাযোগ ফর্মটি পরীক্ষা ও জমা দিতে পারেন:

    • /about স্ল্যাশ কমান্ডটি ব্যবহার করুন। চ্যাট অ্যাপটি একটি টেক্সট মেসেজ এবং Add a contact লেখা একটি অ্যাক্সেসরি উইজেট বাটন দিয়ে উত্তর দেয়। আপনি বাটনটিতে ক্লিক করে কন্টাক্ট ফর্মসহ একটি ডায়ালগ বক্স খুলতে পারেন।
    • স্ল্যাশ কমান্ড ছাড়া চ্যাট অ্যাপে একটি সরাসরি বার্তা পাঠান, যেমন Hello । চ্যাট অ্যাপটি একটি টেক্সট এবং একটি কার্ড দিয়ে উত্তর দেয়, যেটিতে যোগাযোগ ফর্মটি থাকে।

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে কোনো চার্জ হওয়া এড়াতে, আমরা আপনাকে ক্লাউড প্রজেক্টটি ডিলিট করে দেওয়ার পরামর্শ দিচ্ছি।

  1. Google API Console-এ, Manage resources পেজে যান। Menu > IAM & Admin > Manage Resources-এ করুন।

    রিসোর্স ম্যানেজারে যান

  2. প্রজেক্ট তালিকা থেকে আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর 'মুছে ফেলুন বোতামে ক্লিক করুন।
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।