استيراد البيانات إلى Google Chat

باستخدام Google Chat API، يمكنك استيراد البيانات من المنصات الأخرى للمراسلة إلى Google Chat. يمكنك استيراد الرسائل والمرفقات والتفاعلات والاشتراكات الداعمة والمساحات الحالية من منصات المراسلة الأخرى إلى موارد Chat API المقابلة. يمكنك استيراد هذه البيانات من خلال إنشاء مساحات Chat في وضع الاستيراد واستيراد البيانات إلى تلك المساحات. بعد اكتمال العملية بنجاح، تصبح هذه المساحات مساحات Chat عادية.

  1. مراجعة حدود استخدام واجهة برمجة التطبيقات والتخطيط مسبقًا:
  2. ضبط التفويض في تطبيق Chat
  3. إنشاء مساحة في وضع الاستيراد
  4. استيراد الموارد.
  5. التحقّق من صحة الموارد التي تم استيرادها
  6. التوفيق بين الاختلافات في الموارد المستورَدة عن بيانات المصدر:
  7. إكمال وضع الاستيراد.
  8. إنشاء موارد العضوية

المتطلّبات الأساسية

Apps Script

Python

  • Python 3.6 أو أعلى
  • تتيح لك أداة إدارة الحزم pip
  • أحدث مكتبات برامج Google للغة بايثون. لتثبيتها أو تحديثها، قم بتشغيل الأمر التالي في واجهة سطر الأوامر لديك:

    pip3 install --upgrade google-api-python-client google-auth
    
  • تطبيق Chat منشور. لإنشاء تطبيق Chat ونشره، يُرجى الاطّلاع على إنشاء تطبيق Google Chat.

  • تم ضبط التفويض لتطبيق Chat. يجب أن يكون لتطبيق Chat تفويضًا على مستوى النطاق في أي نطاقات يستورد التطبيق المحتوى فيها. يُرجى الاطّلاع على تفويض التطبيقات في Chat.

مراجعة حدود استخدام واجهة برمجة التطبيقات والتخطيط مسبقًا

قد يختلف الوقت المطلوب لاستيراد البيانات إلى Chat بشكل كبير بناءً على كمية موارد Chat المراد استيرادها. يمكنك التخطيط مسبقًا من خلال مراجعة حدود استخدام تطبيق Chat وكمية البيانات المجدولة لاستيرادها من منصة المراسلة المصدر، لتحديد مخطط زمني تقديري.

إنشاء مساحة في وضع الاستيراد

لإنشاء مساحة في وضع الاستيراد، يمكنك استدعاء طريقة create في المورد Space وضبط importMode على true. للحفاظ على وقت إنشاء المساحة المكافئة من منصة المراسلة المصدر، يمكنك ضبط createTime للمساحة. يجب ضبط createTime على قيمة تتراوح بين 1 كانون الثاني (يناير) 2000 والوقت الحالي.

دوِّن name للمساحة التي تنشئها كي تتمكّن من الرجوع إليها في الخطوات لاحقًا عند استيراد المحتوى إلى المساحة.

من وقت استدعاء طريقة create، يكون لدى التطبيقات في Chat 30 يومًا من أجل استيراد الموارد إلى المساحة وإكمال وضع الاستيراد وإنشاء موارد اشتراك باستخدام نطاقchat.import. سيظل بإمكان تطبيقات Chat إنشاء عضويات بعد 30 يومًا من خلال نطاقات العضوية العادية في Chat API. بعد مرور 30 يومًا، إذا كانت المساحة لا تزال في وضع الاستيراد، يتم حذفها تلقائيًا ولن يكون بالإمكان الوصول إليها ولن تتمكّن من استردادها. يمكنك التخطيط مسبقًا من خلال مراجعة حدود الاستخدام لتطبيقك في Chat لضمان إمكانية استيراد جميع الموارد المجدولة إلى Chat خلال هذا الإطار الزمني.

يوضّح المثال التالي كيفية إنشاء مساحة في وضع الاستيراد:

Apps Script

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)

استبدِل ما يلي:

  • EMAIL: عنوان البريد الإلكتروني لحساب المستخدم الذي ينتحل صفته لدى مرجع على مستوى النطاق.

استيراد الموارد

