Thu thập và quản lý danh bạ trong Google Chat

Hướng dẫn này cho biết cách tạo một ứng dụng Google Chat giúp người dùng Google Chat quản lý danh bạ cá nhân và doanh nghiệp. Để thu thập thông tin, ứng dụng Chat sẽ nhắc người dùng hoàn tất biểu mẫu liên hệ trong tin nhắn dạng thẻ và hộp thoại.

Xem cách hoạt động của ứng dụng Chat:

  • Biểu mẫu liên hệ từ lệnh dấu gạch chéo.
    Hình 1. Ứng dụng Chat sẽ phản hồi lệnh dấu gạch chéo /about bằng một tin nhắn văn bản và nút mở biểu mẫu liên hệ.
  • Biểu mẫu liên hệ trong hộp thoại.
    Hình 2. Ứng dụng Chat sẽ mở một hộp thoại để người dùng có thể nhập thông tin về một người liên hệ.
  • Hộp thoại xác nhận và xem lại.
    Hình 3. Ứng dụng Chat sẽ trả về một hộp thoại xác nhận để người dùng có thể xem xét và xác nhận thông tin trước khi gửi.
  • Một tin nhắn văn bản xác nhận người liên hệ mới.
    Hình 4. Sau khi người dùng gửi biểu mẫu, ứng dụng Chat sẽ gửi một tin nhắn văn bản riêng tư để xác nhận việc gửi.
  • Biểu mẫu liên hệ trong tin nhắn dạng thẻ.
    Hình 5. Ứng dụng Chat cũng nhắc người dùng thêm một người liên hệ từ thẻ trong tin nhắn.

Điều kiện tiên quyết

Mục tiêu

Kiến trúc

Ứng dụng Chat được xây dựng bằng Google Apps Script và sử dụng sự kiện tương tác để xử lý và phản hồi người dùng Chat.

Sau đây là cách người dùng thường tương tác với ứng dụng Chat:

  1. Người dùng mở một tin nhắn trực tiếp bằng ứng dụng Chat hoặc thêm ứng dụng Chat vào một không gian hiện có.

  2. Ứng dụng Chat nhắc người dùng thêm người liên hệ bằng cách tạo và hiển thị biểu mẫu liên hệ dưới dạng đối tượng card. Để trình bày biểu mẫu liên hệ, ứng dụng Chat sẽ phản hồi người dùng theo những cách sau:

    • Trả lời các lượt đề cập bằng @và tin nhắn trực tiếp bằng một tin nhắn dạng thẻ có chứa biểu mẫu liên hệ.
    • Phản hồi lệnh dấu gạch chéo /addContact bằng cách mở một hộp thoại có biểu mẫu liên hệ.
    • Phản hồi lệnh /about bằng một tin nhắn văn bản có nút Thêm người liên hệ mà người dùng có thể nhấp vào để mở hộp thoại có biểu mẫu liên hệ.
  3. Khi thấy biểu mẫu liên hệ, người dùng sẽ nhập thông tin liên hệ vào các trường và tiện ích sau:

    • Họ và tên: một tiện ích textInput chấp nhận các chuỗi.
    • Ngày sinh: một tiện ích dateTimePicker chỉ chấp nhận ngày.
    • Loại liên hệ: một tiện ích selectionInput gồm các nút chọn cho phép người dùng chọn và gửi một giá trị chuỗi duy nhất (Personal hoặc Work).
    • Nút Xem lại và gửi: một mảng buttonList có tiện ích button mà người dùng nhấp vào để gửi các giá trị mà họ nhập.
  4. Ứng dụng Google Chat xử lý một sự kiện tương tác CARD_CLICKED để xử lý các giá trị mà người dùng nhập và hiển thị các giá trị đó trong thẻ xác nhận.

  5. Người dùng xem lại thẻ xác nhận và nhấp vào nút Gửi để hoàn tất thông tin liên hệ.

  6. Ứng dụng Google Chat sẽ gửi một tin nhắn văn bản riêng tư để xác nhận việc gửi.

Chuẩn bị môi trường

Phần này hướng dẫn cách tạo và định cấu hình một dự án trên Google Cloud cho ứng dụng Chat.

Tạo một dự án trên Google Cloud

