Hướng dẫn này giải thích cách thiết lập và sử dụng tài khoản dịch vụ để truy cập vào API REST của Google Chat thay mặt cho ứng dụng nhắn tin. Trước tiên, hướng dẫn này sẽ hướng dẫn bạn cách tạo tài khoản dịch vụ. Sau đó, tài liệu này minh hoạ cách viết tập lệnh sử dụng tài khoản dịch vụ để xác thực bằng API Chat và đăng thông báo trong phòng Chat.
Các ứng dụng nhắn tin có thể sử dụng tài khoản dịch vụ để xác thực khi gọi không đồng bộ API REST của Google Chat để có thể:
- Gửi tin nhắn đến Google Chat bằng
spaces.messages.create
để:- Thông báo cho người dùng khi một công việc trong nền chạy trong thời gian dài hoàn tất việc chạy.
- Thông báo cho người dùng rằng máy chủ đã chuyển sang chế độ ngoại tuyến.
- Yêu cầu một nhân viên hỗ trợ khách hàng trực tiếp với một trường hợp khách hàng mới mở.
- Cập nhật thông báo đã gửi trước đó bằng
spaces.messages.update
để:- Thay đổi trạng thái của hoạt động đang diễn ra.
- Cập nhật người được giao và ngày đến hạn của việc cần làm.
- Liệt kê người dùng trong một không gian bằng
spaces.members.list
để:- Xem ai đang ở trong một không gian.
- Xác minh rằng thành viên của không gian bao gồm mọi người trong nhóm.
Khi được xác thực bằng tài khoản dịch vụ, để nhận dữ liệu hoặc thực hiện các thao tác trong phòng Chat, các ứng dụng Chat phải có gói thành viên trong phòng. Ví dụ: để liệt kê các thành viên của một không gian hoặc tạo tin nhắn trong một không gian, ứng dụng Chat phải là thành viên của không gian.
Nếu ứng dụng Chat cần truy cập vào dữ liệu người dùng hoặc thực hiện các hành động thay mặt người dùng, hãy xác thực tư cách người dùng.
Để tìm hiểu thêm về thời điểm ứng dụng Chat yêu cầu xác thực và loại xác thực cần sử dụng, hãy xem nội dung Các loại xác thực bắt buộc trong phần tổng quan về API ủy quyền và xác thực.
Điều kiện tiên quyết
Để chạy ví dụ trong hướng dẫn này, bạn cần đáp ứng các điều kiện tiên quyết sau:
Python
- Python 3.6 trở lên
- Công cụ quản lý gói pip
Thư viện ứng dụng Python của Google. Để cài đặt chúng, hãy chạy lệnh sau trong giao diện dòng lệnh:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Tài khoản Google Workspace có quyền truy cập vào Google Chat.
Một dự án Google Cloud có bật API Chat. Để tạo dự án và bật API, hãy tham khảo phần Tạo dự án và bật API.
Ứng dụng Chat được phát hành có gói thành viên trong một phòng Chat:
- Để tạo và phát hành một ứng dụng nhắn tin, hãy xem phần Tạo ứng dụng Google Chat bằng chức năng đám mây.
- Để thêm ứng dụng Chat vào một phòng Chat, hãy xem phần Thêm ứng dụng vào không gian hoặc cuộc trò chuyện trong Google Chat.
Bước 1: Tạo tài khoản dịch vụ trong Google Cloud Console
Tạo một tài khoản dịch vụ mà ứng dụng Chat của bạn sẽ sử dụng để truy cập vào API của Google.
Tạo tài khoản dịch vụ:
Để tạo tài khoản dịch vụ, hãy làm theo các bước sau:
- Trong bảng điều khiển của Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.
- Nhấp vào Tạo tài khoản dịch vụ.
- Điền thông tin chi tiết về tài khoản dịch vụ, sau đó nhấp vào Tạo và tiếp tục.
- Không bắt buộc: Chỉ định các vai trò cho tài khoản dịch vụ để cấp quyền truy cập vào các tài nguyên của dự án trên Google Cloud. Để biết thêm thông tin chi tiết, hãy tham khảo bài viết Cấp, thay đổi và thu hồi quyền truy cập vào tài nguyên.
- Nhấp vào Tiếp tục.
- Không bắt buộc: Nhập những người dùng hoặc nhóm có thể quản lý và thực hiện thao tác với tài khoản dịch vụ này. Để biết thêm thông tin, hãy tham khảo bài viết Quản lý việc mạo danh tài khoản dịch vụ.
- Nhấp vào Xong.
Tài khoản dịch vụ sẽ xuất hiện trên trang tài khoản dịch vụ. Tiếp theo, hãy tạo một khoá riêng tư cho tài khoản dịch vụ.
Tạo một khoá riêng tư
Để tạo khoá riêng tư cho tài khoản dịch vụ, hãy làm theo các bước sau:
- Trong bảng điều khiển của Google Cloud, hãy chuyển đến Trình đơn > IAM và Quản trị > Tài khoản dịch vụ.
- Chọn tài khoản dịch vụ của bạn.
- Nhấp vào Khoá > Thêm khoá > Tạo khoá mới.
- Chọn JSON, sau đó nhấp vào Create (Tạo).
Cặp khoá công khai/riêng tư mới của bạn sẽ được tạo và tải xuống máy dưới dạng tệp mới. Tệp này là bản sao duy nhất của khoá này. Để biết thông tin về cách lưu trữ an toàn khoá của bạn, hãy xem phần Quản lý khoá tài khoản dịch vụ.
- Nhấp vào Close (Đóng).
Để biết thêm thông tin về các tài khoản dịch vụ, hãy xem tài khoản dịch vụ trong tài liệu IAM của Google Cloud.
Bước 2: Viết tập lệnh sử dụng tài khoản dịch vụ để xác thực bằng API REST của Chat
Mã sau đây xác thực bằng API REST của Chat bằng tài khoản dịch vụ, sau đó đăng một tin nhắn lên phòng Chat:
Python
- Trong thư mục đang hoạt động, hãy tạo một tệp có tên là
chat_app_auth.py
. Đưa mã sau vào
chat_app_auth.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
Trong mã, hãy thay thế
SPACE_NAME
bằng tên không gian mà bạn có thể lấy được từ phương thứcspaces.list
trong API trò chuyện hoặc từ URL của một không gian.
Bước 3: Chạy ví dụ hoàn chỉnh
Trong thư mục đang hoạt động, hãy tạo và chạy mẫu:
Python
python3 chat_app_auth.py
Tập lệnh của bạn gửi một yêu cầu được xác thực tới API REST của Chat. API này sẽ phản hồi bằng cách đăng một tin nhắn trong phòng Chat dưới dạng một ứng dụng nhắn tin.
Khắc phục sự cố trong ví dụ
Phần này mô tả các vấn đề phổ biến mà bạn có thể gặp phải khi cố gắng chạy mẫu này.
Bạn không được phép sử dụng ứng dụng này
Khi chạy chat_app_auth.py
, bạn có thể nhận được thông báo lỗi:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
Thông báo lỗi này có nghĩa là ứng dụng Chat không có quyền đăng tin nhắn trò chuyện trong phòng Chat mà ứng dụng này đang cố gắng đăng.
Để khắc phục lỗi, hãy thêm ứng dụng Chat vào phòng Chat được chỉ định trong chat_app_auth.py
.
Bước tiếp theo
Tìm hiểu những việc khác mà API Chat có thể làm bằng cách xem lại tài liệu tham khảo về API Chat.