Memperbarui pesan

Panduan ini menjelaskan cara menggunakan metode update() di resource Message Google Chat API untuk memperbarui pesan teks atau kartu di ruang. Memperbarui pesan untuk mengubah atribut pesan, seperti apa di dalamnya, atau isi dari suatu kartu. Anda juga dapat menambahkan pesan teks ke pesan kartu, atau menambahkan kartu ke pesan teks.

Di Chat API, pesan Chat direpresentasikan oleh Referensi Message. Meskipun pengguna Chat hanya dapat mengirim pesan yang berisi teks, aplikasi Chat dapat menggunakan banyak fitur pesan lainnya, termasuk menampilkan antarmuka pengguna statis atau interaktif, mengumpulkan informasi dari pengguna, dan mengirimkan pesan secara pribadi. Untuk mempelajari lebih lanjut fitur pesan yang tersedia untuk Chat API, lihat ringkasan pesan Google Chat.

Prasyarat

Node.js

Python

Java

Apps Script

Memperbarui pesan atas nama pengguna

Dengan autentikasi pengguna, hanya teks pesan yang dapat diperbarui.

Untuk memperbarui pesan dengan autentikasi pengguna, teruskan hal berikut dalam permintaan Anda:

  • Tentukan cakupan otorisasi chat.messages.
  • Panggil metode UpdateMessage().
  • Teruskan message sebagai instance Message dengan hal berikut:
    • Kolom name ditetapkan ke pesan yang akan diperbarui, yang mencakup ID ruang dan ID pesan.
    • Kolom text ditetapkan dengan teks baru.
  • Teruskan updateMask dengan nilai text.

Jika pesan yang diperbarui adalah pesan kartu, teks tersebut akan ditambahkan ke kartu (yang terus ditampilkan).

Berikut ini cara memperbarui pesan, atau menambahkan awalan pesan teks ke pesan kartu dengan autentikasi pengguna:

Node.js

chat/client-libraries/cloud/update-message-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

const USER_AUTH_OAUTH_SCOPES = ['https://www.googleapis.com/auth/chat.messages'];

