مخاطبین را در Google Chat جمع آوری و مدیریت کنید

این آموزش نحوه ساخت یک برنامه Google Chat را نشان می دهد که به کاربران چت Google کمک می کند تا مخاطبین شخصی و تجاری خود را مدیریت کنند. برای جمع‌آوری اطلاعات، برنامه چت از کاربران می‌خواهد فرم تماس را در پیام‌های کارت و گفتگوها تکمیل کنند.

برنامه چت را در عمل ببینید:

  • فرم تماس از دستور اسلش.
    شکل 1. برنامه Chat با یک پیام متنی و دکمه ای که فرم تماس را باز می کند به دستور اسلش /about پاسخ می دهد.
  • فرم تماس در یک گفتگو.
    شکل 2. برنامه Chat یک گفتگو را باز می کند که در آن کاربران می توانند اطلاعات مربوط به یک مخاطب را وارد کنند.
  • گفتگو را تأیید و مرور کنید.
    شکل 3. برنامه Chat یک گفتگوی تأیید را برمی‌گرداند تا کاربران بتوانند اطلاعات را قبل از ارسال بررسی و تأیید کنند.
  • یک پیام متنی که مخاطب جدید را تأیید می کند.
    شکل 4. پس از ارسال فرم توسط کاربر، برنامه چت یک پیام متنی خصوصی برای تایید ارسال ارسال می کند.
  • فرم تماس از پیام کارت.
    شکل 5. برنامه چت همچنین از کاربران می خواهد که یک مخاطب را از کارت در یک پیام اضافه کنند.

پیش نیازها

اهداف

معماری

برنامه Chat در Google Apps Script ساخته شده است و از رویدادهای تعامل برای پردازش و پاسخ به کاربران چت استفاده می کند.

موارد زیر نشان می‌دهد که کاربر معمولاً چگونه می‌تواند با برنامه چت تعامل داشته باشد:

  1. کاربر یک پیام مستقیم را با برنامه Chat باز می کند یا برنامه Chat را به فضای موجود اضافه می کند.

  2. برنامه چت از کاربر می خواهد با ساختن و نمایش یک فرم تماس به عنوان یک شی card ، یک مخاطب اضافه کند. برای ارائه فرم تماس، اپلیکیشن چت به روش های زیر به کاربران پاسخ می دهد:

    • با یک پیام کارتی که حاوی فرم تماس است به @ نامگذاری و پیام‌های مستقیم پاسخ می‌دهد.
    • با باز کردن یک گفتگو با فرم تماس، به دستور اسلش /addContact پاسخ می دهد.
    • به دستور اسلش /about با یک پیام متنی پاسخ می‌دهد که دارای دکمه افزودن تماس است که کاربران می‌توانند روی آن کلیک کنند تا یک گفتگو با فرم تماس باز شود.
  3. هنگامی که با فرم تماس ارائه می شود، کاربر اطلاعات تماس را در فیلدها و ابزارک های زیر وارد می کند:

    • نام و نام خانوادگی : ویجت textInput که رشته ها را می پذیرد.
    • تاریخ تولد : ویجت dateTimePicker که فقط تاریخ ها را می پذیرد.
    • نوع تماس : ویجت selectionInput از دکمه‌های رادیویی که به کاربران امکان می‌دهد یک مقدار رشته واحد ( Personal یا Work ) را انتخاب و ارسال کنند.
    • دکمه بازبینی و ارسال : آرایه buttonList با ویجت button که کاربر برای ارسال مقادیری که وارد می‌کند روی آن کلیک می‌کند.
  4. برنامه Google Chat یک رویداد تعاملی CARD_CLICKED را برای پردازش مقادیری که کاربر وارد می‌کند مدیریت می‌کند و مقادیر را در کارت تأیید نمایش می‌دهد.

  5. کاربر کارت تایید را بررسی کرده و روی دکمه ارسال کلیک می کند تا اطلاعات تماس نهایی شود.

  6. برنامه Google Chat یک پیام متنی خصوصی ارسال می کند که ارسال را تأیید می کند.

