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

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

في ما يلي شرح لعملية الاستيراد بالكامل:

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

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

برمجة تطبيقات

Python

التخطيط للاستيراد

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

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

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

عند استيراد الرسائل إلى مساحة، ننصحك بتوزيع المكالمات إلى messages.create() عبر سلاسل الرسائل المختلفة.

تحديد المساحات المتوافقة لاستيرادها

لا يدعم وضع الاستيراد سوى SpaceType من SPACE. لا يدعم DIRECT_MESSAGE إذا كنت مشتركًا في معاينة المطوِّر البرنامج، GROUP_CHAT أيضًا يمكنك الاطّلاع على مستندات بشأن SpaceType. لمزيد من المعلومات.

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

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

عند إنشاء مساحة في وضع الاستيراد، يُرجى تدوين ما يلي:

  • التاريخ والوقت - تذكر أنه يجب إكمال وضع الاستيراد في غضون 30 يوم في حال لا تزال المساحة في وضع الاستيراد بعد 30 أيام من وقت استدعاء طريقة spaces.create()، وهو تلقائيًا ويصبح يتعذّر الوصول إليها ولا يمكن استردادها.
    • لا تستخدم قيمة createTime لتتبع انتهاء الإطار الزمني البالغ 30 يومًا. هذا ليس هي نفسها دائمًا عند استدعاء طريقة spaces.create(). فعندما باستخدام وضع الاستيراد، يمكن تعيين حقل createTime على الطابع الزمني الذي تم فيه إنشاء المساحة في المصدر وقت الإنشاء الأصلي.
  • اسم مورد المساحة (name) - يشير هذا المصطلح إلى المعرّف الفريد المستخدَم لاسترجاع معلومات عن مساحة محددة وتتم الإشارة إليها في خطوات لاحقة عند استيراد المحتوى إلى الفضاء.

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

لإنشاء مساحة خارجية في وضع الاستيراد، اضبط externalUserAllowed على true. بعد اكتمال الاستيراد بنجاح، يمكنك إضافة مستخدمين خارجيين.

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

برمجة تطبيقات

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)

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

  • EMAIL: عنوان البريد الإلكتروني لحساب المستخدم فإنك تنتحل هوية مرجع على مستوى النطاق.
  • DISPLAY_NAME: اسم المساحة التي تم إنشاؤها في وضع الاستيراد. يجب أن يكون هذا الاسم فريدًا للمساحة التي يتم عرضها مستخدمو Chat ننصح باستخدام الاسم المعروض نفسه المساحة التي تستورد منها البيانات.

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

لاستيراد المراجع من منصات مراسلة أخرى، عليك إنشاء 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)

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

استيراد الموارد في مساحة خارجية

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

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

يمكن لتطبيق 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 الذي ينسب هذه المساحات إلى عملية استيراد بيانات

دوِّن التاريخ والوقت الذي تتصل فيه بـ completeImport، اسم المورد المستخدم الذي أجرى الاتصال، وظهر الرد. يمكن أن يكون هذا التلميح مفيدًا إذا واجهت أي مشكلات، وينبغي التحقق منها.

لإكمال وضع الاستيراد وإتاحة الوصول إلى المساحة للمستخدمين، يمكن لتطبيق 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)

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

منح إذن الوصول إلى المساحة بعد وضع الاستيراد

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

لاستخدام هذه الطرق مع نطاق chat.import، يجب أن يكون المستخدم الذي ينتحل هويته لتصبح مدير مساحة.

بالنسبة إلى المساحات الخارجية، تتيح طريقة الاشتراك create() أيضًا دعوة مستخدمين خارج مؤسستك على Workspace. يُرجى التأكد من أنّ: فأنت تفهم كل القيود المعروفة المستخدمين الخارجيين.

تحديد المشاكل وحلّها

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

عند استيراد مساحة بنجاح، يتم إكمال CompleteImportSpace باستخدام حالة OK.

لم يكتمل الاستيراد قبل انتهاء الفترة التي تبلغ 30 يومًا.

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

للأسف، لم تعد المساحة المحذوفة متوفرة أو يمكن استردادها يجب بدء عملية الاستيراد مرة أخرى.

العثور على المساحات المفقودة

إذا لم تتمكّن من العثور على "مساحة Chat" الجديدة، راجِع الجدول التالي للرد الذي تلقيته من CompleteImportSpace إلى الاطلاع على الشرح وكيفية حلها.

تم تلقّي الردّ خطوات التحقيق الشرح الدقة
يطرح CompleteImportSpace استثناءً ويطلب تُرجع GetSpace مبلغ PERMISSION_DENIED. راجِع سجلّاتك لمعرفة وقت إنشاء المساحة وما إذا كانت أقدم. بعد مرور 30 يومًا على حذفه تلقائيًا بالإضافة إلى ذلك، لا يوجد للمساحة التي تم استيرادها في أداة إدارة المساحات أو سجل التدقيق. مرور مدة تزيد عن 30 يومًا منذ بدء عملية الاستيراد وتعذَّر على المساحة الخروج من عملية نقل البيانات. عليك إنشاء مساحة جديدة وإعادة تشغيل عملية الاستيراد.
يتم إرجاع مبلغ OK من قِبل "CompleteImportSpace" والاتصال تُرجع GetSpace PERMISSION_DENIED. ما مِن سجلّ للمساحة التي تم استيرادها في أداة إدارة المساحات ولكن يظهر أنّ المساحة محذوفة في سجل التدقيق تم استيراد المساحة بنجاح، ولكن تم حذفها لاحقًا. عليك إنشاء مساحة جديدة وإعادة تشغيل عملية الاستيراد.