Bu sayfada, harici tetikleyiciler kullanarak Chat alanına asenkron mesaj göndermek için webhook'ın nasıl ayarlanacağı açıklanmaktadır. Örneğin, bir sunucu kullanımdan kaldırıldığında Chat'te nöbetçi personeli bilgilendirecek bir izleme uygulaması yapılandırabilirsiniz. Chat uygulamasıyla senkronize mesaj göndermek için Mesaj gönderme başlıklı makaleyi inceleyin.
Bu tür bir mimari tasarımında, iletişim tek yönlü olduğundan kullanıcılar webhook'la veya bağlı harici uygulamayla etkileşim kuramaz. Webhook'lar sohbet değildir. Kullanıcılardan mesaj alamaz veya mesajlara yanıt veremez ya da Chat uygulaması etkileşim etkinliklerini göremez. Mesajlara yanıt vermek için webhook yerine Chat uygulaması oluşturun.
Webhook'lar teknik olarak Chat uygulaması olmasa da (webhook'lar standart HTTP istekleri kullanarak uygulamaları birbirine bağlar) bu sayfada basitleştirme amacıyla webhook'lardan Chat uygulaması olarak bahsedilmektedir. Her webhook yalnızca kaydedildiği Chat alanında çalışır. Gelen webhook'lar doğrudan mesajlarda çalışır ancak yalnızca tüm kullanıcıların Chat uygulamalarını etkinleştirdiği durumlarda çalışır. Google Workspace Marketplace'te webhook yayınlayamazsınız.
Aşağıdaki şemada, Chat'e bağlı bir webhook'ın mimarisi gösterilmektedir:
Önceki şemada, Chat uygulamasında aşağıdaki bilgi akışı gösterilmektedir:
- Chat uygulama mantığı, proje yönetimi sistemi veya destek kaydı aracı gibi harici üçüncü taraf hizmetlerinden bilgi alır.
- Chat uygulaması mantığı, belirli bir Chat alanına webhook URL'si kullanarak mesaj gönderebilen bir bulut veya şirket içi sistemde barındırılır.
- Kullanıcılar, söz konusu Chat alanındaki Chat uygulamasından mesaj alabilir ancak Chat uygulamasıyla etkileşimde bulunamaz.
Ön koşullar
Python
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı Google Workspace kuruluşunuz, kullanıcıların gelen webhook'lar eklemesine ve kullanmasına izin vermelidir.
- Python 3.6 veya sonraki sürümler
- pip paket yönetim aracı
httplib2
kitaplığı. Kitaplığı yüklemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:pip install httplib2
Google Chat alanı. Google Chat API'yi kullanarak alan oluşturmak için Alan oluşturma başlıklı makaleyi inceleyin. Chat'te grup oluşturmak için Yardım Merkezi belgelerini inceleyin.
Node.js
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı Google Workspace kuruluşunuz, kullanıcıların gelen webhook'lar eklemesine ve kullanmasına izin vermelidir.
- Node.js 14 veya daha yeni sürümler
- npm paket yönetim aracı
- Google Chat alanı. Google Chat API'yi kullanarak alan oluşturmak için Alan oluşturma başlıklı makaleyi inceleyin. Chat'te grup oluşturmak için Yardım Merkezi belgelerini inceleyin.
Java
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı Google Workspace kuruluşunuz, kullanıcıların gelen webhook'lar eklemesine ve kullanmasına izin vermelidir.
- Java 11 veya üzeri
- Maven paket yönetimi aracı
- Google Chat alanı. Google Chat API'yi kullanarak alan oluşturmak için Alan oluşturma başlıklı makaleyi inceleyin. Chat'te grup oluşturmak için Yardım Merkezi belgelerini inceleyin.
Apps Komut Dosyası
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı Google Workspace kuruluşunuz, kullanıcıların gelen webhook'lar eklemesine ve kullanmasına izin vermelidir.
- Bağımsız bir Apps Komut Dosyası projesi oluşturun ve Gelişmiş Chat Hizmeti'ni etkinleştirin.
- Google Chat alanı. Google Chat API'yi kullanarak alan oluşturmak için Alan oluşturma başlıklı makaleyi inceleyin. Chat'te grup oluşturmak için Yardım Merkezi belgelerini inceleyin.
Web kancası oluşturma
Webhook oluşturmak için webhook'u, mesaj almak istediğiniz Chat alanına kaydedin ve ardından mesaj gönderen bir komut dosyası yazın.
Gelen webhook'ı kaydetme
- Bir tarayıcıda Chat'i açın. Webhook'lar Chat mobil uygulamasından yapılandırılamaz.
- Webhook eklemek istediğiniz alana gidin.
- Alan başlığının yanındaki daha fazla genişletme okunu, ardından Uygulamalar ve entegrasyonları'nı tıklayın.
Webhook ekle'yi tıklayın.
Ad alanına
Quickstart Webhook
girin.Avatar URL'si alanına
https://developers.google.com/chat/images/chat-product-icon.png
girin.Kaydet'i tıklayın.
Web kancası URL'sini kopyalamak için
Diğer'i ve ardından Bağlantıyı kopyala'yı tıklayın.
Webhook komut dosyasını yazma
Örnek webhook komut dosyası, webhook URL'sine bir POST
isteği göndererek webhook'ın kayıtlı olduğu alana bir mesaj gönderir. Chat API, Message
örneğiyle yanıt verir.
Webhook komut dosyası oluşturmayı öğrenmek için bir dil seçin:
Python
Çalışma dizininizde
quickstart.py
adlı bir dosya oluşturun.quickstart.py
alanına aşağıdaki kodu yapıştırın:url
değişkeninin değerini, web kancasını kaydettiğinizde kopyaladığınız web kancası URL'siyle değiştirin.
Node.js
Çalışma dizininizde
index.js
adlı bir dosya oluşturun.index.js
alanına aşağıdaki kodu yapıştırın:url
değişkeninin değerini, web kancasını kaydettiğinizde kopyaladığınız web kancası URL'siyle değiştirin.
Java
Çalışma dizininizde
pom.xml
adlı bir dosya oluşturun.pom.xml
alanına aşağıdakileri kopyalayıp yapıştırın:Çalışma dizininizde aşağıdaki dizin yapısını oluşturun
src/main/java
.src/main/java
dizinindeApp.java
adlı bir dosya oluşturun.App.java
alanına aşağıdaki kodu yapıştırın:URL
değişkeninin değerini, webhook'u kaydettiğinizde kopyaladığınız webhook URL'siyle değiştirin.
Apps Komut Dosyası
Tarayıcıda Apps Komut Dosyası'na gidin.
Yeni Proje'yi tıklayın.
Aşağıdaki kodu yapıştırın:
url
değişkeninin değerini, webhook'u kaydettiğinizde kopyaladığınız webhook URL'siyle değiştirin.
Webhook komut dosyasını çalıştırma
Komut satırında komut dosyasını çalıştırın:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Komut Dosyası
- Çalıştır'ı tıklayın.
Kodu çalıştırdığınızda webhook, kaydettiğiniz alana bir mesaj gönderir.
Mesaj dizisi başlatma veya mesaj dizisini yanıtlama
Mesaj isteği gövdesinin bir parçası olarak
spaces.messages.thread.threadKey
değerini belirtin. Bir ileti dizisini başlatıyor veya yanıtlıyor olmanız fark etmeksizinthreadKey
için aşağıdaki değerleri kullanın:Mesaj dizisi başlatıyorsanız
threadKey
değerini istediğiniz bir dizeye ayarlayın ancak mesaj dizisine yanıt göndermek için bu değeri not edin.Bir mesaj dizisini yanıtlıyorsanız mesaj dizisi başlatılırken ayarlanan
threadKey
değerini belirtin. Örneğin, ilk mesajdaMY-THREAD
kullanıldığı bir mesaj dizisine yanıt göndermek içinMY-THREAD
değerini ayarlayın.
Belirtilen
threadKey
bulunamazsa ileti dizisi davranışını tanımlayın:Bir mesaj dizisini yanıtlayın veya yeni bir mesaj dizisi başlatın.
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
parametresini webhook URL'sine ekleyin. Bu URL parametresinin iletilmesi, Chat'in belirtilenthreadKey
değerini kullanarak mevcut bir ileti dizisini aramasına neden olur. İleti dizisi bulunursa ileti, söz konusu ileti dizisine yanıt olarak yayınlanır. Hiçbiri bulunamazsa mesaj,threadKey
'ye karşılık gelen yeni bir mesaj dizisi başlatır.İleti dizisini yanıtlayın veya hiçbir şey yapmayın.
messageReplyOption=REPLY_MESSAGE_OR_FAIL
parametresini webhook URL'sine ekleyin. Bu URL parametresinin iletilmesi, Chat'in belirtilenthreadKey
değerini kullanarak mevcut bir ileti dizisini aramasına neden olur. İleti dizisi bulunursa ileti, söz konusu ileti dizisine yanıt olarak yayınlanır. Hiçbiri bulunamazsa mesaj gönderilmez.
Daha fazla bilgi için
messageReplyOption
sayfasına bakın.
Aşağıdaki kod örneği, bir mesaj dizisini başlatır veya yanıtlar:
Python
Node.js
Apps Komut Dosyası
Hataları işleme
Webhook istekleri aşağıdakiler dahil olmak üzere çeşitli nedenlerle başarısız olabilir:
- Geçersiz istek.
- Webhook veya webhook'u barındıran alan silinir.
- Ağ bağlantısı veya kota sınırları gibi aralıklı sorunlar
Webhook'ınızı oluştururken aşağıdakileri yaparak hataları uygun şekilde ele almalısınız:
- Hatayı günlüğe kaydetme.
- Zamana dayalı, kota veya ağ bağlantısı hataları için isteği, üstel geri yüklemeyle yeniden deneyebilirsiniz.
- Hiçbir şey yapmaz. Webhook mesajının gönderilmesi önemli değilse bu uygun bir seçenektir.
Google Chat API, hataları google.rpc.Status
olarak döndürür. Bu değer, karşılaşılan hatanın türünü belirten bir HTTP hatası code
içerir: istemci hatası (400 serisi) veya sunucu hatası (500 serisi). Tüm HTTP eşlemelerini incelemek için google.rpc.Code
bölümüne bakın.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
HTTP durum kodlarını nasıl yorumlayacağınızı ve hataları nasıl ele alacağınızı öğrenmek için Hatalar başlıklı makaleyi inceleyin.
Sınırlamalar ve dikkat edilmesi gereken hususlar
- Google Chat API'de bir webhook ile mesaj oluştururken yanıt, mesajın tamamını içermiyor.
Yanıt yalnızca
name
vethread.name
alanlarını doldurur. - Webhook'lar, alandaki tüm Chat uygulamaları arasında paylaşılan 60 saniyede 60
spaces.messages.create
alan sorgu sınırına tabidir. Chat API kotaları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.