Bảng điều khiển Google Cloud

  1. Trong Google Cloud Console, hãy chuyển đến phần Trình đơn > IAM và Quản trị > Tạo dự án.

    Chuyển đến phần Tạo dự án

  2. Trong trường Tên dự án, hãy nhập tên mô tả cho dự án của bạn.

    Không bắt buộc: Để chỉnh sửa Mã dự án, hãy nhấp vào Chỉnh sửa. Bạn không thể thay đổi mã dự án sau khi tạo dự án, vì vậy, hãy chọn một mã dự án đáp ứng nhu cầu của bạn trong suốt thời gian tồn tại của dự án.

  3. Trong trường Location (Vị trí), hãy nhấp vào Browse (Duyệt xem) để hiện các vị trí tiềm năng cho dự án của bạn. Sau đó, hãy nhấp vào Chọn.
  4. Nhấp vào Tạo. Bảng điều khiển Google Cloud sẽ chuyển đến trang Tổng quan và dự án của bạn sẽ được tạo trong vòng vài phút.

gcloud CLI

Trong một trong các môi trường phát triển sau, hãy truy cập vào Google Cloud CLI (gcloud):

  • Cloud Shell: Để sử dụng một thiết bị đầu cuối trực tuyến đã thiết lập gcloud CLI, hãy kích hoạt Cloud Shell.
    Kích hoạt Cloud Shell
  • Local Shell: Để sử dụng môi trường phát triển cục bộ, hãy cài đặtkhởi động CLI gcloud.
    Để tạo một dự án trên Cloud, hãy dùng lệnh gcloud projects create:
    gcloud projects create PROJECT_ID
    Thay thế PROJECT_ID bằng cách đặt mã nhận dạng cho dự án mà bạn muốn tạo.

Thiết lập tính năng xác thực và uỷ quyền

Các ứng dụng Google Chat yêu cầu bạn định cấu hình một màn hình đồng ý OAuth để người dùng có thể uỷ quyền cho ứng dụng của bạn trong các ứng dụng Google Workspace, bao gồm cả Google Chat.

Trong hướng dẫn này, bạn sẽ triển khai một ứng dụng Chat chỉ dành cho mục đích kiểm thử và sử dụng nội bộ. Vì vậy, bạn có thể sử dụng thông tin giữ chỗ cho màn hình đồng ý. Trước khi xuất bản ứng dụng Chat, hãy thay thế mọi thông tin giữ chỗ bằng thông tin thực tế.

  1. Trong Google Cloud Console, hãy chuyển đến phần Trình đơn > > Thương hiệu.

    Chuyển đến phần Thương hiệu

  2. Nếu đã định cấu hình, bạn có thể định cấu hình các chế độ cài đặt sau đây cho Màn hình đồng ý OAuth trong Thương hiệu, Đối tượngQuyền truy cập vào dữ liệu. Nếu bạn thấy thông báo chưa được định cấu hình, hãy nhấp vào Bắt đầu:

    1. Trong phần App Information (Thông tin ứng dụng), trong phần App name (Tên ứng dụng), hãy nhập Contact Manager.
    2. Trong phần Email hỗ trợ người dùng, hãy chọn địa chỉ email của bạn hoặc một nhóm thích hợp trên Google.
    3. Nhấp vào Tiếp theo.
    4. Trong phần Đối tượng người xem, hãy chọn Nội bộ. Nếu bạn không chọn được Nội bộ, hãy chọn Bên ngoài.
    5. Nhấp vào Tiếp theo.
    6. Trong phần Thông tin liên hệ, hãy nhập Địa chỉ email để bạn có thể nhận được thông báo về mọi thay đổi đối với dự án của mình.
    7. Nhấp vào Tiếp theo.
    8. Trong phần Hoàn tất, hãy xem kỹ Chính sách dữ liệu người dùng của dịch vụ API của Google. Nếu bạn đồng ý, hãy chọn Tôi đồng ý với Chính sách dữ liệu người dùng của dịch vụ API của Google.
    9. Nhấp vào Tiếp tục.
    10. Nhấp vào Tạo.
    11. Nếu bạn chọn Bên ngoài cho loại người dùng, hãy thêm người dùng thử nghiệm:
      1. Nhấp vào Đối tượng.
      2. Trong phần Người dùng kiểm thử, hãy nhấp vào Thêm người dùng.
      3. Nhập địa chỉ email của bạn và mọi người dùng kiểm thử được uỷ quyền khác, sau đó nhấp vào Lưu.

Tạo và triển khai ứng dụng Chat

Trong phần sau, bạn sẽ sao chép và cập nhật toàn bộ dự án Apps Script chứa tất cả mã ứng dụng bắt buộc cho ứng dụng Chat của mình, nên bạn không cần sao chép và dán từng tệp.

Bạn có thể xem toàn bộ dự án trên GitHub (nếu muốn).

Xem trên GitHub

Sau đây là thông tin tổng quan về từng tệp:

main.gs

Xử lý mọi logic của ứng dụng, bao gồm cả các sự kiện tương tác về thời điểm người dùng gửi tin nhắn đến ứng dụng Chat, nhấp vào các nút trong tin nhắn của ứng dụng Chat hoặc mở và đóng hộp thoại.

