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 ứng dụng Google Chat giúp người dùng Google Chat quản lý danh bạ cá nhân và danh bạ 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 các 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 phản hồi lệnh gạch chéo /about bằng một tin nhắn văn bản và nút mở một 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 lại 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 thư 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 tạo trong 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.

Phần sau đây cho thấy 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 một 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. Để hiển thị biểu mẫu liên hệ, ứng dụng Chat phản hồi người dùng theo những cách sau:

    • Phản hồ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ẻ 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 gạch chéo /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 thông tin liên hệ: một tiện ích selectionInput của 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 xét 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ý 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 rồi 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 trình bày cách tạo và định cấu hình dự án Google Cloud cho ứng dụng Chat.

Tạo dự án trên Google Cloud

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

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

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

  2. Trong trường Project Name (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ã đáp ứng nhu cầu của bạn trong suốt thời gian hoạt động của dự án.

  3. Trong trường Vị trí, hãy nhấp vào Duyệt xem để hiển thị 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. Google Cloud Console sẽ chuyển đến trang Trang tổng quan và dự án của bạn sẽ được tạo trong vòng vài phút.

Giao diện dòng lệnh gcloud

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
  • Shell cục bộ: Để sử dụng môi trường phát triển cục bộ, hãy cài đặtkhởi chạy CLI gcloud.
    Để tạo dự án trên Cloud, hãy sử 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 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àn hình xin phép bằ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 triển khai một ứng dụng Chat chỉ dành cho việc kiểm thử và sử dụng nội bộ, vì vậy, bạn có thể sử dụng thông tin phần giữ chỗ cho màn hình yêu cầu đồng ý. Trước khi phát hành ứng dụng Chat, hãy thay thế mọi thông tin phần giữ chỗ bằng thông tin thực.

  1. Trong Google Cloud Console, hãy chuyển đến Trình đơn > > Tạo 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 xin phép bằng OAuth trong phần Trang trí thương hiệu, Đối tượngQuyền truy cập 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 Thông tin ứng dụng, trong mục 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 Google phù hợp.
    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 thể chọn 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 lại 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 thử nghiệm, 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 thử nghiệm đượ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, vì vậy, bạn không cần phải sao chép và dán từng tệp.

Bạn có thể xem toàn bộ dự án trên GitHub (không bắt buộc).

Xem trên GitHub

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

main.gs

Xử lý tất cả logic ứ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.
  if (!contactName) {
    const errorMessage = "Don't forget to name your new contact!";
    if (event.dialogEventType === "SUBMIT_DIALOG") {
      return { actionResponse: {
        type: "DIALOG",
        dialogAction: { actionStatus: {
          statusCode: "INVALID_ARGUMENT",
          userFacingMessage: errorMessage
        }}
      }};
    } else {
      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
        }}
      }
    }
  } else {
    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 nhập dữ liệu biểu mẫu này sẽ hiển thị 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 Google Cloud Console

  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 lớp này trong các phần sau.

Tạo dự án Apps Script

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

  1. Nhấp vào nút sau để mở dự án Apps Script Quản lý danh bạ trong Google Chat.
    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 để tạo bản sao Tạo bản sao.
  4. Đặt tên cho bản sao dự án Apps Script:

    1. Nhấp vào Bản sao của mục Quản lý danh bạ trong Google Chat.

    2. Trong Project title (Tên dự án), hãy nhập Contact Manager - Google Chat app

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

Thiết lập dự án trên Google Cloud của dự án Apps Script

  1. Trong dự án Apps Script, hãy nhấp vào Biểu tượng cài đặt dự án Project Settings (Cài đặt dự án).
  2. Trong phần 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 Google Cloud và dự án Apps Script hiện đã được kết nối.

Tạo một lượt triển khai Apps Script

Giờ đây, khi tất cả mã đã sẵn sàng, hãy triển khai dự án Apps Script. Bạn sử dụng mã 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, bên cạnh phần Chọn loại, hãy nhấp vào loại triển khai Biểu tượng cài đặt dự án rồi chọn Tiện ích bổ sung.

  4. Trong phần Description (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 sẽ báo cáo việc triển khai thành công và cung cấp mã nhận dạng triển khai.

  6. Nhấp vào biểu tượng Sao chép để sao chép mã hoạt động triển khai, sau đó nhấp vào Xong.

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

Phần này cho biết cách định cấu hình API Google Chat trong Google Cloud Console bằng thông tin về ứng dụng Chat, 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 Google Cloud Console, 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 App name (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 mục 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 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 các hộp đánh dấu Nhận tin nhắn 1:1Tham 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 (Tập lệnh ứng dụng).

  8. Trong Mã triển khai, hãy dán Mã 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 dấu gạch chéo, 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 mục Mô tả, hãy nhập Learn how to use this Chat app to manage your contacts.
    5. Chọn Mở hộp thoại.
    6. Nhấp vào Xong.
    7. Nhấp vào Thêm lệnh dấu gạch chéo để thiết lập một lệnh dấu gạch chéo khác.
    8. Trong Name (Tên), hãy nhập /addContact
    9. Trong Command ID (Mã lệnh), hãy nhập 2.
    10. Trong mục Mô tả, hãy nhập Submit information about a contact.
    11. Chọn Mở hộp thoại.
    12. Nhấp vào Xong.
  10. Trong phần Chế độ hiển thị, hãy chọn hộp đánh dấu Cung cấp ứng dụng Chat này cho một số người và nhóm 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. Một thông báo đã lưu cấu hình 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 tin nhắn trực tiếp bằng ứng dụng Chat và gửi 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ử đáng tin cậy.

    Chuyển đến Google Chat

  2. Nhấp vào Cuộc trò chuyện mới.
  3. Trong trường Thêm 1 người trở lên, 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 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 người 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 trả lời bằng một tin nhắn văn bản có nội dung là CONTACT NAME has been added to your contacts..

  5. Nếu muốn, bạn cũng có thể kiểm thử và gửi biểu mẫu liên hệ theo các cách sau:

    • Sử dụng lệnh dấu gạch chéo /about. Ứng dụng trò chuyện trả lời bằng một tin nhắn văn bản và một nút tiện ích phụ có nội dung Add a contact. Bạn có thể nhấp vào nút này để mở một hộp thoại có biểu mẫu liên hệ.
    • Gửi tin nhắn trực tiếp đến ứng dụng Chat mà không cần lệnh dấu gạch chéo, chẳng hạn như Hello. Ứng dụng Chat 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 bị tính phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này, bạn nên xoá dự án trên Google Cloud.

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

    Chuyển đến Trình quản lý tài nguyên

  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 Shut down (Tắt) để xoá dự án.