Bu kılavuzda, Google Chat API'nin Media
kaynağında upload
yöntemini kullanarak Google Chat'e medya (dosya) yükleme ve ardından bu medyayı bir mesaja ekleme açıklanmaktadır.
Kullanıcı uygulamanıza mesaj gönderdiğinde Google Chat, MESSAGE
etkileşim etkinliği gönderir.
Uygulamanızın aldığı etkileşim etkinliği, ekler de dahil olmak üzere etkileşim etkinliğini temsil eden JSON yükü olan bir istek gövdesi içerir. Ekteki veriler, ekin yüklenen içerik (yerel dosya) olup olmadığına veya Drive'da depolanan bir dosya olup olmadığına bağlı olarak farklılık gösterir. Media
Kaynak, Google Chat'e yüklenen resim, video ve doküman gibi dosyaları temsil eder.
Attachment
kaynağı, bir iletiye eklenmiş bir medya örneğini (dosya) temsil eder. Attachment
kaynağı, ekle ilgili meta verileri (ör. nereye kaydedildiği) içerir.
Ön koşullar
Python
- Google Chat'e erişimi olan bir Business veya Enterprise Google Workspace hesabı.
- Ortamınızı ayarlayın:
- Google Cloud projesi oluşturun.
- OAuth izin ekranını yapılandırın.
- Google Chat API'yi etkinleştirin ve yapılandırın. Chat uygulamanız için ad, simge ve açıklama ekleyin.
- Python Google API İstemci Kitaplığı'nı yükleyin.
- Masaüstü uygulaması için
OAuth istemci kimliği kimlik bilgileri oluşturun. Bu kılavuzdaki örneği çalıştırmak için kimlik bilgilerini
credentials.json
adlı bir JSON dosyası olarak yerel dizininize kaydedin.
- Kullanıcı kimlik doğrulamasını destekleyen bir yetkilendirme kapsamı seçin.
Dosya eki olarak yükleme
Medya yüklemek ve bir mesaja eklemek için isteğinizde aşağıdakileri iletin:
chat.messages.create
veyachat.messages
yetkilendirme kapsamını belirtin.- Aşağıdaki Google Chat yöntemlerini çağırın:
- Dosyayı yüklemek için
upload
yönteminiMedia
kaynağında çağırın.parent
değerini, dosyayı barındıran alanın adıyla değiştirin.body
(istek gövdesi) içindefilename
değerini yüklenen dosya ekinin adıyla eşleşecek şekilde ayarlayın.- Yüklenecek dosyanın örneği olarak
media_body
öğesini ayarlayın.
- Yüklenen dosyanın ekli olduğu bir ileti oluşturmak için
create
yönteminiMessages
kaynağında çağırın.Media
kaynağındaupload
yöntemini çağırdığınızda yanıt olarakattachment
değerini ayarlayın.attachment
alanı bir liste kabul eder.
- Dosyayı yüklemek için
Aşağıdaki örnekte, bir PNG resim dosyası yüklenip bir mesaja ekleniyor.
Python
- Çalışma dizininizde
chat_media_and_attachment_upload.py
adlı bir dosya oluşturun. chat_media_and_attachment_upload.py
'ya aşağıdaki kodu ekleyin:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload # 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.create"] def main(): ''' Authenticates with Chat API via user credentials, then uploads a file as media, creates a message, and attaches the file to the message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. service = build('chat', 'v1', credentials=creds) # Upload a file to Google Chat. media = MediaFileUpload('test_image.png', mimetype='image/png') # Create a message and attach the uploaded file to it. attachment_uploaded = service.media().upload( # The space to upload the attachment in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The filename of the attachment, including the file extension. body={'filename': 'test_image.png'}, # Media resource of the attachment. media_body=media ).execute() print(attachment_uploaded) # Create a Chat message with attachment. result = service.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Must match the space name that the attachment is uploaded to. parent='spaces/SPACE', # The message to create. body={ 'text': 'Hello, world!', 'attachment': [attachment_uploaded] } ).execute() print(result) if __name__ == '__main__': main()
Koddaki
SPACE
değerini, eki yüklemek istediğiniz alan adıyla değiştirin. Bu adı Chat API'dekispaces.list
yöntemiyle veya bir alanın URL'sinden alabilirsiniz.Çalışma dizininizde örneği oluşturun ve çalıştırın:
python3 chat_media_and_attachment_upload.py
Chat API, yüklenen dosya hakkında ayrıntılar içeren attachmentDataRef
ile bir yanıt gövdesi döndürür.
Sınırlar ve dikkat edilmesi gereken noktalar
Dosyaları yüklemeye ve iletilere eklemeye hazırlanırken aşağıdaki sınırlamaları ve hususları göz önünde bulundurun:
- 200 MB'a kadar olan dosyaları yükleyebilirsiniz.
- Bazı dosya türleri desteklenmediği için yüklenemez. Ayrıntılar için Google Chat'te engellenen dosya türleri başlıklı makaleyi inceleyin.
- Mesajınızda aksesuar widget'ları olmamalıdır.