// This sample shows how to update a message with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(USER_AUTH_OAUTH_SCOPES);

  // Initialize request argument(s)
  const request = {
    message: {
      // Replace SPACE_NAME and MESSAGE_NAME here
      name: 'spaces/SPACE_NAME/messages/MESSAGE_NAME',
      text: 'Updated with user credential!'
    },
    // The field paths to update. Separate multiple values with commas or use
    // `*` to update all field paths.
    updateMask: {
      // The field paths to update.
      paths: ['text']
    }
  };

  // Make the request
  const response = await chatClient.updateMessage(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

chat/client-libraries/cloud/update_message_user_cred.py
from authentication_utils import create_client_with_user_credentials
from google.apps import chat_v1 as google_chat

SCOPES = ["https://www.googleapis.com/auth/chat.messages"]

# This sample shows how to update a message with user credential
def update_message_with_user_cred():
    # Create a client
    client = create_client_with_user_credentials(SCOPES)

    # Initialize request argument(s)
    request = google_chat.UpdateMessageRequest(
        message = {
            # Replace SPACE_NAME and MESSAGE_NAME here
            "name": "spaces/SPACE_NAME/messages/MESSAGE_NAME",
            "text": "Updated with user credential!"
        },
        # The field paths to update. Separate multiple values with commas or use
        # `*` to update all field paths.
        update_mask = "text"
    )

    # Make the request
    response = client.update_message(request)

    # Handle the response
    print(response)

update_message_with_user_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/UpdateMessageUserCred.java
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.UpdateMessageRequest;
import com.google.chat.v1.Message;
import com.google.protobuf.FieldMask;

// This sample shows how to update message with user credential.
public class UpdateMessageUserCred {

  private static final String SCOPE =
    "https://www.googleapis.com/auth/chat.messages";

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithUserCredentials(
          ImmutableList.of(SCOPE))) {
      UpdateMessageRequest.Builder request = UpdateMessageRequest.newBuilder()
        .setMessage(Message.newBuilder()
          // replace SPACE_NAME and MESSAGE_NAME here
          .setName("spaces/SPACE_NAME/messages/MESSAGE_NAME")
          .setText("Updated with user credential!"))
        .setUpdateMask(FieldMask.newBuilder()
          // The field paths to update.
          .addPaths("text"));
      Message response = chatServiceClient.updateMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to update a message with user credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages'
 * referenced in the manifest file (appsscript.json).
 */
function updateMessageUserCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME and MESSAGE_NAME here
  const name = 'spaces/SPACE_NAME/messages/MESSAGE_NAME';
  const message = {
    text: 'Updated with user credential!'
  };
  // The field paths to update. Separate multiple values with commas or use
  // `*` to update all field paths.
  const updateMask = 'text';

  // Make the request
  const response = Chat.Spaces.Messages.patch(message, name, {
    updateMask: updateMask
  });

  // Handle the response
  console.log(response);
}

Untuk menjalankan contoh ini, ganti hal berikut:

  • SPACE_NAME: ID dari name. Anda bisa mendapatkan ID dengan memanggil ListSpaces() atau dari URL ruang.
  • MESSAGE_NAME: ID dari name pesan. Anda bisa mendapatkan ID dari isi respons yang ditampilkan setelah membuat secara asinkron dengan Chat API, atau dengan nama kustom ditetapkan ke pesan pada saat pembuatan.

Chat API menampilkan instance Message yang menjelaskan pesan yang diperbarui.

Memperbarui pesan sebagai aplikasi Chat

Dengan autentikasi aplikasi, teks dan kartu pesan dapat diperbarui.

Untuk memperbarui pesan dengan autentikasi aplikasi, teruskan hal berikut dalam permintaan Anda:

  • Tentukan cakupan otorisasi chat.bot.
  • Panggil metode UpdateMessage().
  • Teruskan message sebagai instance Message dengan hal berikut:
    • Kolom name ditetapkan ke pesan yang akan diperbarui, yang mencakup ID ruang dan ID pesan.
    • Kolom text ditetapkan dengan teks baru jika perlu diperbarui.
    • Kolom cardsV2 ditetapkan dengan kartu baru jika perlu diperbarui.
  • Teruskan updateMask dengan daftar kolom ke pembaruan seperti text, dan cardsV2.

Jika pesan yang diperbarui adalah pesan kartu dan teks diperbarui, teks yang diperbarui akan ditambahkan ke kartu (yang terus ditampilkan). Jika pesan yang diperbarui adalah pesan teks dan kartu diperbarui, lalu kartu yang diperbarui ditambahkan ke teks (yang terus gambar).

Berikut cara memperbarui teks dan kartu pesan dengan autentikasi aplikasi:

Node.js

chat/client-libraries/cloud/update-message-app-cred.js
import {createClientWithAppCredentials} from './authentication-utils.js';

// This sample shows how to update a message with app credential
async function main() {
  // Create a client
  const chatClient = createClientWithAppCredentials();

  // Initialize request argument(s)
  const request = {
    message: {
      // Replace SPACE_NAME and MESSAGE_NAME here
      name: 'spaces/SPACE_NAME/messages/MESSAGE_NAME',
      text: 'Text updated with app credential!',
      cardsV2 : [{ card: { header: {
        title: 'Card updated with app credential!',
        imageUrl: 'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg'
      }}}]
    },
    // The field paths to update. Separate multiple values with commas or use
    // `*` to update all field paths.
    updateMask: {
      // The field paths to update.
      paths: ['text', 'cards_v2']
    }
  };

  // Make the request
  const response = await chatClient.updateMessage(request);

  // Handle the response
  console.log(response);
}

main().catch(console.error);

Python

chat/client-libraries/cloud/update_message_app_cred.py
from authentication_utils import create_client_with_app_credentials
from google.apps import chat_v1 as google_chat

# This sample shows how to update a message with app credential
def update_message_with_app_cred():
    # Create a client
    client = create_client_with_app_credentials()

    # Initialize request argument(s)
    request = google_chat.UpdateMessageRequest(
        message = {
            # Replace SPACE_NAME and MESSAGE_NAME here
            "name": "spaces/SPACE_NAME/messages/MESSAGE_NAME",
            "text": "Text updated with app credential!",
            "cards_v2" : [{ "card": { "header": {
                "title": 'Card updated with app credential!',
                "image_url": 'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg'
            }}}]
        },
        # The field paths to update. Separate multiple values with commas or use
        # `*` to update all field paths.
        update_mask = "text,cardsV2"
    )

    # Make the request
    response = client.update_message(request)

    # Handle the response
    print(response)

update_message_with_app_cred()

Java

chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/UpdateMessageAppCred.java
import com.google.apps.card.v1.Card;
import com.google.apps.card.v1.Card.CardHeader;
import com.google.chat.v1.CardWithId;
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.UpdateMessageRequest;
import com.google.chat.v1.Message;
import com.google.protobuf.FieldMask;

// This sample shows how to update message with app credential.
public class UpdateMessageAppCred {

  public static void main(String[] args) throws Exception {
    try (ChatServiceClient chatServiceClient =
        AuthenticationUtils.createClientWithAppCredentials()) {
      UpdateMessageRequest.Builder request = UpdateMessageRequest.newBuilder()
        .setMessage(Message.newBuilder()
          // replace SPACE_NAME and MESSAGE_NAME here
          .setName("spaces/SPACE_NAME/messages/MESSAGE_NAME")
          .setText("Text updated with app credential!")
          .addCardsV2(CardWithId.newBuilder().setCard(Card.newBuilder()
            .setHeader(CardHeader.newBuilder()
              .setTitle("Card updated with app credential!")
              .setImageUrl("https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg")))))
        .setUpdateMask(FieldMask.newBuilder()
          // The field paths to update.
          .addAllPaths(List.of("text", "cards_v2")));
      Message response = chatServiceClient.updateMessage(request.build());

      System.out.println(JsonFormat.printer().print(response));
    }
  }
}

Apps Script

chat/advanced-service/Main.gs
/**
 * This sample shows how to update a message with app credential
 * 
 * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.bot'
 * used by service accounts.
 */
function updateMessageAppCred() {
  // Initialize request argument(s)
  // TODO(developer): Replace SPACE_NAME and MESSAGE_NAME here
  const name = 'spaces/SPACE_NAME/messages/MESSAGE_NAME';
  const message = {
    text: 'Text updated with app credential!',
    cardsV2 : [{ card: { header: {
      title: 'Card updated with app credential!',
      imageUrl: 'https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/info/default/24px.svg'
    }}}]
  };
  // The field paths to update. Separate multiple values with commas or use
  // `*` to update all field paths.
  const updateMask = 'text,cardsV2';

  // Make the request
  const response = Chat.Spaces.Messages.patch(message, name, {
    updateMask: updateMask
  }, getHeaderWithAppCredentials());

  // Handle the response
  console.log(response);
}

Untuk menjalankan contoh ini, ganti hal berikut:

  • SPACE_NAME: ID dari name. Anda bisa mendapatkan ID dengan memanggil ListSpaces() atau dari URL ruang.
  • MESSAGE_NAME: ID dari name. Anda bisa mendapatkan ID dari isi respons yang ditampilkan setelah membuat pesan secara asinkron dengan Chat API, atau dengan nama kustom yang ditetapkan ke pesan saat pembuatan.

Chat API menampilkan instance Message yang merinci pesan yang diperbarui.