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 metni 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. MediaKaynak, Google Chat'e yüklenen resim, video ve doküman gibi dosyaları temsil eder.
Attachment kaynağı, bir iletiye eklenmiş 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 kullanıcı rızası ekranını yapılandırın.
- Chat uygulamanız için ad, simge ve açıklama belirleyerek Google Chat API'yi etkinleştirin ve yapılandırın.
- 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.jsonadlı 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.createveyachat.messagesyetkilendirme kapsamını belirtin.- Aşağıdaki Google Chat yöntemlerini çağırın:
- Dosyayı yüklemek için
Mediakaynağındauploadyöntemini çağırın.parentdeğerini, dosyayı barındıran alanın alan adına ayarlayın.body(istek gövdesi) içindefilenamedeğerini yüklenen dosya ekinin adıyla değiştirin.- 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
Messageskaynağındacreateyöntemini çağırın.Mediakaynağındauploadyöntemini çağırdıktan sonra yanıt olarakattachmentdeğerini ayarlayın.attachmentalanı bir liste kabul eder.
- Dosyayı yüklemek için
Aşağıdaki örnekte, bir PNG resim dosyası yüklenir ve bir mesaja eklenir.
Python
- Çalışma dizininizde
chat_media_and_attachment_upload.pyadlı 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
SPACEyerine, eki yüklemek istediğiniz alanın adını girin. Bu adı Chat API'dekispaces.listyönteminden 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ı bulunmamalıdır.