Bu kılavuzda, alandaki kısa mesajları veya kart mesajlarını güncellemek için Google Chat API'nin Message
kaynağındaki patch
yönteminin nasıl kullanılacağı açıklanmıştır. Mesaj özelliklerini veya kart içeriğini değiştirmek için bir mesajı güncelleyin. Kart mesajlarının başına veya
kısa mesajına kart ekleyebilirsiniz.
Chat API update
yöntemini de destekler ancak PATCH
HTTP isteği kullanırken update
PUT
HTTP isteği kullandığı için patch
yönteminin çağrılmasını önemle tavsiye ederiz. Daha fazla bilgi için AIP-134'ün PATCH
ve PUT
bölümüne bakın.
Message
kaynağı, Google Chat'te bir metin veya kart mesajı temsil eder. İlgili yöntemleri çağırarak Google Chat API'de bir mesajı create
, get
, update
veya delete
yapabilirsiniz. Kısa mesajlar ve kart mesajlar hakkında daha fazla bilgi edinmek için Google Chat mesajlarına genel bakış başlıklı makaleyi inceleyin.
Ön koşullar
Python
- Python 3.6 veya sonraki sürümler
- pip paket yönetimi aracı
Python için en yeni Google istemci kitaplıkları. Bunları yüklemek veya güncellemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:
pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth
- Google Chat API'nin etkin ve yapılandırılmış olduğu bir Google Cloud projesi. Adımlar için Google Chat uygulaması oluşturma başlıklı makaleye göz atın.
Chat uygulaması için yapılandırılan yetkilendirme:
- Bir kısa mesajı
güncellemek için aşağıdaki kimlik doğrulama yöntemlerinin her ikisi de desteklenir:
- Kullanıcı kimlik doğrulaması,
chat.messages
yetkilendirme kapsamıyla ilgili kullanıcı tarafından oluşturulan mesajları güncelleyebilir. chat.bot
yetkilendirme kapsamıyla uygulama kimlik doğrulaması, söz konusu uygulama tarafından oluşturulan mesajları güncelleyebilir.
- Kullanıcı kimlik doğrulaması,
- Kart mesajı güncelleme işlemi için
chat.bot
yetkilendirme kapsamıyla uygulama kimlik doğrulaması gerekir.
- Bir kısa mesajı
güncellemek için aşağıdaki kimlik doğrulama yöntemlerinin her ikisi de desteklenir:
Kullanıcı kimlik doğrulaması kullanarak kısa mesajı güncelleme veya kart mesajının başına kısa mesaj ekleme
Bir kısa mesajı kullanıcı kimlik doğrulaması ile güncellemek için isteğinizde aşağıdakileri iletin:
chat.messages
yetkilendirme kapsamı.- Güncellenecek mesajın
name
. updateMask='text'
- Güncellenen mesajı belirten
body
.
Güncellenen mesaj bir kart mesajıysa kısa mesaj, kart mesajının başına eklenir (göstermeye devam eder).
Kısa mesajları güncellemek veya kullanıcı kimlik doğrulaması içeren kart mesajının başına kısa mesaj eklemek için aşağıdaki adımları uygulayın:
Python
- Çalışma dizininizde
chat_update_text_message_user.py
adında bir dosya oluşturun. chat_update_text_message_user.py
içine şu kodu ekleyin:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
Kodda aşağıdakileri değiştirin:
SPACE
: Chat API'dekispaces.list
yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.MESSAGE
: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
Çalışma dizininizde örneği derleyip çalıştırın:
python3 chat_update_text_message_user.py
Uygulama kimlik doğrulaması kullanarak kısa mesajı güncelleme veya kart mesajının başına kısa mesaj ekleme
Bir kısa mesajı uygulama kimlik doğrulaması ile güncellemek için isteğinizde aşağıdakileri iletin:
chat.bot
yetkilendirme kapsamı.- Güncellenecek mesajın
name
. updateMask='text'
- Güncellenen mesajı belirten
body
.
Güncellenen mesaj bir kart mesajıysa kısa mesaj, kart mesajının başına eklenir (göstermeye devam eder).
Kısa mesajı kısa mesaj olarak güncellemek veya uygulama kimlik doğrulaması içeren kart mesajının başına kısa mesaj eklemek için aşağıdaki adımları uygulayın:
Python
- Çalışma dizininizde
chat_update_text_message_app.py
adında bir dosya oluşturun. chat_update_text_message_app.py
içine şu kodu ekleyin:from google.oauth2 import service_account from apiclient.discovery import build # 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') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Print Chat API's response in your command line interface. print(result)
Kodda aşağıdakileri değiştirin:
SPACE
: Chat API'dekispaces.list
yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.MESSAGE
: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
Çalışma dizininizde örneği derleyip çalıştırın:
python3 chat_update_text_message_app.py
Kart mesajlarını güncelleme veya kısa mesaja kart mesajı ekleme
Bir kart mesajını güncellemek için isteğinizde aşağıdakileri iletin:
chat.bot
yetkilendirme kapsamı. Kart mesajı güncellemek için uygulama kimlik doğrulaması gerekir.- Güncellenecek mesajın
name
. updateMask='cardsV2'
- Güncellenen mesajı belirten
body
.
Güncellenen mesaj bir kısa mesaj ise kısa mesajın sonuna bir kart eklenir (ilgili kart gösterilmeye devam eder). Güncellenen mesajın kendisi bir kartsa gösterilen kart güncellenir.
Bir mesajı kart mesajı olarak güncellemek için:
Python
- Çalışma dizininizde
chat_update_card_message.py
adında bir dosya oluşturun. chat_update_card_message.py
içine şu kodu ekleyin:from google.oauth2 import service_account from apiclient.discovery import build # 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') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='cardsV2', body= { 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() # Print Chat API's response in your command line interface. print(result)
Kodda aşağıdakileri değiştirin:
SPACE
: Chat API'dekispaces.list
yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.MESSAGE
: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
Çalışma dizininizde örneği derleyip çalıştırın:
python3 chat_update_card_message.py
Chat API, güncellenen mesajla ilgili ayrıntıları içeren bir Message
örneği döndürür.
Bir mesajı aynı anda birden fazla alan yoluna sahip şekilde güncelleme
Bir mesaj güncellendiğinde, tek seferde birden çok mesaj alanı yolunu güncelleyebilirsiniz. Örneğin, bir güncelleme mesajı isteğinde, text
ve cardsv2
alan yollarında aynı anda değişiklik belirleyerek hem mesaj metnini hem de kartı güncelleyebilirsiniz. Mesaj yalnızca metin içeriyorsa ve kart içermiyorsa mesaja bir kart eklenir. Desteklenen alan yolları hakkında daha fazla bilgi için updateMask
parametrelerine bakın.
Kullanıcı kimlik doğrulaması ile bir mesajın hem text
hem de card
kodunu güncellemek için isteğinizde aşağıdakileri iletin:
chat.messages
yetkilendirme kapsamı.- Güncellenecek mesajın
name
. Güncellenecek mesaj alanı yollarını virgülle ayrılmış olarak belirten bir
updateMask
:updateMask='text', 'cardsV2'
.Güncellenen tüm alan yolları dahil olmak üzere, güncellenen mesajı belirten bir
body
.
Kullanıcı kimlik doğrulaması ile bir iletideki text
ve cardsV2
alan yollarını şu şekilde güncelleyebilirsiniz:
Python
- Çalışma dizininizde
chat_update_text_message_user.py
adında bir dosya oluşturun. chat_update_text_message_user.py
içine şu kodu ekleyin:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'client_secrets.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text,cardsV2', body= {'text': 'Updated message!', 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
Kodda aşağıdakileri değiştirin:
SPACE
: Chat API'dekispaces.list
yönteminden veya bir alanın URL'sinden edinebileceğiniz bir alan adıdır.MESSAGE
: Chat API ile eşzamansız olarak mesaj oluşturduktan sonra döndürülen yanıt gövdesinden veya oluşturma aşamasında mesaja atanan özel adla elde edebileceğiniz mesaj adı.
Çalışma dizininizde örneği derleyip çalıştırın:
python3 chat_update_text_message_user.py
İlgili konular
- Mesajı biçimlendirme.
- Mesajı silebilirsiniz.
- Bir mesajla ilgili ayrıntıları alma.
- Alandaki mesajları listeleyin.
- Mesaj gönderin.