محیط را آماده کنید

این بخش نحوه ایجاد و پیکربندی یک پروژه Google Cloud را برای برنامه Chat نشان می دهد.

یک پروژه Google Cloud ایجاد کنید

کنسول Google Cloud

  1. در کنسول Google Cloud، به منو > IAM & Admin > ایجاد پروژه بروید.

    به Create a Project بروید

  2. در قسمت Project Name یک نام توصیفی برای پروژه خود وارد کنید.

    اختیاری: برای ویرایش شناسه پروژه ، روی ویرایش کلیک کنید. شناسه پروژه پس از ایجاد پروژه قابل تغییر نیست، بنابراین شناسه ای را انتخاب کنید که نیازهای شما را برای طول عمر پروژه برآورده کند.

  3. در قسمت Location ، روی Browse کلیک کنید تا مکان های احتمالی پروژه شما نمایش داده شود. سپس، روی انتخاب کلیک کنید.
  4. روی ایجاد کلیک کنید. کنسول Google Cloud به صفحه داشبورد می رود و پروژه شما در عرض چند دقیقه ایجاد می شود.

gcloud CLI

در یکی از محیط‌های توسعه زیر، به Google Cloud CLI ( gcloud ) دسترسی پیدا کنید:

  • Cloud Shell : برای استفاده از ترمینال آنلاین با Gcloud CLI که قبلاً راه اندازی شده است، Cloud Shell را فعال کنید.
    Cloud Shell را فعال کنید
  • Local Shell : برای استفاده از یک محیط توسعه محلی، gcloud CLI را نصب و مقداردهی اولیه کنید .
    برای ایجاد یک پروژه Cloud، از دستور gcloud projects create استفاده کنید:
    gcloud projects create PROJECT_ID
    با تنظیم شناسه پروژه ای که می خواهید ایجاد کنید، PROJECT_ID جایگزین کنید.

احراز هویت و مجوز را تنظیم کنید

برنامه‌های گپ Google از شما می‌خواهند صفحه رضایت OAuth را پیکربندی کنید تا کاربران بتوانند برنامه شما را در برنامه‌های Google Workspace از جمله Google Chat مجوز دهند.

در این آموزش، یک برنامه چت را اجرا می‌کنید که فقط برای آزمایش و استفاده داخلی است، بنابراین استفاده از اطلاعات مکان‌نما برای صفحه رضایت اشکالی ندارد. قبل از انتشار برنامه چت، اطلاعات مربوط به مکان نگهدارنده را با اطلاعات واقعی جایگزین کنید.

  1. در کنسول Google Cloud، به منو > APIs & Services > صفحه رضایت OAuth بروید.

    به صفحه رضایت OAuth بروید

  2. در قسمت User type ، Internal را انتخاب کنید، سپس روی Create کلیک کنید.

  3. در نام برنامه ، Contact Manager تایپ کنید.

  4. در ایمیل پشتیبانی کاربر ، آدرس ایمیل یا یک گروه Google مناسب را انتخاب کنید.

  5. در قسمت اطلاعات تماس برنامه‌نویس ، آدرس ایمیل خود را وارد کنید.

  6. روی ذخیره و ادامه کلیک کنید.

  7. در صفحه Scopes ، روی Save and Continue کلیک کنید. (برنامه چت به هیچ محدوده OAuth نیاز ندارد.)

  8. خلاصه را مرور کنید و سپس روی بازگشت به داشبورد کلیک کنید.

برنامه Chat را ایجاد و اجرا کنید

در بخش زیر، کل پروژه Apps Script را کپی کرده و به‌روزرسانی می‌کنید که حاوی تمام کدهای برنامه مورد نیاز برای برنامه چت شما است، بنابراین نیازی به کپی و جای‌گذاری هر فایل نیست.

به صورت اختیاری، می توانید کل پروژه را در GitHub مشاهده کنید.

