Gelen webhook'larla Google Chat'e mesaj gönderme

Gelen webhook'lar, Google Chat'e Chat uygulaması olmayan uygulamalardan eşzamansız mesajlar göndermenizi sağlar. Örneğin, bir sunucu kapandığında Google Chat'te görevli çalışanları bilgilendirmek için bir izleme uygulaması yapılandırabilirsiniz.

Chat uygulamasında, Chat alanındaki bir mesajı eşzamansız olarak göndermek, güncellemek veya silmek için Mesaj oluşturma, okuma, güncelleme, silme başlıklı makaleyi inceleyin.

Google Chat'e eşzamansız mesajlar göndermek için gelen webhook'lar.

Ön koşullar

Bu kılavuzdaki örneği çalıştırmak için aşağıdakilere ihtiyacınız vardır:

Python

  • Python 3.10.7 veya sonraki sürümler.
  • İnternete ve web tarayıcısına erişim.
  • Google Chat'e erişimi olan bir Google Workspace hesabı.
  • Mevcut bir Google Chat alanı.
  • httplib2 kitaplığı. Gerekirse kitaplığı pip kullanarak yüklemek için aşağıdaki komut satırı arayüzü (CLI) komutunu çalıştırın:

    pip install httplib2
    

Node.js

Apps Komut Dosyası

Java

Webhook oluşturma

Bir webhook oluşturmak için, mesajı almak istediğiniz Google Chat alanına kaydedin ve ardından mesaj gönderen bir komut dosyası yazın.

1. Adım: Gelen webhook'u kaydedin

  1. Bir web tarayıcısında Google Chat'i açın.
  2. Webhook eklemek istediğiniz alana gidin.
  3. En üstte, alan başlığının yanındaki Aşağı Ok'u > Uygulamalar ve entegrasyonlar'ı tıklayın.
  4. Webhook'ları yönet'i tıklayın.
  5. Bu alanda zaten başka webhook'lar varsa Add another (Başka bir tane ekle) seçeneğini tıklayın. Aksi takdirde bu adımı atlayın.
  6. Name (Ad) için "Quickstart Webhook" yazın.
  7. Avatar URL'si için https://developers.google.com/chat/images/chat-product-icon.png girin.
  8. KAYDET'i tıklayın.
  9. Tüm webhook URL'sini kopyalamak için Kopyala'yı tıklayın.
  10. Gelen webhook'lar iletişim kutusunu kapatmak için kutunun dışını tıklayın.

2. Adım: Webhook komut dosyasını yazın

Örnek webhook komut dosyası, webhook URL'sine bir mesaj oluştur isteği POST vererek webhook'un kaydedildiği alana bir mesaj gönderir. Google Chat API, Message örneğiyle yanıt verir.

Webhook komut dosyasının nasıl oluşturulacağıyla ilgili talimatlar için aşağıdan bir dil seçin:

Python

  1. Çalışma dizininizde, quickstart.py adlı bir dosya oluşturun.

  2. Aşağıdaki kodu kopyalayıp quickstart.py bölümüne yapıştırın:

    python/webhook/hızlı başlangıç.py
    from json import dumps
    
    from httplib2 import Http
    
    WEBHOOK_URL = "[URL FROM WEBHOOK]"
    
    def main():
        """Google Chat incoming webhook quickstart."""
        url = WEBHOOK_URL
        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. url değişkeninin değerini, 1. Adım'da kopyaladığınız webhook URL'si ile değiştirin: Gelen webhook'u kaydedin.

Node.js

  1. Çalışma dizininizde, index.js adlı bir dosya oluşturun.

  2. Aşağıdaki kodu kopyalayıp index.js bölümüne yapıştırın:

    düğüm/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. webhookURL değişkeninin değerini, 1. Adım'da kopyaladığınız webhook URL'si ile değiştirin: Gelen webhook'u kaydedin.

