Bu kılavuzda, Google Chat API bir Chat uygulaması adına gönderin. İlk olarak, hizmet hesabı oluşturma konusunda size yol gösterir. Daha sonra bu risklerin Chat ile kimlik doğrulamak için hizmet hesabını kullanan bir komut dosyası yazmak API'ye gidip Chat alanında mesaj yayınlayın.
Chat uygulamaları, eşzamansız çağrı yaparken kimlik doğrulaması yapmak için hizmet hesaplarını kullanabilir Google Chat API'yi kullanarak:
- Google Chat'e mesaj gönderme:
spaces.messages.create
alıcı:- Uzun süreli arka plan işinin çalışması tamamlandığında kullanıcıları bilgilendirin.
- Bir sunucunun çevrimdışı olduğu konusunda kullanıcıları uyarın.
- Bir müşteri desteği ekibinden yeni açılan bir müşteri destek kaydına ilgi göstermesini isteyin.
- Daha önce gönderilmiş iletileri şununla güncelle:
spaces.messages.update
alıcı:- Devam eden işlemde durumunun durumunu değiştirin.
- Görevin atandığı kişiyi veya son tarihini güncelleme.
- Bir alandaki kullanıcıları şununla listele:
Şu tarihe kadar
spaces.members.list
:- Bir alanda kimlerin olduğunu görün.
- Alan üyeliğinin bir ekipteki herkesi içerdiğini doğrulayın.
Bir hizmet hesabıyla kimliği doğrulanırken ilgili verileri almak veya işlem gerçekleştirmek için Chat alanındaki Chat uygulamalarının alanda üyeliği olmalıdır. Örneğin, Alan üyelerini listelemek veya alanda mesaj oluşturmak için Chat uygulamasının alanın bir üyesi olmalıdır.
Chat uygulamanızın, kullanıcı verilerine erişmesi veya kullanıcının kullanıcı olarak kimlik doğrulaması yapmanız gerekir.
Alan yöneticisiyseniz alan genelinde yetki verme bir uygulamanın hizmet hesabını kullanıcılarınızın hesaplarına erişecek şekilde yetkilendirmek için veri içermeyen her kullanıcının izin vermesi gerekir. Alan genelinde yetkiyi yapılandırdıktan sonra CANNOT TRANSLATE bir kullanıcı hesabının kimliğine bürünmek için hizmet hesabınızı kullanarak API çağrıları yapın. Hizmet hesabı, bir kullanıcının kimliğine bürünür ve bu nedenle kullanıcı kimlik doğrulaması olarak değerlendirilir. Kullanıcı gerektiren tüm işlevler alan genelinde yetkiyi kullanabilirsiniz.
Chat uygulamalarının ne zaman kimlik doğrulama gerektirdiği ve kimlik doğrulama türünü öğrenmek için Gerekli kimlik doğrulama türleri başlıklı makaleyi inceleyin.
Ön koşullar
Java
- JDK 1.7 veya üzeri
- Maven paket yönetim aracı
-
Başlatılmış bir Maven projesi. Yeni bir projeyi ilk kullanıma hazırlamak için şu komutu çalıştırın:
komut satırı arayüzü:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
. - Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir HTTP hizmeti kullanarak etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.
- Chat uygulamasını bir alana ekleyin. Yeni bir sütun eklemek için Chat uygulaması için bkz. Google Chat uygulamaları için etkileşimli özellikleri test edin.
Python
- Python 3.6 veya sonraki sürümler
- pip paket yönetim aracı
- Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir HTTP hizmeti kullanarak etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.
- Chat uygulamasını bir alana ekleyin. Yeni bir sütun eklemek için Chat uygulaması için bkz. Google Chat uygulamaları için etkileşimli özellikleri test edin.
Node.js
- Node.js 14 veya sonraki sürümler
- npm paket yönetim aracı
-
Başlatılmış bir Node.js projesi. Yeni bir projeyi ilk kullanıma hazırlamak için, proje başlatma belgesinde
geçiş yapın, ardından komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
npm init
. - Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir HTTP hizmeti kullanarak etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.
- Chat uygulamasını bir alana ekleyin. Yeni bir sütun eklemek için Chat uygulaması için bkz. Google Chat uygulamaları için etkileşimli özellikleri test edin.
Apps Komut Dosyası
- Etkileşimli özellikler için etkinleştirilmiş bir Google Chat uygulaması. Bir Apps Komut Dosyası'ndaki etkileşimli Chat uygulaması için bu hızlı başlangıç kılavuzunu tamamlayın.
- Chat uygulamasını bir alana ekleyin. Yeni bir sütun eklemek için Chat uygulaması için bkz. Google Chat uygulamaları için etkileşimli özellikleri test edin.
1. Adım: Google Cloud Console'da bir hizmet hesabı oluşturun
Chat uygulamanızın şu işlemler için kullanabileceği bir hizmet hesabı oluşturun: Google API'lerine erişme.
Hizmet hesabı oluşturma
Hizmet hesabı oluşturmak için şu adımları uygulayın:
Google Cloud Console
- Google Cloud konsolunda Menü'ye gidin > IAM ve Yönetici > Hizmet Hesapları.
- Hizmet hesabı oluştur'u tıklayın.
- Hizmet hesabı ayrıntılarını doldurun, ardından Oluştur ve devam et'i tıklayın.
- İsteğe bağlı: Google Cloud projenizin kaynaklarına erişim izni vermek için hizmet hesabınıza roller atayın. Daha ayrıntılı bilgi için Kaynaklara erişim izni verme, erişimi değiştirme ve iptal etme başlıklı makaleyi inceleyin.
- Devam'ı tıklayın.
- İsteğe bağlı: Bu hizmet hesabıyla işlemleri yönetebilen ve gerçekleştirebilen kullanıcıları veya grupları girin. Daha fazla bilgi için Hizmet hesabı kimliğine bürünmeyi yönetme başlıklı makaleye bakın.
- Bitti'yi tıklayın. Hizmet hesabının e-posta adresini not edin.
gcloud CLI
- Hizmet hesabını oluşturun:
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - İsteğe bağlı: Google Cloud projenizin kaynaklarına erişim izni vermek için hizmet hesabınıza roller atayın. Daha ayrıntılı bilgi için Kaynaklara erişim izni verme, erişimi değiştirme ve iptal etme başlıklı makaleyi inceleyin.
Hizmet hesabı, hizmet hesabı sayfasında görünür. Ardından, özel bir hesap oluşturun anahtarını kullanın.
Özel anahtar oluşturma
Hizmet hesabı için özel anahtar oluşturmak ve indirmek üzere şu adımları uygulayın:
- Google Cloud konsolunda Menü'ye gidin > IAM ve Yönetici > Hizmet Hesapları.
- Hizmet hesabınızı seçin.
- Anahtarlar > Anahtar ekle > Yeni anahtar oluştur'u tıklayın.
- JSON'yi seçip Oluştur'u tıklayın.
Yeni ortak/özel anahtar çiftiniz oluşturulur ve cihazınıza indirilir. yeni bir dosya olarak kaydeder. İndirilen JSON dosyasını şuraya
credentials.json
olarak kaydedin: çalışma dizinine ekleyin. Bu dosya, bu anahtarın tek kopyasıdır. Verilerinizin nasıl depolanacağı hakkında bilgi için anahtarınızı güvenli bir şekilde kontrol Hizmet hesabı anahtarlarını yönetme. - Kapat'ı tıklayın.
Hizmet hesapları hakkında daha fazla bilgi için hizmet hesapları inceleyebilirsiniz.
2. Adım: Google istemci kitaplığını ve diğer bağımlılıkları yükleyin
Google istemci kitaplığını ve proje için gereken diğer bağımlılıkları yükleyin.
Java
Google istemci kitaplıklarını ve diğer gerekli bağımlılıkları
Maven projesi için, projenizin dizininde pom.xml
dosyasını düzenleyin ve
bağımlılıkları olan
üçlü kısıtları içerir:
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
Python için Google istemci kitaplıklarını henüz yüklemediyseniz komut satırı arayüzünüzde şu komutu kullanın:
pip3 install --upgrade google-api-python-client google-auth
Node.js
Google istemci kitaplıklarını Node.js projenize eklemek için projesinin dizinine ekleyin ve komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
npm install "@googleapis/chat"
Apps Komut Dosyası
Bu örnekte kullanılan Apps Komut Dosyası kitaplığı için OAuth2 Böylece, hizmet hesabı kimlik doğrulaması için JWT jetonu oluşturabilirsiniz. Kitaplığı eklemek için ekleyin:
- Sol kısımdan Düzenleyici'yi tıklayın.
- Solda, Kütüphaneler'in yanındaki Kitaplık ekle'yi tıklayın .
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
komut dosyası kimliğini girin.- Ara'yı ve ardından Ekle'yi tıklayın.
Bu örnekte kullanılan Gelişmiş Chat hizmeti Google Chat API'yi çağırın. Cihazınızda hizmeti etkinleştirmek için Apps Komut Dosyası projesi:
- Sol kısımdan Düzenleyici'yi tıklayın.
- Solda, Hizmetler'in yanındaki Hizmet ekle'yi tıklayın. .
- Google Chat API'yi seçin.
- Sürüm bölümünde v1'i seçin.
- Ekle'yi tıklayın.
Şu belgenin desteklediği herhangi bir dili kullanabilirsiniz: istemci kitaplıkları.
3. Adım: Chat API ile kimlik doğrulamak için hizmet hesabını kullanan bir komut dosyası yazın
Aşağıdaki kod Bir hizmet hesabı kullanarak Chat API Chat alanına mesaj gönderdiğinde:
Java
- Projenizin dizininde dosyayı açın
src/main/java/com/google/chat/app/authsample/App.java
App.java
içindeki içeriği aşağıdaki kodla değiştirin:package com.google.chat.app.authsample; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Message; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; /** * Authenticates with Chat API via service account credentials, * then creates a Chat message. */ public class App { // Specify required scopes. private static final String CHAT_SCOPE = "https://www.googleapis.com/auth/chat.bot"; // Specify service account details. private static final String PRIVATE_KEY_RESOURCE_URI = "/credentials.json"; public static void main( String[] args ) { try { // Run app. Message response = App.createChatMessage(); // Print details about the created message. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } private static Message createChatMessage() throws Exception { // Build the Chat API client and authenticate with the service account. GoogleCredentials credentials = GoogleCredentials.fromStream( App.class.getResourceAsStream(PRIVATE_KEY_RESOURCE_URI)) .createScoped(CHAT_SCOPE); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials); HangoutsChat chatService = new HangoutsChat.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("auth-sample-app") .build(); // 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. String spaceName = "spaces/SPACE_NAME"; // Create a Chat message. Message message = new Message().setText("Hello, world!"); return chatService.spaces().messages().create(spaceName, message).execute(); } }
Kodda,
SPACE_NAME
değerini boşlukla değiştirin adı (spaces.list
sayfasından alabilirsiniz) yöntemini çağırın.Projenizin dizininde
resources
adlı yeni bir alt dizin oluşturun.Hizmet hesabınız için özel anahtar dosyasının şu adla adlandırıldığından emin olun:
credentials.json
adlı dosyayıresources
alt dizinine kopyalayın.Maven'i özel anahtar dosyasını proje paketine ekleyecek şekilde yapılandırmak için projenizin dizininde
pom.xml
dosyasını düzenleyin ve şunu ekleyin: yapılandırma işlemini<build>
bölümüne ekleyin:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
Maven'i bağımlılıkları proje paketine ekleyecek şekilde yapılandırmak ve uygulamanızın ana sınıfını yürütmek için
pom.xml
dosyasını aşağıdaki yapılandırmayı ekleyin ve<plugins>
bölümü:<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
- Çalışma dizininizde
chat_app_auth.py
adlı bir dosya oluşturun. Aşağıdaki kodu
chat_app_auth.py
bölümüne ekleyin:from apiclient.discovery import build from google.oauth2 import service_account # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = service_account.Credentials.from_service_account_file( 'credentials.json', scopes=SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # 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() # Prints details about the created message. print(result)
Kodda,
SPACE_NAME
değerini boşlukla değiştirin adı (spaces.list
sayfasından alabilirsiniz) yöntemini çağırın. Lütfen hizmet hesabınızın özel anahtar dosyasının adıcredentials.json
.
Node.js
- Projenizin dizininde
chat_app_auth.js
adlı bir dosya oluşturun. Aşağıdaki kodu
chat_app_auth.js
bölümüne ekleyin:const chat = require('@googleapis/chat'); async function createMessage() { const auth = new chat.auth.GoogleAuth({ // Specify service account details. keyFilename: 'credentials.json', // Specify required scopes. scopes: ['https://www.googleapis.com/auth/chat.bot'] }); const authClient = await auth.getClient(); // Create the Chat API client and authenticate with the service account. const chatClient = await chat.chat({ version: 'v1', auth: authClient }); // Create a Chat message. const result = await chatClient.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. requestBody: { 'text': 'Hello, world!' } }); return result; } // Execute function then print details about the created message. createMessage().then(console.log);
Kodda,
SPACE_NAME
değerini boşlukla değiştirin adı (spaces.list
sayfasından alabilirsiniz) yöntemini çağırın. Lütfen hizmet hesabınızın özel anahtar dosyasının adıcredentials.json
.
Apps Komut Dosyası
Apps Komut Dosyası düzenleyicisinde
appsscript.json
dosyasını düzenleyin. ve hizmet hesabı OAuth jetonu:"oauthScopes": [ "https://www.googleapis.com/auth/script.external_request" ]
Aşağıdaki kodu
ChatAppAuth.gs
adlı dosyadaki Apps Komut Dosyası projeniz:// Specify the contents of the file credentials.json. const CREDENTIALS = CREDENTIALS; const SCOPE = 'https://www.googleapis.com/auth/chat.bot'; // 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. const PARENT = 'spaces/SPACE_NAME' /** * Authenticates with Chat API via app credentials, then posts a message. */ function createMessageWithAppCredentials() { try { const service = getService_(); if (!service.hasAccess()) { console.error(service.getLastError()); return; } // Specify the message to create. const message = {'text': 'Hello world!'}; // Call Chat API with a service account to create a message. const result = Chat.Spaces.Messages.create( message, PARENT, {}, // Authenticate with the service account token. {'Authorization': 'Bearer ' + service.getAccessToken()}); // Log details about the created message. console.log(result); } catch (err) { // TODO (developer) - Handle exception. console.log('Failed to create message with error %s', err.message); } } /** * Configures the OAuth library to authenticate with the service account. */ function getService_() { return OAuth2.createService(CREDENTIALS.client_email) .setTokenUrl('https://oauth2.googleapis.com/token') .setPrivateKey(CREDENTIALS.private_key) .setIssuer(CREDENTIALS.client_email) .setSubject(CREDENTIALS.client_email) .setScope(SCOPE) .setPropertyStore(PropertiesService.getScriptProperties()); }
Kodda,
CREDENTIALS
öğesinicredentials.json
dosyasının içeriği.Kodda,
SPACE_NAME
değerini boşlukla değiştirin adı (spaces.list
sayfasından alabilirsiniz) yöntemini çağırın.
4. Adım: Örneğin tamamını çalıştırın
Çalışma dizininizde örneği derleyin ve çalıştırın:
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_app_auth.py
Node.js
node chat_app_auth.js
Apps Komut Dosyası
Apps Komut Dosyası Düzenleyicisi'nde ChatAppAuth.gs
dosyasını açın ve
Çalıştır'ı tıklayın.
Komut dosyanız, Mesaj yayınlayarak yanıt veren Chat API Chat alanında Chat uygulaması olarak kullanın.
Örnekteki sorunları giderin
Bu bölümde, çalışırken karşılaşabileceğiniz yaygın sorunlar açıklanmaktadır bu örneği çalıştırıyor.
Bu uygulamayı kullanma izniniz yok
Komut dosyasını çalıştırırken şu hata mesajını alabilirsiniz:
<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">
Bu hata mesajı, Chat uygulamasında belirtilen alanda Chat mesajları oluşturma izni Chat alanı
Hatayı gidermek için Chat uygulamasını Chat alanına ekleyin komut dosyasında belirtilenden emin olun.
İlgili konular
Chat API'yi inceleyerek Chat API'nin başka neler yapabileceğini öğrenin referans belgeleri.