Gửi tin nhắn tới Google Chat bằng webhook đến

webhook đến cho phép bạn gửi tin nhắn không đồng bộ đến Google Chat từ các ứng dụng không phải là ứng dụng Chat. Ví dụ: bạn có thể định cấu hình ứng dụng giám sát để thông báo cho nhân viên gọi điện trên Google Chat khi máy chủ bị lỗi.

Để gửi, cập nhật hoặc xoá tin nhắn trong phòng Chat một cách không đồng bộ bằng ứng dụng Chat, hãy xem phần Tạo, đọc, cập nhật, xoá tin nhắn.

Sơ đồ cho thấy cách webhook đến gửi tin nhắn đến Google Chat

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

Để chạy ví dụ trong hướng dẫn này, bạn cần:

Python

  • Python 3.10.7 trở lên.
  • Quyền truy cập vào Internet và trình duyệt web.
  • Tài khoản Google Workspace có quyền truy cập vào Google Chat.
  • Một phòng Google Chat hiện có.
  • Thư viện httplib2. Nếu cần, hãy chạy lệnh giao diện dòng lệnh (CLI) sau để cài đặt thư viện bằng pip:

    pip install httplib2
    

Node.js

Apps Script

  • Quyền truy cập vào Internet và trình duyệt web.
  • Tài khoản Google Workspace có quyền truy cập vào Google Chat.
  • Một phòng Google Chat hiện có.

Java

  • Java 11 trở lên.
  • Apache Maven
  • Quyền truy cập vào Internet và trình duyệt web.
  • Tài khoản Google Workspace có quyền truy cập vào Google Chat.
  • Một phòng Google Chat hiện có.

Tạo webhook

Để tạo webhook, hãy đăng ký không gian đó trong phòng Google Chat mà bạn muốn nhận tin nhắn, sau đó viết tập lệnh gửi tin nhắn.

Bước 1: Đăng ký webhook đến

  1. Mở Google Chat trong trình duyệt web.
  2. Chuyển đến không gian mà bạn muốn thêm webhook.
  3. Ở trên cùng, bên cạnh tiêu đề không gian, hãy nhấp vào biểu tượng Mũi tên xuống > Biểu tượng để quản lý webhook Quản lý webhook.
  4. Nếu không gian này đã có webhook khác, hãy nhấp vào Thêm webhook khác. Nếu không, hãy bỏ qua bước này.
  5. Đối với Tên, hãy nhập "Quickstart Webhook".
  6. Đối với URL hình đại diện, hãy nhập https://developers.google.com/chat/images/chat-product-icon.png.
  7. Nhấp vào LƯU.
  8. Nhấp vào Sao chép để sao chép URL webhook đầy đủ.
  9. Nhấp vào bên ngoài hộp để đóng hộp thoại webhook đến.

Bước 2: Viết tập lệnh webhook

Tập lệnh webhook mẫu sẽ đăng một thông báo lên không gian mà webhook đăng ký bằng cách POST yêu cầu tạo thông báo cho URL webhook đó. API Google Chat phản hồi bằng một phiên bản của Message.

Chọn một ngôn ngữ dưới đây để biết hướng dẫn cụ thể về cách tạo tập lệnh webhook:

Python

  1. Trong thư mục đang hoạt động, hãy tạo một tệp có tên là quickstart.py.

  2. Trong quickstart.py, hãy sao chép và dán mã sau:

    python/webhook/quickstart.py
    from json import dumps
    
    from httplib2 import Http
    
    
    def main():
        """Hangouts Chat incoming webhook quickstart."""
        url = 'https://chat.googleapis.com/v1/spaces/7D8la4AAAAE/messages?key=' \
              'AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=' \
              'HulDviWFMz6R5FW-GwlO4INCW1cZGDDExuWVaEbbr_g%3D'
        bot_message = {
            'text': 'Hello from a Python script!'}
        message_headers = {'Content-Type': 'application/json; charset=UTF-8'}
        http_obj = Http()
        response = http_obj.request(
            uri=url,
            method='POST',
            headers=message_headers,
            body=dumps(bot_message),
        )
        print(response)
    
    
    if __name__ == '__main__':
        main()
  3. Thay thế giá trị cho biến url bằng URL webhook bạn đã sao chép ở Bước 1: Đăng ký webhook đến.

Node.js

  1. Trong thư mục đang hoạt động, hãy tạo một tệp có tên là index.js.

  2. Trong index.js, hãy sao chép và dán mã sau:

    nút/webhook/index.js
    /**
     * Sends asynchronous message into Google Chat
     * @return{obj} response
     */
    function webhook() {
      const fetch = require('node-fetch');
      const webhookURL = 'https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=u9IG_MuTBXw-tnqupPrPNinY2spKFcRBDp6dSldGUAw%3D';
    
      const data = JSON.stringify({
        'text': 'Hello from a Node script!',
      });
      let resp;
      fetch(webhookURL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json; charset=UTF-8',
        },
        body: data,
      }).then((response) => {
        resp = response;
        console.log(response);
      });
      return resp;
    }
    
  3. Thay thế giá trị cho biến webhookURL bằng URL webhook bạn đã sao chép ở Bước 1: Đăng ký webhook đến.

