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 varlıklarını ilgili Chat API kaynaklarına aktarabilirsiniz. İçe aktarma modunda Chat alanları oluşturarak ve verileri bu alanlara aktararak içe aktarabilirsiniz. İşlem başarıyla tamamlandıktan sonra bu alanlar standart Chat alanları haline gelir.

  1. API kullanım sınırlarını inceleyin ve önceden plan yapın.
  2. Chat uygulaması için yetkilendirmeyi yapılandırın.
  3. İçe aktarma modunda alan oluşturabilirsiniz.
  4. Kaynakları içe aktarın.
  5. İçe aktarılan kaynakları doğrulayın.
  6. Kaynak verilerden içe aktarılan kaynak farklılıklarını düzeltin.
  7. İçe aktarma modunu tamamla.
  8. İçe aktarma modundan sonra alana erişim izni verin.

Ön koşullar

Apps Komut Dosyası

Python

  • Python 3.6 veya sonraki sürümler
  • pip paket yönetim 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
    
  • Yayınlanan bir Chat uygulaması. Chat uygulaması oluşturmak ve yayınlamak için Google Chat uygulaması geliştirme başlıklı makaleyi inceleyin.

  • Chat uygulaması için yetkilendirme yapılandırıldı. Uygulamanın içerik içe aktardığı tüm alanlarda, Chat uygulamasına alan genelinde yetki verilmiş olmalıdır. Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

API kullanım sınırlarını inceleyin ve önceden plan yapın

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 farklılıklar 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ılmak üzere planlanan veri miktarını gözden geçirerek önceden plan yapın.

İç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 yöntemini true olarak ayarlayın. Kaynak mesajlaşma platformundaki eşdeğer alan varlığının oluşturulma zamanını korumak için alanın createTime değerini ayarlayabilirsiniz. Bu createTime, 1 Ocak 2000 ile bugünkü saat arasındaki bir değere ayarlanmalıdır.

Oluşturduğunuz alanın name bilgisini not edin. Böylece, sonraki adımlarda alana içerik aktarırken bu alana referans verebilirsiniz.

create yönteminin çağrıldığı andan itibaren Chat uygulamalarının, kaynakları alana aktarması, içe aktarma modunu tamamlaması ve chat.import kapsamını kullanarak alana erişim izni vermesi için 30 gün vardır. Chat uygulamaları, standart Chat API üyelik kapsamlarıyla 30 gün geçtikten sonra üyelik oluşturmaya devam edebilir. 30 günün ardından alan hâlâ içe aktarma modundaysa otomatik olarak silinir, erişilemez ve kurtarılamaz. Planlanmış tüm kaynakların bu zaman aralığı içinde Chat'e aktarılabilmesi için Chat uygulamanızın kullanım sınırlarını inceleyerek önceden plan yapın.

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

Apps Komut Dosyası

function createSpaceInImportMode() {
  const space = Chat.Spaces.create({
      spaceType: 'SPACE',
      displayName: 'Import Mode Space',
      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': 'Import Mode Space',
            'importMode': True,
            'createTime': f'{datetime.datetime(2000, 1, 1).isoformat()}Z',
        }
    )
    .execute()
)

print(result)

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

  • EMAIL: alan genelinde yetkiliyle kimliğine büründüğünüz kullanıcı hesabının e-posta adresi.

Kaynakları içe aktarın

Diğer mesajlaşma platformlarından kaynakları 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şıma yaptığınız mesaj platformundaki ilgili kaynaktan gelen verileri belirtirsiniz.

Mesajlar

