Gửi tin nhắn thẻ trên màn hình chính của ứng dụng cho một ứng dụng Google Chat

Trang này giải thích cách tạo và gửi thông báo trên thẻ trang chủ của ứng dụng cho ứng dụng Chat. Trang chủ ứng dụng là thông báo bằng thẻ có thể tuỳ chỉnh mà ứng dụng Chat gửi cho người dùng khi họ mở tin nhắn trực tiếp bằng ứng dụng Chat.

Thẻ màn hình chính của ứng dụng có hai thông báo.

Ví dụ: bạn có thể định cấu hình thông báo trên thẻ màn hình chính của ứng dụng để bao gồm các mẹo tương tác với ứng dụng Chat bằng lệnh dấu gạch chéo. Đối với người dùng cuối, trang chủ ứng dụng chỉ xuất hiện trong tin nhắn trực tiếp của ứng dụng Chat nếu nhà phát triển ứng dụng bật tính năng này.


Sử dụng Trình tạo thẻ để thiết kế và xem trước thông báo trong thẻ JSON cho ứng dụng nhắn tin:

Mở Trình tạo thẻ

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

Python

Apps Script

Định cấu hình trong bảng điều khiển Google Cloud

Python

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > Sản phẩm khác > Google Workspace > Thư viện sản phẩm > API Google Chat.

    Truy cập API Google Chat

  2. Nhấp vào Quản lý rồi nhấp vào thẻ Cấu hình.

  3. Bật Support App Home.

  4. Chọn hộp kiểm Support App Home.

  5. Trong trường URL trang chủ ứng dụng, hãy thêm một URL. Giá trị này thường là URL giống với URL ứng dụng. URL này được gọi cho các sự kiện APP_HOME.

  6. Nhấp vào Lưu.

Apps Script

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến Trình đơn > Sản phẩm khác > Google Workspace > Thư viện sản phẩm > API Google Chat.

    Truy cập API Google Chat

  2. Nhấp vào Quản lý rồi nhấp vào thẻ Cấu hình.

  3. Chọn hộp kiểm Support App Home.

  4. Nhấp vào Lưu.

Định cấu hình ứng dụng Chat

Định cấu hình ứng dụng Chat để gửi tin nhắn thẻ mới cho trang chủ ứng dụng.

Python

Khi người dùng mở tin nhắn trực tiếp từ ứng dụng Chat, sự kiện APP_HOME sẽ được gửi đến ứng dụng Chat. Khi ứng dụng Chat nhận được sự kiện này, thực thể JSON của RenderActions sẽ được trả về cùng với thao tác điều hướng pushCard.

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'APP_HOME':
    return get_app_home_card()

def get_app_home_card():
  return {
    "action": {
      "navigations": [
        {
          "pushCard": {
            "sections": [
              {
                "widgets": [
                  {
                    "buttonList": {
                      "buttons": [
                        {
                          "text": "Open documentation",
                          "onClick": {
                            "openLink": {
                              "url": "https://developers.google.com/chat"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

Apps Script

Ví dụ này gửi tin nhắn thẻ bằng cách trả về tệp JSON của thẻ. Bạn cũng có thể sử dụng dịch vụ thẻ Apps Script.

Triển khai hàm onAppHome để trả về một thực thể JSON của RenderActions với tính năng điều hướng pushCard:

// "onAppHome" is the pre-defined name of the callback that the Chat servers
// execute.
function onAppHome() {
  return {
    action: {
      navigations: [
        {
          pushCard: getCard()
        }
      ]
    }
  };
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Cập nhật thông báo trên thẻ màn hình chính của ứng dụng

Bạn có thể cập nhật thông báo trên thẻ trang chủ của ứng dụng khi người dùng gửi thông tin trong thông báo thẻ hoặc đóng hộp thoại. Ví dụ: thông báo ban đầu trên thẻ màn hình chính của ứng dụng là thông báo chào mừng yêu cầu người dùng điền thông tin vào một biểu mẫu. Sau khi người dùng hoàn tất biểu mẫu, thông báo cập nhật về thẻ màn hình chính của ứng dụng sẽ được gửi. Bản cập nhật phải được trả về bằng một thực thể của RenderActions có chứa thành phần điều hướng updateCard.

Python

Đối với các ứng dụng HTTP, việc cập nhật thông báo trên thẻ màn hình chính của ứng dụng cũng tương tự như Xử lý thông tin do người dùng nhập, nhưng bạn phải trả về RenderActions. invokedFunction biểu thị tên của hàm được gọi liên kết với tiện ích Card. Để biết thêm thông tin, hãy xem CommonEventObject. Trong ví dụ sau, submitForm cho thấy người dùng đã gửi dữ liệu biểu mẫu:

@app.route('/', methods=['POST'])
def on_event():
  event = request.get_json()
  chat = event.get('chat')
  if chat is not None:
    return handle_chat_event(event)

def handle_chat_event(event):
  if event['chat'].get('type') == 'SUBMIT_FORM':
    event_object = event.get('commonEventObject')
    if event_object is not None:
      // Forms
      if 'submitForm' == event_object.get('invokedFunction'):
        return {
          'render_actions': {
            'action': {
              'navigations': [{
                'updateCard': get_update_card()
              }]
            }
          }
        }

def get_update_card():
  return {
      "action": {
          "navigations": [{
              "pushCard": {
                  "sections": [{
                      "widgets": [{
                          "buttonList": {
                              "buttons": [{
                                  "text": "Open documentation",
                                  "onClick": {
                                      "openLink": {
                                          "url": "https://developers.google.com/chat"
                                      }
                                  },
                              }]
                          }
                      }]
                  }]
              }
          }]
      }
  }

Apps Script

Ví dụ này gửi tin nhắn thẻ bằng cách trả về tệp JSON của thẻ. Bạn cũng có thể sử dụng dịch vụ thẻ Apps Script.

// Called from elsewhere (i.e. on button press).
function updateAppHomeCard(event) {
  return {
    render_actions: {
      action: {
        navigations: [
          {
            updateCard: getCard()
          }
        ]
      }
    }
  }
}

function getCard() {
  return {
    sections: [
      {
        widgets: [
          {
            buttonList: {
              buttons: [
                {
                  text: "Open documentation",
                  onClick: {
                    openLink: {
                      url: "https://developers.google.com/chat"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

Các điểm hạn chế

Nhìn chung, navigation không dành cho các ứng dụng trong Chat. Bạn không thể trả lại một ngăn xếp thẻ. Chỉ pushCard (để phản hồi lần đầu) và updateCard (để cập nhật) dùng cho các ứng dụng trong Chat.