Bu kılavuzda, Google Chat API'nin Media
kaynağında upload
yönteminin Google Chat'e medya (dosya) yüklemek ve ardından bir mesaja eklemek için nasıl kullanılacağı açıklanmaktadır.
Kullanıcı uygulamanıza mesaj gönderdiğinde Google Chat bir MESSAGE
etkileşim etkinliği gönderir.
Uygulamanızın aldığı etkileşim etkinliği, bir istek gövdesi içerir. Bu istek gövdesi, tüm ekler de dahil olmak üzere etkileşim etkinliğini temsil eden JSON yüküdür. Eki, yüklenen içerik (yerel dosya) mi yoksa Drive'da depolanan bir dosya mı olduğuna bağlı olarak farklı veriler içerir. Media
kaynağı, Google Chat'e yüklenen resim, video ve dokümanlar gibi bir dosyayı temsil eder.
Attachment
kaynağı, bir iletiye eklenen medya örneğini (dosya) temsil eder. Attachment
kaynağı, ekle ilgili meta verileri (ör. dosyanın kaydedildiği yer) 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.
- Chat uygulamanız için bir ad, simge ve açıklamayla Google Chat API'yi etkinleştirip 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
client_secrets.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
Media
kaynağındaupload
yöntemini çağırın.parent
değerini, dosyayı barındıran alanın alan adına ayarlayın.body
alanında (istek gövdesi)filename
değerini, yüklenen dosya ekinin adı olarak ayarlayın.media_body
öğesini, yüklenecek dosyanın bir örneği olarak ayarlayın.
- Yüklenen dosyanın eklendiği bir ileti oluşturmak için
Messages
kaynağındakicreate
yöntemini çağırın.Media
kaynağındaupload
yönteminin çağrılmasından elde edilen 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üklenir ve bu dosya bir iletiye eklenir.
Python
- Çalışma dizininizde
chat_media_and_attachment_upload.py
adlı bir dosya oluşturun. Aşağıdaki kodu
chat_media_and_attachment_upload.py
bölümüne 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( 'client_secrets.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()
Kodda,
SPACE
değerini ek yüklemek istediğiniz alan adıyla değiştirin. Alan adını Chat API'dekispaces.list
yönteminden veya alanın URL'sinden alabilirsiniz.Çalışma dizininizde örneği derleyip çalıştırın:
python3 chat_media_and_attachment_upload.py
Chat API, yüklenen dosyayla ilgili ayrıntıları içeren attachmentDataRef
öğesini içeren bir yanıt gövdesi döndürür.
Sınırlar ve dikkat edilmesi gereken hususlar
Dosya yüklemeye ve bunları iletilere eklemeye hazırlanırken aşağıdaki sınırlamalara ve hususlara dikkat edin:
- 200 MB'a kadar olan dosyaları yükleyebilirsiniz.
- Bazı dosya türleri desteklenmez ve 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.