Verileri Google Chat'e aktarma

Google Chat API ile diğer mesajlaşma platformlarınızdaki verileri Google Chat'e aktarabilirsiniz. Diğer mesajlaşma platformlarınızdaki mevcut mesajları, ekleri, tepkileri, üyelikleri ve alan öğelerini ilgili Chat API kaynaklarına aktarabilirsiniz. İçe aktarma modunda Chat alanları oluşturarak ve verileri bu alanlara aktararak bu verileri içe aktarabilirsiniz. İşlem başarıyla tamamlandıktan sonra bu alanlar standart Chat alanları haline gelir.

Aşağıda içe aktarma sürecinin tamamı özetlenmiştir:

  1. İçe aktarma işleminizi planlama
  2. Chat uygulaması için yetkilendirmeyi yapılandırma
  3. İçe aktarma modunda alan oluşturma
  4. Kaynakları içe aktarma
  5. İçe aktarılan kaynakları doğrulama
  6. İçe aktarılan kaynak verilerdeki kaynak farklılıklarını uyumlu hale getirme
  7. Tamamlayıcı içe aktarma modu
  8. İçe aktarma modundan sonra alana erişim verme
  9. Sorun giderme

Ön koşullar

Apps Komut Dosyası

Python

İçe aktarma işleminizi planlama

İçe aktarılacak veri miktarını buna göre planlayın, kullanım sınırlarının ve kotalarının içe aktarma sürecini nasıl etkileyebileceğini anlayın ve yeni bir alana içe aktarma işlemi sırasında desteklenen Chat alanı türlerini öğrenin. Yöneticiyseniz Mesaj verilerini başka bir hizmetten Google Chat'e aktarma başlıklı makaleyi okuyup adımları dikkatlice uygulayın.

API kullanım sınırlarını inceleme

Chat'e veri aktarmak için gereken süre, içe aktarılacak Chat kaynaklarının miktarına bağlı olarak büyük ölçüde değişiklik gösterebilir. Tahmini bir zaman çizelgesi belirlemek için Chat uygulamanızın kullanım sınırlarını ve kaynak mesajlaşma platformundan içe aktarılması planlanan veri miktarını inceleyin.

Mesajları bir alana aktarırken messages.create() yöntemine yapılan çağrıları farklı mesaj dizilerine dağıtmanızı öneririz.

İçe aktarılacak desteklenen alanları tanımlama

İçe aktarma modu yalnızca SPACE ve GROUP_CHAT için SpaceType'ü destekler. DIRECT_MESSAGE desteklenmiyor. Daha fazla bilgi için SpaceType ile ilgili dokümanları inceleyin.

İçe aktarma modunda alan oluşturma

İçe aktarma modunda alan oluşturmak için Space kaynağında create yöntemini çağırın ve importMode değerini true olarak ayarlayın.

Alanı içe aktarma modunda oluştururken aşağıdakileri göz önünde bulundurun.

  • Tarih ve saat: İçe aktarma modunun 90 gün içinde tamamlanması gerektiğini unutmayın. spaces.create() yönteminin çağrılmasından 90 gün sonra alan hâlâ içe aktarma modundaysa otomatik olarak silinir, erişilemez ve kurtarılamaz hale gelir.
    • 90 günlük zaman aralığının sona ermesini izlemek için importModeExpireTime alanının değerini kullanın.
    • 90 günlük zaman aralığının sona ermesini izlemek için createTime alanının değerini kullanmayın. Bu, her zaman spaces.create() yöntemini çağırdığınız zamanla aynı değildir. İçe aktarma modu kullanıldığında, createTime alanı, orijinal oluşturulma zamanını korumak için alanın kaynakta oluşturulduğu geçmiş zaman damgasına ayarlanabilir.
  • Alan kaynağı adı (name): Belirli bir alanla ilgili bilgileri almak için kullanılan ve alana içerik aktarılırken sonraki adımlarda referans verilen benzersiz tanımlayıcı.

Kaynak mesajlaşma platformundaki eşdeğer alan öğesinin oluşturulma zamanını korumak için alanın createTime değerini ayarlayabilirsiniz. Bu createTime, 1 Ocak 2000 ile mevcut zaman arasında bir değere ayarlanmalıdır.

İçe aktarma modunda harici bir alan oluşturmak için externalUserAllowed değerini true olarak ayarlayın. İçe aktarma işlemi başarıyla tamamlandıktan sonra harici kullanıcılar ekleyebilirsiniz.