لاستيراد الموارد من منصات مراسلة أخرى، يمكنك إنشاء موارد Google Chat (مثل الرسائل والتفاعلات والمرفقات) في مساحة وضع الاستيراد. عند إنشاء مورد في المساحة، يمكنك تحديد البيانات من المورد ذي الصلة من النظام الأساسي للرسائل الذي تنقل البيانات منه.

الرسائل

يمكن لتطبيقات Chat استيراد الرسائل باستخدام سلطتها الخاصة أو نيابة عن مستخدم من خلال انتحال الهوية. (يتم تعيين مؤلف الرسالة على حساب المستخدم الذي تم انتحال هويته) لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat. لاستيراد رسالة في مساحة وضع الاستيراد، يمكنك طلب طريقة create في مورِّد Message. للحفاظ على وقت إنشاء الرسالة الأصلية من منصة المراسلة المصدر، يمكنك ضبط createTime للرسالة. يجب ضبط createTime هذا على قيمة تقع بين وقت إنشاء المساحة الذي تم ضبطه في السابق والوقت الحالي.

لا يمكن أن تحتوي الرسائل في المساحة نفسها على createTime نفسه، حتى إذا تم حذف الرسائل السابقة في ذلك الوقت.

إنّ الرسائل التي تحتوي على عناوين URL تابعة لجهات خارجية في مساحات وضع الاستيراد لا يمكنها عرض معاينات الروابط في Google Chat.

عند إنشاء الرسائل في وضع الاستيراد، لا تُرسِل المساحات إشعارًا أو ترسل رسالة إلكترونية إلى أي مستخدم، بما في ذلك الرسائل التي تحتوي على إشارات المستخدمين.

يوضّح المثال التالي كيفية إنشاء رسالة في مساحة وضع الاستيراد:

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)

استبدِل ما يلي:

التفاعلات

يمكن لتطبيق Chat استيراد التفاعلات مع الرسائل باستخدام Chat API. للحصول على معلومات عن طرق الموارد وأنواع إتاحة المصادقة في مساحات وضع الاستيراد، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

المرفقات

يمكن لتطبيق Chat تحميل المرفقات باستخدام Chat API. للحصول على معلومات عن طرق الموارد وأنواع إتاحة المصادقة في مساحات وضع الاستيراد، يُرجى الاطّلاع على تفويض التطبيقات في Chat. ومع ذلك، ننصحك بشدة باستخدام Google Drive API لتحميل المرفقات كملفات Google Drive وربط معرّفات الموارد المنتظمة (URI) للرسائل المعنية في مساحات وضع الاستيراد لاستيراد المرفقات من المنصات الأخرى للمراسلة لتجنُّب بلوغ الحد الداخلي في Google Chat لتحميل المرفقات.

الاشتراكات السابقة

الاشتراكات السابقة هي اشتراكات تم إنشاؤها للمستخدمين الذين غادروا الوحدة الأصلية للمساحة من منصة المراسلة المصدر، ولكنّهم يريدون الاحتفاظ ببياناتهم في Chat. للحصول على معلومات حول إضافة أعضاء جدد بعد انتهاء المساحة في وضع الاستيراد، يُرجى الاطّلاع على إنشاء مورد عضوية.

وفي كثير من الحالات، عندما يخضع هؤلاء الأعضاء السابقون لسياسة الاحتفاظ بالبيانات في Google، تريد الاحتفاظ بالبيانات (مثل الرسائل والتفاعلات) التي أنشأتها العضويات السابقة في مساحة قبل استيرادها إلى Chat. عندما تكون المساحة في وضع الاستيراد، يمكنك استيراد الاشتراكات السابقة إلى المساحة باستخدام طريقة create على مورد Membership. للحفاظ على وقت إجازة الاشتراك السابق، عليك ضبط deleteTime الخاصة بالاشتراك. يجب أن يكون وقت الإجازة هذا دقيقًا لأنه يؤثر على البيانات التي يجب الاحتفاظ بها لهذه العضويات. بالإضافة إلى ذلك، يجب أن يأتي deleteTime بعد الطابع الزمني لإنشاء المساحة، كما يجب ألا يكون طابعًا زمنيًا في المستقبل.