در GitHub مشاهده کنید

در اینجا یک نمای کلی از هر فایل آورده شده است:

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: "openDialog",
              interaction: "OPEN_DIALOG"
            }}
          }]}}]
        }
      case 2:
        // If the slash command is "/addContact", opens a dialog.
        return openDialog(event);
    }
  }

  // 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 : "openNextCard" }}
          }]}
        }])}]
      }
    }]
  };
}

/**
 * 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 === "openDialog") {
    return openDialog(event);
  // Second dialog form page
  } else if (event.common.invokedFunction === "openNextCard") {
    return openNextCard(
      event.user,
      fetchFormValue(event, "contactName"),
      fetchFormValue(event, "contactBirthdate"),
      fetchFormValue(event, "contactType"),
      event.isDialogEvent
    );
  // Dialog form submission
  } else if (event.common.invokedFunction === "submitForm") {
    const userInputs = event.common.parameters;
    return submitForm(event.user, userInputs, event.dialogEventType);
  }
}

/**
 * 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;
}

/**
 * Opens a dialog that prompts users to add details about a contact.
 *
 * @return {Object} a message with an action response to open a dialog.
 */
function openDialog() {
  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: "openNextCard" }}
        }]}
      }])
    }]}}}
  }};
}

/**
 * Returns a dialog or card message that displays a confirmation of contact
 * details before users submit.
 *
 * @param {String} user the user who submitted the information.
 * @param {String} contactName the contact name from the previous dialog or card.
 * @param {String} contactBirthdate the birthdate from the previous dialog or card.
 * @param {String} contactType the contact type from the previous dialog or card.
 * @param {boolean} fromDialog whether the information was submitted from a dialog.
 *
 * @return {Object} returns a dialog or private card message.
 */
function openNextCard(user, contactName, contactBirthdate, contactType, fromDialog) {
  const name = contactName ?? "<i>Not provided</i>";
  const birthdate = contactBirthdate ?? "<i>Not provided</i>";
  const type = contactType ?? "<i>Not provided</i>";
  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 (fromDialog) {
    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: user,
    cardsV2: [{
      card: { sections: [cardConfirmation]}
    }]
  }
}

/**
  * Submits information from a dialog or card message.
  *
  * @param {Object} user the person who submitted the information.
  * @param {Object} userInputs the form input values from event parameters.
  * @param {boolean} dialogEventType "SUBMIT_DIALOG" if from a dialog.
  * @return {Object} a message response that opens a dialog or posts a private
  *                  message.
  */