Aşağıdaki örnekte, içe aktarma modunda alanın nasıl oluşturulacağı gösterilmektedir:

Apps Komut Dosyası

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'DISPLAY_NAME',
      importMode: true,
      createTime: (new Date('January 1, 2000')).toJSON()
  });
  console.log(space.name);
}

Python

"""Create a space in import mode."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

result = (
    service.spaces()
    .create(
        body={
            'spaceType': 'SPACE',
            'displayName': 'DISPLAY_NAME',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

Aşağıdakini değiştirin:

  • EMAIL: Alan genelinde yetkiyle kimliğine büründüğünüz kullanıcı hesabının e-posta adresi.
  • DISPLAY_NAME: İçe aktarma modunda oluşturulan alanın adı. Bu, Chat kullanıcılarına gösterilen alan için benzersiz bir ad olmalıdır. Verileri içe aktardığınız alanla aynı görünen adı kullanmanızı öneririz.

Kaynakları içe aktarma

Diğer mesajlaşma platformlarından kaynak içe aktarmak için içe aktarma modu alanında Google Chat kaynakları (ör. mesajlar, tepkiler, ekler) oluşturursunuz. Alanda bir kaynak oluşturduğunuzda, taşıdığınız mesaj platformundaki ilgili kaynaktan verileri belirtirsiniz.

Mesajlar

Chat uygulamalarınız, kendi yetkilerini kullanarak veya kimliğe bürünme yoluyla bir kullanıcı adına mesajları içe aktarabilir. İleti yazarı, kimliğine bürünülen kullanıcı hesabı olarak ayarlanır. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin. Bir mesajı içe aktarma modundaki bir alana aktarmak için Message kaynağındaki create yöntemini çağırın. Kaynak mesajlaşma platformundaki orijinal mesajın oluşturulma zamanını korumak için mesajın createTime değerini ayarlayabilirsiniz. Bu createTime, daha önce ayarladığınız alan oluşturma zamanı ile mevcut zaman arasında bir değere ayarlanmalıdır.

Aynı alandaki mesajlar, aynı saate sahip önceki mesajlar silinmiş olsa bile aynı createTime değerini içeremez.

Aktarma modundaki alanlarda üçüncü taraf URL'leri içeren mesajlar Google Chat'te bağlantı önizlemeleri olarak oluşturulamaz.

İçe aktarma modunda mesaj oluşturduğunuzda alanlar, kullanıcı bahsetmelerini içeren mesajlar da dahil olmak üzere hiçbir kullanıcıya bildirim göndermez veya e-posta göndermez.

Aşağıdaki örnekte, içe aktarma modu alanında nasıl mesaj oluşturulacağı gösterilmektedir:

Python

"""Create a message in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = (
    service.spaces()
    .messages()
    .create(
        parent=NAME,
        body={
            'text': 'Hello, world!',
            'createTime': f'{datetime.datetime(2000, 1, 2).isoformat()}Z',
        },
    )
    .execute()
)

print(result)

Aşağıdakini değiştirin:

Tepkiler

Chat uygulamanız, Chat API'yi kullanarak mesajlara verilen tepkileri içe aktarabilir. İçe aktarma modundaki alanlarda kaynak yöntemleri ve kimlik doğrulama desteği türleri hakkında bilgi edinmek için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Ekler

Chat uygulamanız, Chat API'yi kullanarak ek yükleyebilir. İçe aktarma modundaki alanlarda kaynak yöntemleri ve kimlik doğrulama desteği türleri hakkında bilgi edinmek için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin. Ancak, ek yüklemeyle ilgili Google Chat'in dahili sınırına ulaşmamak için ekleri Google Drive dosyası olarak yüklemek ve ek URI'lerini, içe aktarma modu alanlarındaki ilgili iletilere bağlayarak diğer mesajlaşma platformlarından ekleri içe aktarmak üzere Google Drive API'yi kullanmanızı önemle tavsiye ederiz.

Geçmiş üyelikler

Geçmiş üyelikler, kaynak mesajlaşma platformundaki orijinal alan öğesinden ayrılmış ancak verilerini Chat'te tutmak istediğiniz kullanıcılar için oluşturulan üyeliklerdir. Alan içe aktarma modundan çıktıktan sonra yeni üye ekleme hakkında bilgi edinmek için Üyelik kaynağı oluşturma başlıklı makaleyi inceleyin.