فضلاً عن deleteTime، يمكنك أيضًا ضبط createTime للحفاظ على الوقت الأصلي للانضمام إلى العضوية السابقة. على عكس deleteTime، تكون السمة createTime اختيارية. في حال ترك هذه السياسة بدون ضبط، يتم احتساب createTime تلقائيًا من خلال طرح 1 ميكرو ثانية من deleteTime. في حال ضبط هذه السياسة، يجب أن يكون createTime قبل deleteTime وأن يكون في وقت إنشاء المساحة أو بعده. لا يتم استخدام معلومات createTime هذه لتحديد الاحتفاظ بالبيانات ولا تظهر في أدوات المشرفين، مثل "وحدة تحكّم المشرف في Google" وGoogle Vault.

مع أنّه قد تتوفّر عدة طرق يمكن للمستخدم من خلالها الانضمام إلى مساحة أو مغادرتها في منصة المراسلة المصدر (من خلال الدعوات أو الانضمام بنفسه أو إضافتها من قِبل مستخدم آخر)، يتم تمثيل جميع هذه الإجراءات في Chat من خلال حقلَي الاشتراك السابق createTime وdeleteTime على أنّها تتم إضافتها أو إزالتها.

يوضح المثال التالي كيفية إنشاء عضوية سابقة في مساحة وضع الاستيراد:

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)

استبدِل ما يلي:

التحقّق من صحة الموارد التي تم استيرادها

يمكن لتطبيق Chat قراءة محتوى مساحة وضع الاستيراد والتحقّق من محتواه من خلال استدعاء طريقة list على مورد Message. يمكنك الاطّلاع على موارد Reaction وAttachment من أي حقلَي emojiReactionSummaries وattachment ضمن أي رسالة تم إرجاعها. ولا يمكن لتطبيقات Chat استدعاء هذه الطريقة إلا نيابةً عن المستخدم من خلال انتحال الهوية. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تفويض التطبيقات في Chat.

يمكن لتطبيق Chat أيضًا قراءة الرسائل الفردية للتحقّق من الصحة من خلال استدعاء طريقة get على مورد Message. لا يمكن لتطبيقات Chat استدعاء هذه الطريقة لقراءة رسائلها إلا باستخدام تفويضاتها الخاصة. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

يمكن لتطبيقات Chat أيضًا إدراج الاشتراكات السابقة من خلال تنفيذ طريقة list في مرجع Membership. بعد خروج المساحة من وضع الاستيراد، لن تعرض طريقة list الاشتراكات السابقة. ولا يمكن لتطبيقات Chat استدعاء هذه الطريقة نيابةً عن المستخدم إلا من خلال انتحال الهوية. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

يمكنك الاطّلاع على خصائص مساحة وضع الاستيراد من خلال طلب طريقة get في المورد Space. لا يمكن لتطبيقات Chat استدعاء هذه الطريقة إلا باستخدام السلطة الخاصة بها. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

حلّ مشكلة الاختلافات في الموارد المستورَدة عن البيانات المصدر

إذا لم يعُد أي مورد تم استيراده يتطابق مع الكيان الأصلي من منصة المراسلة المصدر بسبب التغييرات في الكيان الأصلي أثناء الاستيراد، يمكن لتطبيقات Chat استدعاء Chat API لتعديل مورد المحادثة الذي تم استيراده. على سبيل المثال، إذا عدّل مستخدم رسالة في منصة المراسلة المصدر بعد إنشاء تلك الرسالة في Chat، يمكن لتطبيقات Chat تعديل الرسالة المستورَدة بحيث تعرض المحتوى الحالي للرسالة الأصلية.

الرسائل

لتعديل الحقول المتوافقة في رسالة ضمن مساحة وضع الاستيراد، يمكنك طلب طريقة update في المورد Message. لا يمكن لتطبيقات Chat استدعاء هذه الطريقة إلا باستخدام المرجع نفسه الذي تم استخدامه أثناء إنشاء الرسالة الأولية. إذا استخدمت انتحال هوية المستخدم أثناء إنشاء الرسالة الأولى، يجب استخدام المستخدم نفسه الذي تم انتحال هويته لتعديل الرسالة.

لحذف رسالة في مساحة وضع الاستيراد، يمكنك طلب طريقة delete في مورد Message. لا يحتاج منشئ الرسالة الأصلي إلى حذف الرسائل في مساحة وضع الاستيراد، ويمكن حذفها من خلال انتحال هوية أي مستخدم في النطاق. لا يمكن لتطبيقات Chat حذف رسائلها إلا إذا كان ذلك باستخدام صفتها الخاصة. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