Chat uygulamalarınız, mesajları kendi yetkilerini kullanarak veya kimliğe bürünme aracılığıyla bir kullanıcı adına içe aktarabilir. (İletinin 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. İçe aktarma modu alanında bir mesajı içe aktarmak için Message kaynağındaki create yöntemini çağırın. Kaynak mesajlaşma platformundan gelen orijinal mesajın oluşturulma zamanını korumak için mesajın createTime özelliğini ayarlayabilirsiniz. Bu createTime, daha önce ayarladığınız alan oluşturma zamanı ile şimdiki zaman arasındaki bir değere ayarlanmalıdır.

Aynı alandaki mesajlar aynı createTime öğesini içeremez (o zamana sahip önceki mesajlar silinmiş olsa bile).

İçe aktarma modundaki alanlarda üçüncü taraf URL'leri içeren mesajlar, Google Chat'te bağlantı önizlemelerini oluşturamaz.

Mesajları içe aktarma modunda oluşturduğunuzda alanlar, kullanıcı bahisleri içeren mesajlar da dahil olmak üzere hiçbir kullanıcıyı bilgilendirmez veya kullanıcıya 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 dahili sınırına ulaşmamak için Google Drive API'yi kullanarak ekleri Google Drive dosyası olarak yüklemenizi ve diğer mesajlaşma platformlarından ekleri içe aktarmak için dosya URI'lerini içe aktarma modu alanlarındaki ilgili mesajlara bağlamanızı önemle tavsiye ederiz.

Geçmiş üyelikler

Geçmiş üyelikler, kaynak mesajlaşma platformundaki orijinal alan varlığından ayrılmış olan ancak bu kullanıcıların verilerini Chat'te saklamak istediğiniz kullanıcılar için oluşturulan üyeliklerdir. Alan içe aktarma modunda olmadığında yeni üye ekleme hakkında bilgi edinmek için Üyelik kaynağı oluşturma bölümüne bakın.

Çoğu durumda, söz konusu eski üyeler Google'daki veri saklama politikasına tabi olduğunda, geçmiş üyelikler tarafından oluşturulan 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ş üyelikten ayrılma süresinin korunması için üyeliğin deleteTime özelliğini ayarlamanız gerekir. Söz konusu üyelikler için hangi verilerin saklanacağını etkilediğinden bu izin süresinin doğru olması gerekir. Ayrıca bu deleteTime, alan oluşturma zaman damgasından sonra gelmeli ve gelecekteki bir zaman damgası olmamalıdır.

deleteTime'e ek olarak, geçmiş üyeliğin orijinal birleştirme zamanını korumak için createTime değerini de ayarlayabilirsiniz. deleteTime işlevinin aksine createTime isteğe bağlıdır. Politika ayarlanmazsa deleteTime değerinden 1 mikrosaniye çıkarılarak createTime otomatik olarak hesaplanır. Ayarlanırsa createTime, deleteTime tarihinden önce olmalı ve alan oluşturma zamanında veya bu tarihten sonra olmalıdır. Bu createTime bilgileri, veri saklamayı 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 platformundaki bir alana katılma ve alandan ayrılma (davetler aracılığıyla, kendileri katılma, başka bir kullanıcı tarafından ekleme) için birden çok yöntemi olsa da Chat'te bu işlemlerin tümü, eklenmiş veya kaldırılmış olarak geçmiş üyelik createTime ve deleteTime alanlarıyla temsil edilir.

Aşağıdaki örnekte, içe aktarma modundaki bir alanda 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:

İçe aktarılan kaynakları doğrulayın

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

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

Chat uygulamaları ayrıca Membership kaynağındaki list yöntemini çağırarak geçmiş üyelikleri de listeleyebilir. Alan içe aktarma modundan çıktıktan sonra list yöntemi, geçmiş üyelikleri artık kullanıma sunmaz. 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.

Space kaynağında get yöntemini çağırarak içe aktarma modu alanının özelliklerini okuyabilirsiniz. Sohbet uygulamaları yalnızca kendi yetkilerini kullanarak bu yöntemi çağırabilir. Daha fazla bilgi için Chat uygulamalarını yetkilendirme başlıklı makaleyi inceleyin.

Kaynak verilerden içe aktarılan kaynak farklılıklarını düzeltme

İçe aktarılan herhangi bir kaynak, içe aktarma sırasında orijinal varlıkta yapılan değişiklikler nedeniyle kaynak mesajlaşma platformundaki orijinal varlıkla artık 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şturulduktan sonra kaynak mesajlaşma platformunda bir mesajı 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 mesajda yer alan 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ştururken kullanılan yetkiliyi kullanarak çağırabilir. İlk mesajı oluşturma işlemi sırasında kullanıcı kimliğine bürünme kullandıysanız mesajı güncellemek için, kimliğine bürünülen aynı kullanıcıyı kullanmanız gerekir.

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

Tepkiler

İçe aktarma modundaki alandaki bir 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 iletinin eklerini güncellemek için media kaynağındaki upload 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.

Geçmiş üyelikler

İçe aktarma modundaki bir geçmiş ü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 artık geçmiş üyelikleri silmenize izin vermez.

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

Alanlar

İçe aktarma modundaki bir alanda desteklenen alanları güncellemek için spaces kaynağında patch yöntemini kullanın.

İçe aktarma modundaki bir alanı 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.

İçe aktarma modunu tamamla

completeImport yöntemini çağırmadan önce kaynak farklılıklarının doğrulanması ve kaynak farklılıklarının uzlaştırılmasının tamamlandığından emin olmanız gerekir. Bir alandan içe aktarma modundan çıkmak geri alınamayan bir işlemdir ve içe aktarma modu alanını normal bir alana dönüştürür. Chat'te bu alanları veri içe aktarma işlemiyle ilişkilendiren bir gösterge yok.

Chat uygulaması, içe aktarma modunu tamamlamak ve alana kullanıcıların erişebilmesini sağlamak için Space kaynağında completeImport yöntemini çağırabilir. Sohbet uygulamaları, bu yöntemi yalnızca kimliğe bürünme aracılığıyla 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ünülen kullanıcı alana alan yöneticisi olarak eklenir. Bu yöntem, ilk create.space yöntem çağrısından sonraki 30 gün içinde çağrılmalıdır. 30 günlük süre geçtikten sonra bu yöntemi çağırmaya çalışırsanız içe aktarma modundaki alan silindiği ve artık Chat uygulaması tarafından erişilemediği için çağrı başarısız olur.

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

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 izni ver

Chat kullanıcılarının yakın zamanda içe aktarılan alana erişmesine izin vermek için Chat uygulamaları, aşağıdakileri yapmak için ilk create.space() yöntem çağrısından sonraki 30 gün içinde chat.import kapsamını ve kullanıcı kimliğine bürünmeyi kullanmaya devam edebilir:

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