Çoğu durumda, bu eski üyeler Google'daki bir veri saklama politikasına tabi olduğunda, eski üyeliklerin bir alanda oluşturduğu verileri (ör. mesajlar ve tepkiler) Chat'e aktarmadan önce korumak istersiniz. Alan içe aktarma modundayken Membership kaynağındaki create yöntemini kullanarak bu geçmiş üyelikleri alana aktarabilirsiniz. Geçmiş üyeliğin ayrılış zamanını korumak için üyeliğin deleteTime değerini ayarlamanız gerekir. Bu üyelikler için hangi verilerin saklanacağını etkilediği için bu ayrılma süresi doğru olmalıdır. Ayrıca bu deleteTime, alan oluşturma zaman damgasından sonra olmalı ve gelecekteki bir zaman damgası olmamalıdır.

deleteTime'e ek olarak, geçmiş üyeliğin orijinal katılım zamanını korumak için createTime'u da ayarlayabilirsiniz. deleteTime'ün aksine createTime isteğe bağlıdır. Değeri ayarlanmamışsa createTime, deleteTime değerinden 1 mikrosaniye çıkarılarak otomatik olarak hesaplanır. Ayarlanmışsa createTime, deleteTime'ten önce olmalı ve alan oluşturma zamanından sonra veya o saatte olmalıdır. Bu createTime bilgiler, veri saklama süresini belirlemek için kullanılmaz ve Google Yönetici Konsolu ile Google Apps Kasası gibi yönetici araçlarında görünmez.

Kullanıcıların kaynak mesajlaşma platformunda bir alana katılma ve alandan ayrılmanın birden fazla yolu olabilir (davet yoluyla, kendileri katılarak veya başka bir kullanıcı tarafından eklenerek). Chat'te bu işlemlerin tümü, geçmiş üyelik createTime ve deleteTime alanları tarafından eklenmiş veya kaldırılmış olarak temsil edilir.

Aşağıdaki örnekte, içe aktarma modu alanında geçmiş üyeliğin nasıl oluşturulacağı gösterilmektedir:

Python

"""Create a historical membership in import mode space."""

import datetime

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
USER = 'users/USER_ID'
result = (
    service.spaces()
    .members()
    .create(
        parent=NAME,
        body={
            'createTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z',
            'deleteTime': f'{datetime.datetime(2000, 1, 4).isoformat()}Z',
            'member': {'name': USER, 'type': 'HUMAN'},
        },
    )
    .execute()
)

print(result)

Aşağıdakini değiştirin:

Harici bir alandaki kaynakları içe aktarma

Yalnızca Workspace kuruluşunuzdaki kullanıcılara ait kimlik bilgilerini kullanarak içe aktarma modunda harici alan oluşturabilirsiniz. Bu yalnızca alan içe aktarma modundayken geçerlidir. Alan içe aktarma modunu tamamladığında, içe aktarılan alanlara katılmaları için kuruluş dışı kullanıcılar davet edilebilir (erişim bölümüne bakın) ve kimlik bilgileri Chat API'yi çağırmak için kullanılabilir.

İçe aktarılan kaynakları doğrulama

Chat uygulamanız, Message kaynağındaki list yöntemini çağırarak bir içe aktarma modu alanının içeriğini okuyabilir ve doğrulayabilir. Döndürülen iletilerin emojiReactionSummaries ve attachment alanlarından Reaction ve Attachment kaynaklarını okuyabilirsiniz. Sohbet uygulamaları bu yöntemi yalnızca kimliğe bürünme yoluyla kullanıcı adına çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Chat uygulamanız, Message kaynağındaki get yöntemini çağırarak doğrulama için mesajları tek tek de okuyabilir. Chat uygulamaları bu yöntemi yalnızca kendi yetkilerini kullanarak kendi mesajlarını okumak için çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Sohbet uygulamaları, Membership kaynağındaki list yöntemini çağırarak geçmiş üyelikleri de listeleyebilir. Alan içe aktarma modundan çıktıktan sonra list yöntemi artık geçmiş üyelikleri göstermez. Sohbet uygulamaları bu yöntemi yalnızca kimliğe bürünme yoluyla bir kullanıcı adına çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Space kaynağında get yöntemini çağırarak içe aktarma modu alanının özelliklerini okuyabilirsiniz. Yanıtta importModeExpireTime değeri de doldurulur. Böylece, içe aktarma işleminin tamamlanma zaman aralığını doğru şekilde izleyebilirsiniz. Sohbet uygulamaları bu yöntemi yalnızca kendi yetkilerini kullanarak çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

