Bu kılavuzda, kullanıcılar adına etkileşimli kartlar içeren mesajlar oluşturmak için Google Chat API'nin nasıl kullanılacağı ve bu kartların eşzamansız olarak nasıl güncelleneceği açıklanmaktadır.
Kart oluşturma ve güncelleme, aşağıdaki işlemleri yapmak istediğinizde kullanışlıdır:
- Bir kullanıcı adına, görevi veya harici kaynağı temsil eden bir kart yayınlayın.
- Kullanıcı etkileşimini beklemeden, harici etkinliklere göre kartın durumunu güncelleyin (ör. "Devam Ediyor"dan "Tamamlandı"ya).
- Kullanıcı mesajındaki bir kartın içeriğini (ör. bağlantı önizlemesi) yenileyin.
Ön koşullar
Node.js
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı.
- Ortamınızı ayarlama:
- Google Cloud projesi oluşturun.
- OAuth kullanıcı rızası ekranını yapılandırın.
- Chat uygulamanız için bir ad, simge ve açıklama belirleyerek Google Chat API'yi etkinleştirin ve yapılandırın.
- Node.js Google API istemci kitaplığını yükleyin.
- Google Chat API isteğinizde kimlik doğrulamayı nasıl yapmak istediğinize bağlı olarak erişim kimlik bilgileri oluşturun:
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
credentials.jsonadlı bir JSON dosyası olarak kaydedin. - Chat uygulaması olarak kimlik doğrulaması yapmak için hizmet hesabı kimlik bilgileri oluşturun ve kimlik bilgilerini
credentials.jsonadlı bir JSON dosyası olarak kaydedin.
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
- Kullanıcı olarak mı yoksa Chat uygulaması olarak mı kimlik doğrulaması yapmak istediğinize bağlı olarak bir yetkilendirme kapsamı seçin.
Python
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı.
- Ortamınızı ayarlama:
- Google Cloud projesi oluşturun.
- OAuth kullanıcı rızası ekranını yapılandırın.
- Chat uygulamanız için bir ad, simge ve açıklama belirleyerek Google Chat API'yi etkinleştirin ve yapılandırın.
- Python Google API istemci kitaplığını yükleyin.
- Google Chat API isteğinizde kimlik doğrulamayı nasıl yapmak istediğinize bağlı olarak erişim kimlik bilgileri oluşturun:
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
credentials.jsonadlı bir JSON dosyası olarak kaydedin. - Chat uygulaması olarak kimlik doğrulaması yapmak için hizmet hesabı kimlik bilgileri oluşturun ve kimlik bilgilerini
credentials.jsonadlı bir JSON dosyası olarak kaydedin.
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
- Kullanıcı olarak mı yoksa Chat uygulaması olarak mı kimlik doğrulaması yapmak istediğinize bağlı olarak bir yetkilendirme kapsamı seçin.
Java
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı.
- Ortamınızı ayarlama:
- Google Cloud projesi oluşturun.
- OAuth kullanıcı rızası ekranını yapılandırın.
- Chat uygulamanız için bir ad, simge ve açıklama belirleyerek Google Chat API'yi etkinleştirin ve yapılandırın.
- Java Google API istemci kitaplığını yükleyin.
- Google Chat API isteğinizde kimlik doğrulamayı nasıl yapmak istediğinize bağlı olarak erişim kimlik bilgileri oluşturun:
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
credentials.jsonadlı bir JSON dosyası olarak kaydedin. - Chat uygulaması olarak kimlik doğrulaması yapmak için hizmet hesabı kimlik bilgileri oluşturun ve kimlik bilgilerini
credentials.jsonadlı bir JSON dosyası olarak kaydedin.
- Chat kullanıcısı olarak kimlik doğrulaması yapmak için OAuth istemci kimliği kimlik bilgileri oluşturun ve kimlik bilgilerini yerel dizininize
- Kullanıcı olarak mı yoksa Chat uygulaması olarak mı kimlik doğrulaması yapmak istediğinize bağlı olarak bir yetkilendirme kapsamı seçin.
Apps Komut Dosyası
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı.
- Ortamınızı ayarlama:
- Google Cloud projesi oluşturun.
- OAuth kullanıcı rızası ekranını yapılandırın.
- Chat uygulamanız için bir ad, simge ve açıklama belirleyerek Google Chat API'yi etkinleştirin ve yapılandırın.
- Bağımsız bir Apps Komut Dosyası projesi oluşturun ve Gelişmiş Chat Hizmeti'ni etkinleştirin.
- Bu kılavuzda, kullanıcı veya uygulama kimlik doğrulaması kullanmanız gerekir. Chat uygulaması olarak kimlik doğrulaması yapmak için hizmet hesabı kimlik bilgileri oluşturun. Adımlar için Google Chat uygulaması olarak kimlik doğrulama ve yetkilendirme başlıklı makaleyi inceleyin.
- Kullanıcı olarak mı yoksa Chat uygulaması olarak mı kimlik doğrulaması yapmak istediğinize bağlı olarak bir yetkilendirme kapsamı seçin.
Kullanıcı adına kart mesajı oluşturma
Bir kullanıcı adına kart içeren mesaj oluşturmak için kullanıcı kimlik doğrulamasını kullanın.
Mesajı oluşturmak için isteğinizde aşağıdakileri belirtin:
chat.messages.createveyachat.messagesyetkilendirme kapsamı.Messagekaynağındaki, kart verilerini içerencardsV2alanı.- Eşzamansız güncellemeler için gerekli olan her kartın
cardId.
Aşağıdaki örnekte, bir kullanıcı adına kart içeren bir mesajın nasıl oluşturulacağı gösterilmektedir:
Node.js
/**
* This sample shows how to create a message with a card on behalf of a user.
*/
const {google} = require('googleapis');
const {auth} = require('google-auth-library');
async function main() {
// Create a client
const authClient = await auth.getClient({
scopes: ['https://www.googleapis.com/auth/chat.messages.create']
});
google.options({auth: authClient});
// Initialize the Chat API
const chat = google.chat({version: 'v1'});
// The space to create the message in.
const parent = 'spaces/SPACE_NAME';
// Create the request
const request = {
parent: parent,
requestBody: {
text: 'Here is a card created on my behalf:',
cardsV2: [{
cardId: 'unique-card-id',
card: {
header: {
title: 'Card Title',
subtitle: 'Card Subtitle'
},
sections: [{
widgets: [{
textParagraph: {
text: 'This card is attached to a user message.'
}
}]
}]
}
}]
}
};
// Call the API
const response = await chat.spaces.messages.create(request);
// Handle the response
console.log(response.data);
}
main().catch(console.error);
Python
"""
This sample shows how to create a message with a card on behalf of a user.
"""
from google.oauth2 import service_account
from googleapiclient.discovery import build
import google.auth
def create_message_with_card():
# Create a client
scopes = ["https://www.googleapis.com/auth/chat.messages.create"]
credentials, _ = google.auth.default(scopes=scopes)
# Build the service endpoint for Chat API.
service = build('chat', 'v1', credentials=credentials)
# The space to create the message in.
parent = "spaces/SPACE_NAME"
# Create the request
result = service.spaces().messages().create(
parent=parent,
body={
'text': 'Here is a card created on my behalf:',
'cardsV2': [{
'cardId': 'unique-card-id',
'card': {
'header': {
'title': 'Card Title',
'subtitle': 'Card Subtitle'
},
'sections': [{
'widgets': [{
'textParagraph': {
'text': 'This card is attached to a user message.'
}
}]
}]
}
}]
}
).execute()
print(result)
if __name__ == "__main__":
create_message_with_card()
Java
/**
* This sample shows how to create a message with a card on behalf of a user.
*/
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.json.JsonHttpContent;
import com.google.api.client.json.gson.GsonFactory;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class CreateMessageWithCard {
public static void main(String[] args) throws Exception {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
.createScoped(Arrays.asList("https://www.googleapis.com/auth/chat.messages.create"));
HttpRequestFactory requestFactory = transport.createRequestFactory(new HttpCredentialsAdapter(credentials));
String parent = "spaces/SPACE_NAME";
GenericUrl url = new GenericUrl("https://chat.googleapis.com/v1/" + parent + "/messages");
// Construct the message body
Map<String, Object> message = new HashMap<>();
message.put("text", "Here is a card created on my behalf:");
Map<String, Object> header = new HashMap<>();
header.put("title", "Card Title");
header.put("subtitle", "Card Subtitle");
Map<String, Object> textParagraph = new HashMap<>();
textParagraph.put("text", "This card is attached to a user message.");
Map<String, Object> widget = new HashMap<>();
widget.put("textParagraph", textParagraph);
Map<String, Object> section = new HashMap<>();
section.put("widgets", Collections.singletonList(widget));
Map<String, Object> card = new HashMap<>();
card.put("header", header);
card.put("sections", Collections.singletonList(section));
Map<String, Object> cardWithId = new HashMap<>();
cardWithId.put("cardId", "unique-card-id");
cardWithId.put("card", card);
message.put("cardsV2", Collections.singletonList(cardWithId));
HttpRequest request = requestFactory.buildPostRequest(url, new JsonHttpContent(jsonFactory, message));
System.out.println(request.execute().parseAsString());
}
}
Apps Komut Dosyası
/**
* This sample shows how to create a message with a card on behalf of a user.
*/
function createMessageWithCard() {
const parent = 'spaces/SPACE_NAME';
const url = `https://chat.googleapis.com/v1/${parent}/messages`;
const message = {
text: 'Here is a card created on my behalf:',
cardsV2: [{
cardId: 'unique-card-id',
card: {
header: {
title: 'Card Title',
subtitle: 'Card Subtitle'
},
sections: [{
widgets: [{
textParagraph: {
text: 'This card is attached to a user message.'
}
}]
}]
}
}]
};
const options = {
method: 'post',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
},
contentType: 'application/json',
payload: JSON.stringify(message),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(url, options);
console.log(response.getContentText());
} catch (err) {
console.log('Failed to create message: ' + err.message);
}
}
Kartları eşzamansız olarak güncelleme
Kart içeren bir mesaj oluşturduktan sonra uygulama kimlik doğrulamasını kullanarak kartları eşzamansız olarak güncelleyebilirsiniz. Bu sayede uygulamanız, kullanıcı etkileşimi gerektirmeden kart içeriğini yenileyebilir. Yalnızca kartı kullanıcının mesajına ekleyen Chat uygulaması kartı değiştirebilir. Kullanıcı mesaj metnini düzenlerse uygulamaya ait kartlar kaldırılır ve uygulamanız artık bu kartları güncelleyemez.
Kartları güncellemek için replaceCards yöntemini aşağıdaki bilgilerle çağırın:
chat.botyetkilendirme kapsamı.- Güncellenecek mesajın
name. - Yeni
cardsV2listesi. Bu işlem, mesajdaki mevcut tüm kartların yerini alır. Boş bir liste sağlarsanız kartlar kaldırılır.
Aşağıdaki örnekte, bir mesajın kartlarının nasıl güncelleneceği gösterilmektedir:
Node.js
/**
* This sample shows how to update cards on a message.
*/
const {google} = require('googleapis');
const {auth} = require('google-auth-library');
async function main() {
// Create a client with app credentials
const authClient = await auth.getClient({
scopes: ['https://www.googleapis.com/auth/chat.bot']
});
google.options({auth: authClient});
// Initialize the Chat API
const chat = google.chat({version: 'v1'});
// The message to update.
const messageName = 'spaces/SPACE_NAME/messages/MESSAGE_ID';
// Create the request
const request = {
name: messageName,
requestBody: {
cardsV2: [{
cardId: 'unique-card-id',
card: {
header: {
title: 'Updated Card Title',
subtitle: 'Updated Card Subtitle'
},
sections: [{
widgets: [{
textParagraph: {
text: 'The card content has been updated asynchronously.'
}
}]
}]
}
}]
}
};
// Call the API
await chat.spaces.messages.replaceCards(request);
console.log('Cards updated.');
}
main().catch(console.error);
Python
"""
This sample shows how to update cards on a message.
"""
from google.oauth2 import service_account
from googleapiclient.discovery import build
import google.auth
def replace_message_cards():
# Create a client with app credentials
scopes = ["https://www.googleapis.com/auth/chat.bot"]
credentials, _ = google.auth.default(scopes=scopes)
# Build the service endpoint for Chat API.
service = build('chat', 'v1', credentials=credentials)
# The message to update.
message_name = "spaces/SPACE_NAME/messages/MESSAGE_ID"
# Create the request
result = service.spaces().messages().replaceCards(
name=message_name,
body={
'cardsV2': [{
'cardId': 'unique-card-id',
'card': {
'header': {
'title': 'Updated Card Title',
'subtitle': 'Updated Card Subtitle'
},
'sections': [{
'widgets': [{
'textParagraph': {
'text': 'The card content has been updated asynchronously.'
}
}]
}]
}
}]
}
).execute()
print("Cards updated.")
if __name__ == "__main__":
replace_message_cards()
Java
/**
* This sample shows how to update cards on a message.
*/
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.json.JsonHttpContent;
import com.google.api.client.json.gson.GsonFactory;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class ReplaceMessageCards {
public static void main(String[] args) throws Exception {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
GsonFactory jsonFactory = GsonFactory.getDefaultInstance();
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
.createScoped(Arrays.asList("https://www.googleapis.com/auth/chat.bot"));
HttpRequestFactory requestFactory = transport.createRequestFactory(new HttpCredentialsAdapter(credentials));
String messageName = "spaces/SPACE_NAME/messages/MESSAGE_ID";
GenericUrl url = new GenericUrl("https://chat.googleapis.com/v1/" + messageName + ":replaceCards");
// Construct the body
Map<String, Object> header = new HashMap<>();
header.put("title", "Updated Card Title");
header.put("subtitle", "Updated Card Subtitle");
Map<String, Object> textParagraph = new HashMap<>();
textParagraph.put("text", "The card content has been updated asynchronously.");
Map<String, Object> widget = new HashMap<>();
widget.put("textParagraph", textParagraph);
Map<String, Object> section = new HashMap<>();
section.put("widgets", Collections.singletonList(widget));
Map<String, Object> card = new HashMap<>();
card.put("header", header);
card.put("sections", Collections.singletonList(section));
Map<String, Object> cardWithId = new HashMap<>();
cardWithId.put("cardId", "unique-card-id");
cardWithId.put("card", card);
Map<String, Object> body = new HashMap<>();
body.put("cardsV2", Collections.singletonList(cardWithId));
HttpRequest request = requestFactory.buildPostRequest(url, new JsonHttpContent(jsonFactory, body));
request.execute();
System.out.println("Cards updated.");
}
}
Apps Komut Dosyası
/**
* This sample shows how to update cards on a message.
*/
function replaceMessageCards() {
const messageName = 'spaces/SPACE_NAME/messages/MESSAGE_ID';
const url = `https://chat.googleapis.com/v1/${messageName}:replaceCards`;
const request = {
cardsV2: [{
cardId: 'unique-card-id',
card: {
header: {
title: 'Updated Card Title',
subtitle: 'Updated Card Subtitle'
},
sections: [{
widgets: [{
textParagraph: {
text: 'The card content has been updated asynchronously.'
}
}]
}]
}
}]
};
const options = {
method: 'post',
headers: {
Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
},
contentType: 'application/json',
payload: JSON.stringify(request),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(url, options);
console.log('Cards updated.');
} catch (err) {
console.log('Failed to update cards: ' + err.message);
}
}
Sınırlamalar
Bir kullanıcı adına kart içeren mesajlar oluştururken veya kartları güncellerken Chat uygulamasının alanın üyesi olması gerekir. Bu şart aşağıdaki durumlarda geçerlidir:
- Kullanıcı adına kartlarla mesaj oluşturma.
- Mesajın kartlarını değiştirme veya güncelleme
Bu şart, kullanıcı kimlik doğrulaması kullanan diğer API'lerden farklıdır. Diğer API'ler genellikle uygulamanın alanın üyesi olmasını gerektirmez.
replaceCardsyöntemi, kart değiştirme ve kaldırma işlemlerini destekler. Kartları değiştirirken ek kartlar ekleyebilirsiniz ancak kart içermeyen bir mesaja kart ekleyemezsiniz.Chat uygulaması yalnızca bir mesaja eklediği kartları değiştirebilir, diğer Chat uygulamalarının eklediği kartları değiştiremez.
Kullanıcı mesaj metnini düzenlerse Chat uygulamasına ait kartlar kaldırılır ve artık güncellenemez.