Apps Komut Dosyası

  1. Apps Komut Dosyası sayfasına gidin.

  2. Yeni Proje'yi tıklayın

  3. Aşağıdaki kodu kopyalayıp yapıştırın:

    Apps-komut/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. url değişkeninin değerini, 1. Adım'da kopyaladığınız webhook URL'si ile değiştirin: Gelen webhook'u kaydedin.

Java

  1. Çalışma dizininizde, pom.xml adlı bir dosya oluşturun.

  2. Aşağıdaki metni kopyalayıp pom.xml bölümüne yapıştırın:

    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. Çalışma dizininizde aşağıdaki dizin yapısını (src/main/java) oluşturun.

  4. src/main/java dizininde App.java adlı bir dosya oluşturun.

  5. Aşağıdaki kodu kopyalayıp App.java bölümüne yapıştırın:

    java/webhook/src/main/java/com/google/hangouts/chat/webhook/Uygulama.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. URL değişkeninin değerini, 1. Adım'da kopyaladığınız webhook URL'si ile değiştirin: Gelen webhook'u kaydedin.

3. Adım: Webhook komut dosyasını çalıştırın

KSA'da çalışma dizininizden aşağıdaki komutu çalıştırarak örneği çalıştırın:

Python

  python3 quickstart.py

Node.js

  node index.js

Apps Komut Dosyası

  • Çalıştır'ı tıklayın.

Java

  mvn compile exec:java -Dexec.mainClass=App

Örnek kodu çalıştırdığınızda webhook, kodu kaydettiğiniz alana bir mesaj gönderir.

Mesaj dizisi başlatma veya mesaj dizisini yanıtlama

Webhook URL'sine threadKey parametresini ekleyerek bir ileti dizisi başlatabilir veya ileti dizisini yanıtlayabilirsiniz. Her threadKey, onu ayarlayan uygulamaya özeldir. İki farklı Chat uygulaması veya webhook'lar aynı threadKey değerine ayarlanırsa iki farklı ileti dizisi başlar.

Mesaj dizisi başlatma

Webhook içeren bir ileti dizisinin ilk mesajını yayınlamak için threadKey ve messageReplyOption parametrelerini webhook URL'sine ekleyin. threadKey öğesini rastgele bir dize olarak ayarlayın ancak bunun ne olduğunu unutmayın. İleti dizisine bir yanıt göndermek için bunu tekrar belirtmeniz gerekir.

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

Mesaj dizisine yanıt verme

Mevcut bir mesaj dizisine mesaj göndermek için threadKey ve messageReplyOption parametrelerini, mesaj dizisini başlatmak amacıyla kullanılan değere ayarlanmış webhook URL'sine ekleyin. Örneğin, aşağıdaki URL'ye bir ileti gönderdiğinizde threadKey olan MY-THREAD ileti dizisine messageReplyOption, REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD gönderilir:

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

Sınırlamalar ve dikkat edilmesi gereken noktalar

Webhook'ları yapılandırırken bu sınırları ve dikkat edilmesi gereken noktaları not alın:

  • Her webhook yalnızca kayıtlı olduğu Chat alanında çalışır.

  • Google Workspace Marketplace'te webhook yayınlayamazsınız.

  • Webhook'lar birbiriyle iç içe değildir. Kullanıcılar veya etkinlikler Google Chat'ten yanıt alamaz ya da alamaz.

  • Alanınızda yalnızca belirli kuruluş birimleri Chat uygulamaları etkinse gelen web kancaları aşağıdaki hatayı döndürür:

    {
      "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
      }
    }
    
  • Gelen webhook'lar doğrudan mesajlarda çalışır, ancak bu yalnızca tüm kullanıcılar Chat uygulamalarını etkinleştirdiğinde gerçekleşir.

  • Webhook&#39;ları yönetme simgesiWebhook'ları yönet özelliği yalnızca bir web tarayıcısından kullanılabildiğinden, webhook'ların Chat web uygulamasından ayarlanması gerekir. Webhook'lar, Chat mobil uygulamasından yapılandırılamaz.