İçe aktarılan kaynak verileri arasındaki farklılıkları uyumlu hale getirme

İçe aktarılan bir kaynak, içe aktarma sırasında orijinal öğede yapılan değişiklikler nedeniyle artık kaynak mesajlaşma platformundaki orijinal öğeyle eşleşmiyorsa Chat uygulamaları, içe aktarılan sohbet kaynağını değiştirmek için Chat API'yi çağırabilir. Örneğin, bir kullanıcı Chat'te oluşturulan bir mesajı kaynak mesajlaşma platformunda düzenlerse Chat uygulamaları, içe aktarılan mesajı orijinal mesajın mevcut içeriğini yansıtacak şekilde güncelleyebilir.

Mesajlar

İçe aktarma modundaki bir alandaki bir mesajdaki desteklenen alanları güncellemek için Message kaynağındaki update yöntemini çağırın. Sohbet uygulamaları bu yöntemi yalnızca ilk mesaj oluşturulurken kullanılan yetkiyi kullanarak çağırabilir. İlk mesajı oluştururken kullanıcı kimliğine bürünme özelliğini kullandıysanız bu mesajı güncellemek için kimliğine büründüğünüz kullanıcıyı kullanmanız gerekir.

İçe aktarma modu alanındaki bir mesajı silmek için Message kaynağındaki delete yöntemini çağırın. İçe aktarma modundaki bir alandaki mesajların, orijinal mesajı oluşturan kullanıcı tarafından silinmesi gerekmez ve alandaki herhangi bir kullanıcının kimliğine bürünerek silinebilir. Chat uygulamaları yalnızca kendi yetkilerini kullanarak kendi mesajlarını silebilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Tepkiler

İçe aktarma modundaki bir alandaki mesaja verilen tepkiyi silmek için reactions kaynağında delete yöntemini kullanın. İçe aktarma modundaki alanlarda kaynak yöntemleri ve kimlik doğrulama desteği türleri hakkında bilgi edinmek için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Ekler

İçe aktarma modundaki bir alandaki mesajın eklerinin güncellenmesi için mediakaynağında upload yöntemini kullanın. İçe aktarma modundaki alanlarda desteklenen kimlik doğrulama türleri ve kaynak yöntemleri hakkında bilgi edinmek için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Geçmiş üyelikler

İçe aktarma modu alanındaki geçmiş bir üyeliği silmek için Membership kaynağındaki delete yöntemini kullanın. Bir alan içe aktarma modundan çıktıktan sonra delete yöntemi, geçmiş üyelikleri silmenize izin vermez.

İçe aktarma modundaki bir alanda geçmiş üyelikleri güncelleyemezsiniz. Yanlışlıkla içe aktarılan geçmiş bir üyeliği düzeltmek istiyorsanız önce üyeliği silmeniz, ardından alan hâlâ içe aktarma modundayken yeniden oluşturmanız gerekir.

Alanlar

İçe aktarma modu alanındaki desteklenen alanları güncellemek için spaces kaynağında patch yöntemini kullanın.

İçe aktarma modu alanını silmek için spaces kaynağında delete yöntemini kullanın.

İçe aktarma modundaki alanlarda kaynak yöntemleri ve kimlik doğrulama desteği türleri hakkında bilgi edinmek için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Tam içe aktarma modu

completeImport yöntemini çağırmadan önce doğrulamanın ve kaynak farklılıklarının uyumlaştırılmasının tamamlandığından emin olmanız gerekir. Bir alanı içe aktarma modundan çıkarma işlemi geri alınamaz ve içe aktarma modundaki alanı normal bir alana dönüştürür. Chat'te bu alanların veri içe aktarma işlemiyle ilişkilendirildiğini gösteren bir gösterge yoktur.

completeImport'ü aradığınız tarih ve saati, aramayı yapan kullanıcının kaynak adını ve döndürülen yanıtı not edin. Bu, herhangi bir sorunla karşılaşıp bunları incelemeniz gerektiğinde faydalı olabilir.

Chat uygulaması, içe aktarma modunu tamamlamak ve alanı kullanıcıların erişimine açmak için Space kaynağındaki completeImport yöntemini çağırabilir. Sohbet uygulamaları bu yöntemi yalnızca kimliğe bürünme yoluyla bir kullanıcı adına çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin. Bu yöntem tamamlandığında kimliğine bürünen kullanıcı alana alan yöneticisi olarak eklenir. Bu yöntem, ilk create.space yöntem çağrısından sonraki 90 gün içinde çağrılmalıdır. 90 günlük süre dolduktan sonra bu yöntemi çağırmaya çalışırsanız içe aktarma modu alanı silindiği ve Chat uygulaması artık bu alana erişemediği için çağrı başarısız olur.