Apps Script

  1. Truy cập vào trang Apps Script.

  2. Nhấp vào Dự án mới.

  3. Sao chép và dán mã sau:

    apps-script/webhook/webhook.gs
    function webhook() {
      const url = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      const options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json; charset=UTF-8"
        },
        "payload": JSON.stringify({
          "text": "Hello from Apps Script!"
        })
      };
      const response = UrlFetchApp.fetch(url, options);
      Logger.log(response);
    }
  4. Thay thế giá trị cho biến url bằng URL webhook bạn đã sao chép ở Bước 1: Đăng ký webhook đến.

Java

  1. Trong thư mục đang hoạt động, hãy tạo một tệp có tên là pom.xml.

  2. Trong pom.xml, hãy sao chép và dán nội dung sau:

    java/webhook/pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.google.hangouts.chat.webhook</groupId>
      <artifactId>java-webhook-app</artifactId>
      <version>0.1.0</version>
    
      <name>java-webhook-app</name>
      <url>https://github.com/googleworkspace/hangouts-chat-samples/tree/main/java/webhook</url>
    
      <properties>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
      </properties>
    
      <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
  3. Trong thư mục đang hoạt động, hãy tạo cấu trúc thư mục sau src/main/java.

  4. Trong thư mục src/main/java, hãy tạo một tệp có tên là App.java.

  5. Trong App.java, hãy sao chép và dán mã sau:

    java/webhook/src/main/java/com/google/hangouts/chat/webhook/App.java
    import com.google.gson.Gson;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.util.Map;
    import java.net.URI;
    
    public class App {
      private static final String URL = "https://chat.googleapis.com/v1/spaces/AAAAGCYeSRY/messages";
      private static final Gson gson = new Gson();
      private static final HttpClient client = HttpClient.newHttpClient();
    
      public static void main(String[] args) throws Exception {
        String message = gson.toJson(Map.of("text", "Hello from Java!"));
    
        HttpRequest request = HttpRequest.newBuilder(
            URI.create(URL))
            .header("accept", "application/json; charset=UTF-8")
            .POST(HttpRequest.BodyPublishers.ofString(message))
            .build();
    
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
        System.out.println(response.body());
      }
    }
  6. Thay thế giá trị cho biến URL bằng URL webhook bạn đã sao chép ở Bước 1: Đăng ký webhook đến.

Bước 3: Chạy tập lệnh webhook

Chạy mẫu bằng cách chạy lệnh sau trong thư mục làm việc trong CLI:

Python

  python3 quickstart.py

Node.js

  node index.js

Apps Script

  • Nhấp vào Chạy

Java

  mvn compile exec:java -Dexec.mainClass=App

Khi bạn chạy mã mẫu, webhook sẽ gửi thông báo đến không gian mà bạn đã đăng ký.

Bắt đầu hoặc trả lời chuỗi tin nhắn

Bạn có thể bắt đầu chuỗi tin nhắn hoặc trả lời một chuỗi tin nhắn bằng cách thêm thông số threadKey vào URL webhook. Mỗi threadKey là duy nhất đối với ứng dụng đặt giá trị này. Nếu hai ứng dụng Chat hoặc webhook khác nhau đặt cùng một threadKey, thì 2 luồng khác nhau sẽ bắt đầu.

Bắt đầu chuỗi tin nhắn

Để đăng thông báo đầu tiên của một chuỗi có webhook, hãy thêm tham số threadKey vào URL webhook. Đặt threadKey thành một chuỗi tuỳ ý, nhưng hãy nhớ nội dung của chuỗi đó; bạn sẽ cần chỉ định lại chuỗi đó để đăng câu trả lời cho chuỗi.

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=ARBITRARY_STRING

Trả lời chuỗi tin nhắn

Để gửi tin nhắn đến một chuỗi tin nhắn hiện có, hãy thêm tham số threadKey vào URL webhook đã đặt thành giá trị dùng để bắt đầu chuỗi. Ví dụ: gửi một tin nhắn đến URL theo dõi sẽ đăng câu trả lời lên chuỗi trong đó threadKeyMY-THREAD:

  https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?threadKey=MY-THREAD

Các giới hạn và yếu tố cần cân nhắc

Khi bạn định cấu hình webhook, hãy lưu ý các giới hạn và lưu ý sau:

  • Mỗi webhook chỉ hoạt động trong phòng Chat mà bạn đã đăng ký.

  • Bạn không thể xuất bản webhook trên Google Workspace Marketplace.

  • Webhook không trò chuyện được. Họ không thể trả lời hoặc nhận tin nhắn từ người dùng hoặc sự kiện từ Google Chat.

  • Nếu chỉ chọn đơn vị tổ chức (OU) trong miền của bạn đã bật các ứng dụng Chat, các webhook sẽ xuất hiện trong kết quả sau:

    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }
    
  • Webhook đến chỉ hoạt động trong tin nhắn trực tiếp, nhưng chỉ khi tất cả người dùng đã bật ứng dụng Chat.

  • Biểu tượng để quản lý webhook Quản lý webhook chỉ có trên trình duyệt web, nên bạn phải thiết lập webhook từ ứng dụng web Chat. Webhook không thể định cấu hình trong ứng dụng Chat dành cho thiết bị di động.