function submitForm(user, userInputs, dialogEventType) {
  const contactName = userInputs["contactName"];
  // Checks to make sure the user entered a contact name.
  // If no name value detected, returns an error message.
  if (!contactName) {
    const errorMessage = "Don't forget to name your new contact!";
    if (dialogEventType === "SUBMIT_DIALOG") {
      return { actionResponse: {
        type: "DIALOG",
        dialogAction: { actionStatus: {
          statusCode: "INVALID_ARGUMENT",
          userFacingMessage: errorMessage
        }}
      }};
    } else {
      return {
        privateMessageViewer: 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 (dialogEventType === "SUBMIT_DIALOG") {
    return {
      actionResponse: {
        type: "NEW_MESSAGE",
        dialogAction: { actionStatus: {
          statusCode: "OK",
          userFacingMessage: "Success " + JSON.stringify(contactName)
        }}
      },
      privateMessageViewer: user,
      text: confirmationMessage
    }
  } else {
    return {
      actionResponse: { type: "NEW_MESSAGE" },
      privateMessageViewer: user,
      text: confirmationMessage
    };
  }
}

/**
 * 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

مانیفست Apps Script که پروژه Apps Script را برای برنامه Chat تعریف و پیکربندی می‌کند.

کد appsscript.json را مشاهده کنید

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

شماره و شناسه پروژه Cloud خود را پیدا کنید

  1. در کنسول Google Cloud، به پروژه Cloud خود بروید.

    به کنسول Google Cloud بروید

  2. روی Settings and Utilities > تنظیمات پروژه کلیک کنید.

  3. به مقادیر موجود در قسمت Project number و Project ID توجه کنید. شما از آنها در بخش های زیر استفاده می کنید.

پروژه Apps Script را ایجاد کنید

برای ایجاد یک پروژه Apps Script و اتصال آن به پروژه Cloud:

  1. روی دکمه زیر کلیک کنید تا پروژه مدیریت مخاطبین در Google Chat Apps Script باز شود.
    پروژه را باز کنید
  2. روی نمای کلی کلیک کنید.
  3. در صفحه نمای کلی، کلیک کنید نماد ایجاد یک کپی یک کپی تهیه کنید .
  4. کپی پروژه Apps Script خود را نام ببرید:

    1. روی کپی مدیریت مخاطبین در گپ Google کلیک کنید.

    2. در عنوان پروژه ، Contact Manager - Google Chat app تایپ کنید

    3. روی تغییر نام کلیک کنید.

پروژه Cloud پروژه Apps Script را تنظیم کنید

  1. در پروژه Apps Script خود، کلیک کنید نماد تنظیمات پروژه تنظیمات پروژه
  2. در پروژه Google Cloud Platform (GCP) ، روی تغییر پروژه کلیک کنید.
  3. در شماره پروژه GCP ، شماره پروژه پروژه Cloud خود را جای‌گذاری کنید.
  4. روی تنظیم پروژه کلیک کنید. پروژه Cloud و پروژه Apps Script اکنون متصل هستند.

یک استقرار اسکریپت Apps ایجاد کنید

اکنون که همه کدها در جای خود هستند، پروژه Apps Script را اجرا کنید. وقتی برنامه Chat را در Google Cloud پیکربندی می‌کنید، از شناسه استقرار استفاده می‌کنید.

  1. در Apps Script، پروژه برنامه Chat را باز کنید.

    به Apps Script بروید

  2. روی Deploy > New Deployment کلیک کنید.

  3. اگر افزونه قبلاً انتخاب نشده است، در کنار انتخاب نوع ، روی انواع استقرار کلیک کنید نماد تنظیمات پروژه و Add-on را انتخاب کنید.

  4. در توضیحات ، توضیحاتی را برای این نسخه وارد کنید، مانند Test of Contact Manager .

  5. روی Deploy کلیک کنید. Apps Script استقرار موفقیت آمیز را گزارش می دهد و یک شناسه استقرار ارائه می دهد.

  6. روی Copy کلیک کنید تا شناسه استقرار کپی شود و سپس روی Done کلیک کنید.

برنامه چت را در کنسول Google Cloud پیکربندی کنید

این بخش نحوه پیکربندی Google Chat API را در کنسول Google Cloud با اطلاعاتی درباره برنامه Chat خود، از جمله شناسه پیاده‌سازی که به تازگی از پروژه Apps Script خود ایجاد کرده‌اید، نشان می‌دهد.

  1. در کنسول Google Cloud، > محصولات بیشتر > Google Workspace > کتابخانه محصول > Google Chat API > مدیریت > پیکربندی کلیک کنید.

    به تنظیمات Chat API بروید

  2. در نام برنامه ، Contact Manager تایپ کنید.

  3. در URL آواتار ، https://developers.google.com/chat/images/contact-icon.png را تایپ کنید.

  4. در توضیحات ، Manage your personal and business contacts تایپ کنید.

  5. روی گزینه فعال کردن ویژگی های تعاملی در موقعیت روشن کلیک کنید.

  6. در بخش عملکرد ، کادرهای انتخاب دریافت پیام‌های 1:1 و پیوستن به فضاها و مکالمات گروهی را انتخاب کنید.

  7. در قسمت تنظیمات اتصال ، Apps Script را انتخاب کنید.

  8. در Deployment ID ، Apps Script Deployment ID را که در بخش قبلی هنگام ایجاد استقرار Apps Script کپی کردید، جای‌گذاری کنید.

  9. در زیر دستورات اسلش ، دستورات اسلش /about و /addContact را تنظیم کنید:

    1. برای تنظیم اولین دستور اسلش روی Add a slash کلیک کنید.
    2. در نام ، /about تایپ کنید.
    3. در Command ID 1 تایپ کنید.
    4. در توضیحات ، Learn how to use this Chat app to manage your contacts تایپ کنید.
    5. باز کردن یک گفتگو را انتخاب کنید.
    6. روی Done کلیک کنید.
    7. برای تنظیم دستور اسلش دیگر روی Add a Slash کلیک کنید.
    8. در Name ، /addContact تایپ کنید
    9. در Command ID 2 را تایپ کنید.
    10. در توضیحات ، Submit information about a contact تایپ کنید.
    11. باز کردن یک گفتگو را انتخاب کنید.
    12. روی Done کلیک کنید.
  10. در قسمت Visibility ، گزینه Make this Chat app برای افراد و گروه‌های خاص در YOUR DOMAIN را انتخاب کنید و آدرس ایمیل خود را وارد کنید.

  11. در زیر گزارش‌ها ، Log errors to Logging را انتخاب کنید.

  12. روی ذخیره کلیک کنید. یک پیام پیکربندی ذخیره شده ظاهر می شود.

برنامه چت آماده نصب و تست در چت است.

برنامه چت را تست کنید

برای آزمایش برنامه چت خود، یک فضای پیام مستقیم با برنامه چت باز کنید و یک پیام ارسال کنید:

  1. Google Chat را با استفاده از حساب Google Workspace که هنگام اضافه کردن خود به عنوان آزمایش‌کننده معتمد ارائه کرده‌اید، باز کنید.

    به Google Chat بروید

  2. روی گپ جدید کلیک کنید.
  3. در قسمت افزودن 1 یا چند نفر ، نام برنامه چت خود را تایپ کنید.
  4. برنامه چت خود را از نتایج انتخاب کنید. یک پیام مستقیم باز می شود.

  1. در پیام مستقیم جدید با برنامه چت، /addContact تایپ کرده و enter را فشار دهید.

  2. در گفتگوی باز شده، اطلاعات تماس را وارد کنید:

    1. در قسمت نام و نام خانوادگی ، یک نام وارد کنید.
    2. در انتخابگر تاریخ تولد ، یک تاریخ را انتخاب کنید.
    3. در قسمت نوع تماس ، دکمه رادیویی Work یا Personal را انتخاب کنید.
  3. روی بررسی و ارسال کلیک کنید.

  4. در گفتگوی تأیید، اطلاعاتی را که ارسال کردید مرور کنید و روی ارسال کلیک کنید. برنامه چت با یک پیام متنی پاسخ می دهد که می گوید CONTACT NAME has been added to your contacts. .

  5. در صورت تمایل، می توانید فرم تماس را به روش های زیر نیز تست و ارسال کنید:

    • از دستور /about slash استفاده کنید. برنامه چت با یک پیام متنی و یک دکمه ابزارک جانبی که می‌گوید Add a contact پاسخ می‌دهد. می توانید روی دکمه کلیک کنید تا یک گفتگو با فرم تماس باز شود.
    • برای برنامه چت یک پیام مستقیم بدون دستور اسلش، مانند Hello ارسال کنید. برنامه چت با یک متن و کارت حاوی فرم تماس پاسخ می دهد.

پاک کن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، توصیه می کنیم پروژه Cloud را حذف کنید.

  1. در کنسول Google Cloud، به صفحه مدیریت منابع بروید. > IAM & Admin > Manage Resources کلیک کنید.

    به Resource Manager بروید

  2. در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و سپس روی حذف کلیک کنید.
  3. در گفتگو، ID پروژه را تایپ کنید و سپس بر روی Shut down کلیک کنید تا پروژه حذف شود.