Xem mã 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

Chứa các tiện ích nhận dữ liệu biểu mẫu từ người dùng. Các tiện ích đầu vào biểu mẫu này xuất hiện trong các thẻ xuất hiện trong tin nhắn và hộp thoại.

Xem mã 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

Tệp kê khai Apps Script xác định và định cấu hình dự án Apps Script cho ứng dụng Chat.

Xem mã appsscript.json

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

Tìm số và mã dự án trên Cloud

  1. Trong Google Cloud Console, hãy chuyển đến dự án trên Cloud.

    Chuyển đến bảng điều khiển Google Cloud

  2. Nhấp vào biểu tượng Cài đặt và tiện ích > Cài đặt dự án.

  3. Ghi lại các giá trị trong trường Số dự ánMã dự án. Bạn sẽ sử dụng các biến này trong các phần sau.

Tạo dự án Apps Script

Cách tạo một dự án Apps Script và kết nối dự án đó với dự án trên Cloud:

  1. Nhấp vào nút sau đây để mở dự án Quản lý danh bạ trong Google Chat Apps Script.
    Mở dự án
  2. Nhấp vào Tổng quan.
  3. Trên trang tổng quan, hãy nhấp vào biểu tượng Biểu tượng tạo bản sao Tạo bản sao.
  4. Đặt tên cho bản sao của dự án Apps Script:

    1. Nhấp vào Bản sao của Quản lý người liên hệ trong Google Chat.

    2. Trong phần Tiêu đề dự án, hãy nhập Contact Manager - Google Chat app

    3. Nhấp vào Đổi tên.

Đặt dự án Cloud cho dự án Apps Script

  1. Trong dự án Apps Script, hãy nhấp vào Biểu tượng cho chế độ cài đặt dự án Cài đặt dự án.
  2. Trong mục Dự án trên Google Cloud Platform (GCP), hãy nhấp vào Thay đổi dự án.
  3. Trong mục Số dự án trên GCP, hãy dán số dự án của dự án trên Cloud.
  4. Nhấp vào Đặt dự án. Dự án trên đám mây và dự án Apps Script hiện đã được kết nối.

Tạo một bản triển khai Apps Script

Giờ đây, khi tất cả mã đã được đặt đúng vị trí, hãy triển khai dự án Apps Script. Bạn sử dụng mã nhận dạng triển khai khi định cấu hình ứng dụng Chat trong Google Cloud.

  1. Trong Apps Script, hãy mở dự án của ứng dụng Chat.

    Chuyển đến Apps Script

  2. Nhấp vào Triển khai > Triển khai mới.

  3. Nếu bạn chưa chọn Tiện ích bổ sung, thì bên cạnh Chọn loại, hãy nhấp vào các loại triển khai Biểu tượng cho chế độ cài đặt dự án rồi chọn Tiện ích bổ sung.

  4. Trong phần Nội dung mô tả, hãy nhập nội dung mô tả cho phiên bản này, chẳng hạn như Test of Contact Manager.

  5. Nhấp vào Triển khai. Apps Script báo cáo việc triển khai thành công và cung cấp một mã nhận dạng triển khai.

  6. Nhấp vào Sao chép để sao chép mã nhận dạng lượt triển khai, rồi nhấp vào Xong.

Định cấu hình ứng dụng Chat trong Google Cloud Console