التفاعلات

لحذف تفاعل على رسالة في مساحة وضع الاستيراد، استخدِم طريقة delete في المورد reactions. للحصول على معلومات عن طرق الموارد وأنواع إتاحة المصادقة في مساحات وضع الاستيراد، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

المرفقات

لتعديل مرفقات رسالة في مساحة وضع الاستيراد، استخدِم طريقة upload على المورد media. للحصول على معلومات عن طرق الموارد وأنواع إتاحة المصادقة في مساحات وضع الاستيراد، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

الاشتراكات السابقة

لحذف اشتراك قديم في مساحة وضع الاستيراد، استخدِم طريقة delete على Membership المورد. بعد خروج مساحة من وضع الاستيراد، لن تسمح لك طريقة delete بحذف الاشتراكات السابقة.

لا يمكنك تعديل عضوية سابقة في مساحة وضع الاستيراد. إذا أردت تصحيح عضوية سابقة تمّ استيرادها بشكل غير صحيح، عليك حذفها أولاً ثم إعادة إنشائها مع إبقاء المساحة في وضع الاستيراد.

المساحات

لتعديل الحقول المتوافقة في مساحة وضع الاستيراد، استخدِم طريقة patch على مورد spaces.

لحذف مساحة وضع الاستيراد، استخدِم طريقة delete على مورد spaces.

للحصول على معلومات عن طرق الموارد وأنواع إتاحة المصادقة في مساحات وضع الاستيراد، يُرجى الاطّلاع على تفويض التطبيقات في Chat.

إكمال وضع الاستيراد

قبل استدعاء الطريقة completeImport، يجب التأكّد من اكتمال التحقّق والتوفيق بين الاختلافات في الموارد. لا يمكن التراجع عن الخروج من مساحة خارج وضع الاستيراد وتحويل مساحة وضع الاستيراد إلى مساحة عادية. ما مِن مؤشر في Chat ينسب هذه المساحات إلى عملية استيراد بيانات.

لإكمال وضع الاستيراد وإتاحة المساحة للمستخدمين، يمكن لتطبيق Chat استدعاء طريقة completeImport في مورد Space. لا يمكن لتطبيقات Chat استدعاء هذه الطريقة نيابةً عن المستخدم إلا من خلال انتحال الهوية. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض التطبيقات في Chat. تتم إضافة المستخدم الذي ينتحل هوية المستخدم إلى المساحة بصفة مدير مساحة بعد اكتمال هذه الطريقة. يجب طلب هذه الطريقة خلال 30 يومًا من استدعاء طريقة create.space الأولى. إذا حاولت طلب هذه الطريقة بعد انقضاء مدة 30 يومًا، سيحدث إخفاق في المكالمة بسبب حذف مساحة وضع الاستيراد ولم يعد من الممكن الوصول إليها من خلال تطبيق Chat.

من غير الضروري أن يكون المستخدم الذي ينتحل هويته بطريقة completeImport هو منشئ المساحة.

يوضح المثال التالي كيفية إكمال وضع الاستيراد:

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)

استبدِل ما يلي:

إنشاء موارد العضوية

لإضافة اشتراكات مستخدمين إلى مساحة أكملت وضع الاستيراد، يمكنك طلب طريقة create في مورد Membership. يمكن لتطبيقات Chat مواصلة استخدام نطاق chat.import وانتحال هوية المستخدم لطلب هذه الطريقة خلال 30 يومًا من استدعاء طريقة create.space الأوليّة. يجب أن يكون المستخدم الذي ينتحل هويته مدير مساحة.

بعد انقضاء مدة 30 يومًا، تتطلّب تطبيقات Chat نطاقات اشتراك إضافية لاستدعاء هذه الطريقة.

ننصح التطبيقات في Chat بإنشاء موارد عضوية مباشرةً بعد اكتمال عملية الاستيراد، لكي تستمر تطبيقات Chat في استخدام نطاق chat.import لإنشاء اشتراكات، وتزويد جميع الأعضاء بإذن الوصول إلى المساحة التي تم استيرادها.