completeImport yönteminde kimliğine bürünen kullanıcının alan oluşturucu olması gerekmez.

İsteğin importModeExpireTime'ten önce ulaşacağını garanti edemediğimiz ve süre sonu zamanında tetiklenen sistemlerde veri işlemeyle ilgili çakışmalar olabileceği için completeImportimportModeExpireTime'e çok yakın bir zamanda aramayın. importModeExpireTime'ten en az 30 dakika önce completeImport'ü aramanızı öneririz.

Aşağıdaki örnekte, içe aktarma modunun nasıl tamamlanacağı gösterilmektedir:

Python

"""Complete import."""

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Specify required scopes.
SCOPES = [
    'https://www.googleapis.com/auth/chat.import',
]

CREDENTIALS = (
    service_account.Credentials.from_service_account_file('credentials.json')
    .with_scopes(SCOPES)
    .with_subject('EMAIL')
)

# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=CREDENTIALS)

NAME = 'spaces/SPACE_NAME'
result = service.spaces().completeImport(name=NAME).execute()

print(result)

Aşağıdakini değiştirin:

İçe aktarma modundan sonra alana erişim verme

Chat kullanıcılarına yeni içe aktarılan alana erişim vermek için Chat uygulamaları, ilk create.space() yöntem çağrısından sonraki 90 gün içinde aşağıdakileri yapmak üzere chat.import kapsamını ve kullanıcı kimliğine bürünme özelliğini kullanmaya devam edebilir:

Bu yöntemleri chat.import kapsamıyla kullanmak için kimliğine bürünen kullanıcının alan yöneticisi olması gerekir.

Kuruluş dışı alanlar için üyelik create() yöntemi, Workspace kuruluşunuzun dışındaki kullanıcıları davet etmenize de olanak tanır. Kuruluş dışı kullanıcılarla ilgili bilinen tüm sınırlamaları anladığınızdan emin olun.

Sorun giderme

Chat alanlarını içe aktarırken sorun yaşarsanız yardım için aşağıdaki sorunları inceleyin. Hata yanıtıyla karşılaşırsanız gelecekte referans olarak kullanmak ve sorun gidermek için yanıtı not edin (metni bir dokümana kopyalayıp yapıştırın veya ekran görüntüsünü kaydedin).

Bir alan başarıyla içe aktarıldığında CompleteImportSpace, OK durumuyla tamamlanır.

İçe aktarma işlemi, 90 günlük süre dolmadan tamamlanmadıysa

İçe aktarma modunda alan oluşturma bölümünde daha önce açıklandığı gibi, oluşturma yöntemi çağrıldıktan 90 gün sonra alan hâlâ içe aktarma modundaysa otomatik olarak silinir, erişilemez ve kurtarılamaz hale gelir.

Maalesef silinen alan artık kullanılamıyor veya kurtarılamıyor. İçe aktarma işleminin yeniden başlatılması gerekiyor.

Eksik alanları bulma

Yeni Chat alanını bulamıyorsanız CompleteImportSpace ekibinden aldığınız yanıtı ve sorunun nasıl çözüleceğini görmek için aşağıdaki tabloyu inceleyin.

Yanıt alındı İnceleme adımları Açıklama Çözünürlük
CompleteImportSpace bir istisna atar ve GetSpace çağrısı PERMISSION_DENIED döndürür. Alanın ne zaman oluşturulduğunu kontrol edin. 90 günden eski alanlar otomatik olarak silinir. Ayrıca, içe aktarılan alanın alan yönetimi aracında veya denetim günlüğünde kaydı yoktur. İçe aktarma işleminin başlatılmasından bu yana 90 günden uzun bir süre geçtiyse ve alan taşıma işleminden başarıyla çıkamadıysa Yeni bir alan oluşturun ve içe aktarma işlemini tekrar çalıştırın.
CompleteImportSpace, OK değerini döndürür ve GetSpace çağrısı PERMISSION_DENIED değerini döndürür. İçe aktarılan alanın alan yönetimi aracında kaydı yoktur ancak alanın denetim günlüğünde silindiği gösterilir. Alan başarıyla içe aktarıldı ancak daha sonra silindi. Yeni bir alan oluşturun ve içe aktarma işlemini tekrar çalıştırın.