Phần này hướng dẫn cách định cấu hình Google Chat API trong bảng điều khiển Google Cloud bằng thông tin về ứng dụng Chat của bạn, bao gồm cả mã nhận dạng của bản triển khai mà bạn vừa tạo từ dự án Apps Script.

  1. Trong bảng điều khiển Google Cloud, hãy nhấp vào Trình đơn > Các sản phẩm khác > Google Workspace > Thư viện sản phẩm > Google Chat API > Quản lý > Cấu hình.

    Chuyển đến phần cấu hình Chat API

  2. Trong phần Tên ứng dụng, hãy nhập Contact Manager.

  3. Trong URL hình đại diện, hãy nhập https://developers.google.com/chat/images/contact-icon.png.

  4. Trong phần Nội dung mô tả, hãy nhập Manage your personal and business contacts.

  5. Nhấp vào nút bật/tắt Bật các tính năng tương tác để chuyển sang vị trí bật.

  6. Trong phần Chức năng, hãy chọn Tham gia không gian và cuộc trò chuyện nhóm.

  7. Trong phần Cài đặt kết nối, hãy chọn Apps Script.

  8. Trong Mã nhận dạng triển khai, hãy dán Mã nhận dạng triển khai Apps Script mà bạn đã sao chép trong phần trước khi tạo bản triển khai Apps Script.

  9. Trong phần Lệnh, hãy thiết lập các lệnh dấu gạch chéo /about/addContact:

    1. Nhấp vào Thêm lệnh dấu gạch chéo để thiết lập lệnh dấu gạch chéo đầu tiên.
    2. Trong Name (Tên), hãy nhập About.
    3. Trong Command ID (Mã lệnh), hãy nhập 1.
    4. Trong phần Nội dung mô tả, hãy nhập Learn how to use this Chat app to manage your contacts.
    5. Trong mục Loại lệnh, hãy chọn Slash command.
    6. Trong Slash command name (Tên lệnh dấu gạch chéo), hãy nhập /about.
    7. Chọn Mở hộp thoại.
    8. Nhấp vào Xong.
    9. Nhấp vào Thêm lệnh để thiết lập một lệnh dấu gạch chéo khác.
    10. Trong Name (Tên), hãy nhập Add a contact.
    11. Trong Command ID (Mã lệnh), hãy nhập 2.
    12. Trong phần Nội dung mô tả, hãy nhập Submit information about a contact.
    13. Trong mục Loại lệnh, hãy chọn Slash command.
    14. Trong Slash command name (Tên lệnh dấu gạch chéo), hãy nhập /addContact.
    15. Chọn Mở hộp thoại.
    16. Nhấp vào Xong.
  10. Trong phần Chế độ hiển thị, hãy chọn hộp đánh dấu Cho phép một số người và nhóm sử dụng ứng dụng Chat này trong YOUR DOMAIN rồi nhập địa chỉ email của bạn.

  11. Trong mục Nhật ký, hãy chọn Ghi lỗi vào Nhật ký.

  12. Nhấp vào Lưu. Thông báo cấu hình đã lưu sẽ xuất hiện.

Ứng dụng Chat đã sẵn sàng để cài đặt và kiểm thử trong Chat.

Kiểm thử ứng dụng Chat

Để kiểm thử ứng dụng Chat, hãy mở một không gian nhắn tin trực tiếp bằng ứng dụng Chat rồi gửi một tin nhắn:

  1. Mở Google Chat bằng tài khoản Google Workspace mà bạn đã cung cấp khi thêm chính mình làm người kiểm thử tin cậy.

    Truy cập vào Google Chat

  2. Nhấp vào biểu tượng Cuộc trò chuyện mới.
  3. Trong trường Thêm một hoặc nhiều người, hãy nhập tên của ứng dụng Chat.
  4. Chọn ứng dụng Chat trong kết quả. Một tin nhắn trực tiếp sẽ mở ra.

  1. Trong tin nhắn trực tiếp mới với ứng dụng Chat, hãy nhập /addContact rồi nhấn phím enter.

  2. Trong hộp thoại mở ra, hãy nhập thông tin liên hệ:

    1. Trong trường văn bản Họ và tên, hãy nhập tên.
    2. Trong bộ chọn ngày Ngày sinh, hãy chọn một ngày.
    3. Trong phần Loại thông tin liên hệ, hãy chọn nút chọn Nơi làm việc hoặc Cá nhân.
  3. Nhấp vào Xem lại và gửi.

  4. Trong hộp thoại xác nhận, hãy xem lại thông tin bạn đã gửi rồi nhấp vào Gửi. Ứng dụng Chat sẽ trả lời bằng một tin nhắn văn bản có nội dung CONTACT NAME has been added to your contacts..

  5. Ngoài ra, bạn cũng có thể kiểm thử và gửi biểu mẫu liên hệ theo những cách sau:

    • Sử dụng lệnh dấu gạch chéo /about. Ứng dụng nhắn tin trả lời bằng một tin nhắn văn bản và một nút tiện ích bổ sung có nội dung Add a contact. Bạn có thể nhấp vào nút này để mở hộp thoại có biểu mẫu liên hệ.
    • Gửi tin nhắn trực tiếp cho ứng dụng Chat mà không cần dùng lệnh dấu gạch chéo, chẳng hạn như Hello. Ứng dụng Chat sẽ trả lời bằng một văn bản và thẻ chứa biểu mẫu liên hệ.

Dọn dẹp

Để tránh phát sinh phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được dùng trong hướng dẫn này, bạn nên xoá dự án trên Cloud.

  1. Trong Google Cloud Console, hãy chuyển đến trang Quản lý tài nguyên. Nhấp vào Trình đơn > IAM và Quản trị viên > Quản lý tài nguyên.

    Chuyển đến Resource Manager

  2. Trong danh sách dự án, hãy chọn dự án bạn muốn xoá rồi nhấp vào biểu tượng Xoá .
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.