تلقّي تفاعلات المستخدمين والاستجابة لها

توضّح هذه الصفحة كيف يمكن لتطبيق Google Chat تلقّي تفاعلات المستخدمين في Google Chat والردّ عليها.

لإنشاء واجهات تفاعلية لتطبيقات Chat، يمكنك استخدام المكوّنات التالية:

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

يمكن لتطبيقات Chat إنشاء واجهات وعرضها بالطرق التالية:

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

طريقة عمل تفاعلات المستخدمين

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

يوضّح المخطّط التالي كيفية معالجة تطبيقات Google Chat لتفاعلات المستخدمين والردّ عليها:

بنية طريقة معالجة تطبيقات Google Chat لتفاعلات المستخدمين

العوامل التي تؤدي إلى الظهور

المشغّلات هي الطرق المحدّدة التي يستدعي بها المستخدمون تطبيق Chat باستخدام واجهة مستخدم Chat، مثل استخدام الإشارات @أو أوامر التطبيق.

يعرض الجدول التالي مشغّلات Chat ووصفًا لها وكيفية استجابة تطبيقات Chat عادةً:

Trigger الوصف الردّ النموذجي
تمت الإضافة إلى المساحة

يضيف المستخدم تطبيق Chat إلى مساحة، أو يثبّت مشرف Google Workspace تطبيق Chat في مساحات الرسائل المباشرة للمستخدمين في مؤسسته. لمعرفة المزيد عن تطبيقات Chat التي يثبّتها المشرفون، يُرجى الاطّلاع على مقالة تثبيت تطبيقات Marketplace في نطاقك في مستندات "مساعدة مشرف Google Workspace".

يرسل تطبيق Chat رسالة تعريفية توضّح وظيفة التطبيق وكيفية تفاعل المستخدمين في المساحة معه.
رسالة

يتفاعل المستخدم مع تطبيق Chat في رسالة بإحدى الطرق التالية:

  • يرسل رسالة في مساحة رسالة مباشرة (DM) باستخدام تطبيق Chat.
  • الإشارة إلى تطبيق Chat في أي نوع من المساحات
  • إرسال رسالة تحتوي على رابط يتطابق مع نمط عنوان URL لمعاينات الروابط
  • يكتب نصًا في قائمة الاختيار المتعدّد الخاصة بأداة selectionInput.
يردّ تطبيق Chat استنادًا إلى محتوى الرسالة. على سبيل المثال، يردّ تطبيق Chat برسالة أو يرفق بطاقة معاينة للرابط أو يقترح عناصر في قائمة اختيار متعدّد.
تمت إزالته من المساحة

يزيل المستخدم تطبيق Chat من مساحة، أو يلغي مشرف Google Workspace تثبيت تطبيق Chat لمستخدم في مؤسسته.

لا يمكن للمستخدمين إزالة تطبيقات Chat التي ثبَّتها المشرف. إذا كان المستخدم قد ثبَّت تطبيق Chat من قبل، سيظل التطبيق مثبَّتًا بغض النظر عمّا إذا حاول مشرف Google Workspace إلغاء تثبيته.

يزيل تطبيق Chat أي إشعارات واردة تم ضبطها للمساحة (مثل حذف webhook) ويمحو أي مساحة تخزين داخلية. لا يمكن لتطبيقات المحادثة الرد برسائل على هذا المشغّل لأنّها لم تعُد عضوًا في المساحة.
أوامر التطبيقات

يستدعي المستخدم أمرًا في تطبيق Chat (مثل أمر يبدأ بشرطة مائلة أو أمر سريع أو إجراء على رسالة).

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

يفتح المستخدم علامة التبويب الصفحة الرئيسية في مساحة رسالة مباشرة على الخاص باستخدام تطبيق Chat، أو يتفاعل مع تطبيق مصغّر على بطاقة الصفحة الرئيسية.

يعرض تطبيق Chat عنصر RenderActions الذي يرسل بطاقة الصفحة الرئيسية (pushCard) أو يحدّث بطاقة الصفحة الرئيسية المعروضة (updateCard).

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

ضبط الطلبات الأولية

تساعد الطلبات الأولية المستخدمين في التعرّف على وظائف تطبيق Chat عند فتح رسالة مباشرة على الخاص فارغة بينك وبين تطبيقك. يمكنك ضبط ما يصل إلى ثلاثة طلبات أولية.

لإضافة طلبات جاهزة لبدء المحادثة وضبطها، اتّبِع الخطوات التالية:

  1. في وحدة تحكّم Google Cloud، انتقِل إلى صفحة الإعدادات الخاصة بواجهة برمجة تطبيقات Chat:

    الانتقال إلى صفحة "إعدادات واجهة برمجة تطبيقات Chat"

  2. ضمن الميزات التفاعلية، ابحث عن عبارات بدء المحادثة وانقر على إضافة عبارة.

  3. في حقل الترتيب (من 1 إلى 3)، أدخِل رقمًا من 1 إلى 3 لتحديد ترتيب العرض.

  4. ضمن اختيار النوع، اختَر طريقة عمل الطلب:

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

    • إذا اخترت "طلب نصي":

      1. في حقل العنوان، أدخِل عنوان الطلب الذي يظهر على الشريحة (30 حرفًا كحدّ أقصى).
      2. في نص الطلب، أدخِل النص الذي يظهر في خانة إدخال المحتوى (60 حرفًا كحد أقصى).
      3. اختياري: أضِف عناوين ونصوصًا مترجَمة للمستخدمين بلغات أخرى:
      4. ضمن الطلبات المترجمة، انقر على إضافة لغة.
      5. في اللغة، اختَر لغة معتمَدة من القائمة المنسدلة.
      6. في العنوان المتوافق مع اللغة المحلية، أدخِل العنوان المتوافق مع اللغة المحلية (30 حرفًا كحدّ أقصى).
      7. في نص الطلب المترجَم، أدخِل نص الطلب المترجَم (60 حرفًا كحد أقصى).
      8. كرِّر الخطوات لإضافة المزيد من اللغات حسب الحاجة.
    • في حال اختيار "موجه الأوامر":

      1. في أمر يبدأ بشرطة مائلة / الأمر السريع، اختَر الأمر من القائمة المنسدلة.
  6. انقر على تم، ثم على حفظ في أسفل الصفحة.

التعامل مع عمليات إعادة محاولة طلبات HTTP إلى خدمتك

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

عناصر الحدث

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

حمولة عنصر الحدث

يتضمّن كل عنصر من عناصر أحداث Chat commonEventObject مع تفاصيل المضيف والمنصة (hostApp: "CHAT" وclientPlatform وuserLocale وuserTimezone وparameters وformInputs) وعنصر chat يحتوي على سياق خاص بـ Chat:

  • بالنسبة إلى مشغّل صفحة التطبيق الرئيسية (عندما يفتح المستخدم علامة التبويب الصفحة الرئيسية في رسالة مباشرة على الخاص مع تطبيق Chat)، يحتوي العنصر chat على chat.user وchat.eventTime بدون حقل payload موحّد. عندما ينقر المستخدم على زر في بطاقة الصفحة الرئيسية، يتضمّن عنصر الحدث chat.buttonClickedPayload بالإضافة إلى commonEventObject.parameters (وcommonEventObject.formInputs إذا كانت البطاقة تحتوي على إدخالات نموذج).
  • بالنسبة إلى التفاعلات مع المساحات والرسائل (تمت الإضافة إلى المساحة أو الرسالة أو تمت الإزالة من المساحة أو أمر التطبيق أو التفاعلات مع الأزرار والأدوات)، يتضمّن العنصر chat كلاً من chat.user وchat.space وchat.eventTime وحمولة التفاعل المقابلة:
    • ‫messagePayload: يحتوي على space وmessage وconfigCompleteRedirectUri عندما يرسل المستخدم رسالة.
    • addedToSpacePayload: يحتوي على space وinteractionAdd وconfigCompleteRedirectUri عند إضافة تطبيق Chat إلى مساحة.
    • removedFromSpacePayload: يحتوي على space عند إزالة تطبيق Chat من مساحة.
    • ‫buttonClickedPayload: يحتوي على space وmessage وisDialogEvent وdialogEventType عندما ينقر المستخدم على زر في بطاقة أو مربّع حوار.
    • ‫widgetUpdatedPayload: يحتوي على space عندما يتفاعل المستخدم مع أداة، مثل الكتابة في قائمة اختيار متعدّد تتضمّن مصدر بيانات خارجيًا.
    • ‫appCommandPayload: يحتوي على space وmessage وappCommandMetadata وisDialogEvent وdialogEventType وconfigCompleteRedirectUri عندما ينفّذ المستخدم أمر تطبيق.

لمزيد من المعلومات حول عناصر أحداث الإضافات في Chat وتطبيقات Google Workspace الأخرى، يُرجى الاطّلاع على عناصر الأحداث.

تقديم ردّ

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

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

للردّ على تفاعلات المستخدمين بشكل متزامن، يعالج تطبيق Chat عنصر الحدث الوارد ويعرض أحد عناصر JSON التالية:

  • ‫DataActions: لإنشاء رسائل المحادثة أو تعديلها (CreateMessageAction وUpdateMessageAction) أو إرفاق معاينات الروابط (UpdateInlinePreviewAction) باستخدام chatDataActionMarkup
  • RenderActions: لإنشاء صفحة رئيسية أو مربّع حوار أو تعديلهما أو إغلاقهما (pushCard وupdateCard وendNavigation: "CLOSE_DIALOG")، أو لتقديم اقتراحات إدخال ديناميكية لقائمة اختيار متعدّد (modifyCard).
  • ‫AuthorizationError: يطلب من المستخدمين إدخال بطاقة تفويض أساسية (basic_authorization_prompt) لتسجيل الدخول أو إثبات ملكية حساب على خدمة خارجية.

يوضّح الجدول التالي كيف يمكن لتطبيقات Chat الردّ باستخدام الإجراءات. يمكن لتطبيقات Chat عرض عناصر JSON مباشرةً أو إنشاء الرد باستخدام AddOnResponseService وCardService في "برمجة تطبيقات Google".

ردّ تطبيق المحادثة الإجراء المطلوب إرجاعه (JSON) الإجراء المطلوب لعرض القيمة (برمجة تطبيقات Google)
إرسال رسالة أو تعديل رسالة ‫DataActions (createMessageAction أو updateMessageAction) DataActionsResponse
معاينة الروابط في الرسائل التي يرسلها مستخدمو Chat في مساحة DataActions ‏(updateInlinePreviewAction) DataActionsResponse
عرض صفحة رئيسية أو تعديلها في علامة التبويب الصفحة الرئيسية ضمن رسالة مباشرة ‫RenderActions (pushCard أو updateCard) ActionResponse
فتح مربّع حوار أو تعديله أو إغلاقه ‫RenderActions (pushCard أو updateCard أو endNavigation: "CLOSE_DIALOG") ActionResponse
لجمع المعلومات من بطاقة أو مربّع حوار، اقترِح عناصر اختيار استنادًا إلى ما يكتبه المستخدمون في قائمة اختيار متعدّد. RenderActions ‏(modifyCard) ActionResponse
طلب إعداد أو منح إذن لخدمة خارجية AuthorizationError ‏(basic_authorization_prompt) AuthorizationException

الرد برسالة

يمكن لتطبيقات الدردشة الردّ برسالة على أي من المشغّلات أو التفاعلات التالية:

  • مشغّلات الرسائل، مثل عندما يشير المستخدمون إلى تطبيق Chat باستخدام @أو يرسلون رسالة مباشرة إليه
  • عمليات التشغيل التي يتم تفعيلها عند إضافة التطبيق إلى مساحة، مثل عندما يثبّت المستخدمون تطبيق Chat من Google Workspace Marketplace أو يضيفونه إلى مساحة
  • مشغّلات أوامر التطبيق، مثل عندما يستدعي المستخدمون أمرًا يبدأ بشرطة مائلة أو أمرًا سريعًا
  • النقرات على الأزرار من البطاقات في الرسائل أو مربّعات الحوار على سبيل المثال، عندما يدخل المستخدمون معلومات وينقرون على "إرسال".

يمكن أن تتضمّن تطبيقات المحادثة أيًا مما يلي في الرسالة:

  • النص الذي يحتوي على روابط تشعّبية وإشارات إلى مستخدمين وإيموجي اطّلِع على تنسيق الرسائل.
  • بطاقة واحدة أو أكثر، يمكن أن تظهر في رسالة أو يتم فتحها في نافذة جديدة كحوار راجِع المقالة إنشاء بطاقات لتطبيقات Google Chat.
  • تطبيقات مصغّرة واحدة أو أكثر خاصة بالملحقات، وهي عبارة عن أزرار تظهر بعد أي نص أو بطاقات في الرسالة

للردّ برسالة، أرسِل الرمز DataActions مع كائن CreateMessageAction:

{
  "hostAppDataAction": {
    "chatDataAction": {
      "createMessageAction": {
        "message": <var>MESSAGE</var>
      }
    }
  }
}

استبدِل MESSAGE بمورد Message من Chat API.

في المثال التالي، ينشئ تطبيق Chat رسالة نصية للتعريف بالخدمة ويرسلها كلما تمت إضافته إلى مساحة من خلال الرد على مشغّل تمت الإضافة إلى المساحة باستخدام DataActions:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The request object from Google Chat.
 * @param {Object} res The response object from the Chat app.
 */
exports.cymbalApp = function cymbalApp(req, res) {
  const chatEvent = req.body.chat;
  // Send an onboarding message when added to a Chat space
  if (chatEvent.addedToSpacePayload) {
    res.json({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
      text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
        'To learn what else I can do, type `/help`.'
    }}}}});
  }
};

Python

from flask import Flask, request, json
app = Flask(__name__)

@app.route('/', methods=['POST'])
def cymbal_app():
  """Sends an onboarding message when the Chat app is added to a space.

  Returns:
    Mapping[str, Any]: The response object from the Chat app.
  """
  chat_event = request.get_json()["chat"]
  if "addedToSpacePayload" in chat_event:
    return json.jsonify({ "hostAppDataAction": { "chatDataAction": {
      "createMessageAction": { "message": {
        "text": 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
        'To learn what else I can do, type `/help`.'
      }}
    }}})

جافا

@SpringBootApplication
@RestController
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }

  /*
   * Sends an onboarding message when the Chat app is added to a space.
   *
   * @return The response object from the Chat app.
   */
  @PostMapping("/")
  @ResponseBody
  public GenericJson onEvent(@RequestBody JsonNode event) throws Exception {
    JsonNode chatEvent = event.at("/chat");
    if (!chatEvent.at("/addedToSpacePayload").isEmpty()) {
      return new GenericJson() { {
        put("hostAppDataAction", new GenericJson() { {
          put("chatDataAction", new GenericJson() { {
            put("createMessageAction", new GenericJson() { {
              put("message", new Message().setText(
                "Hi, Cymbal at your service. I help you manage your calendar " +
                "from Google Chat. Take a look at your schedule today by typing " +
                "`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
                "To learn what else I can do, type `/help`."
              ));
            } });
          } });
        } });
      } };
    }
    return new GenericJson();
  }
}

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

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Google Chat.
 * @return {Object} Response from the Chat app.
 */
function onAddedToSpace(event) {
  return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
    text: 'Hi, Cymbal at your service. I help you manage your calendar ' +
          'from Google Chat. Take a look at your schedule today by typing ' +
          '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. ' +
          'To learn what else I can do, type `/help`.'
  }}}}};
}

تعرض عيّنة تعليمات برمجية الرسالة النصية التالية:

مثال على رسالة الإعداد

تعديل رسالة

يمكن لتطبيقات المحادثة أيضًا تعديل الرسائل التي ترسلها. على سبيل المثال، يمكن لتطبيق Chat تعديل رسالة بعد أن يرسل المستخدم مربع حوار أو ينقر على زر في بطاقة ضمن رسالة.

لتعديل رسالة تطبيق Chat استجابةً لتفاعل، عليك عرض DataActions مع UpdateMessageAction:

{
  "hostAppDataAction": {
    "chatDataAction": {
      "updateMessageAction": {
        "message": <var>MESSAGE</var>
      }
    }
  }
}

استبدِل MESSAGE بمورد Message من Chat API.

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

الردّ بشكل غير متزامن باستخدام Google Chat API

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

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

عند الردّ على تفاعل بعد 30 ثانية، لتجنُّب ظهور رسالة خطأ موجّهة للمستخدمين تفيد بأنّ تطبيق Chat لا يستجيب، يجب إرسال إقرار باستلام عنصر الحدث في غضون 30 ثانية من خلال عرض ردّ فارغ:

Node.js

async function onEvent(req, res) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return res.send({});
};

Python

def on_event(event) -> dict:
  # Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return {}

جافا

public String onEvent(JsonNode event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return "{}";
}

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

function onEvent(event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return null;
}

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

تطبيقات Chat التي ليست إضافات: تلقّي تفاعلات المستخدمين والردّ عليها

تتلقّى تطبيقات المحادثة التي ليست إضافات Google Workspace أحداث التفاعل مع Chat API (Event) بدلاً من عناصر أحداث إضافات Google Workspace (EventObject)، وتستجيب من خلال عرض المورد Message بدلاً من إجراء.

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

أنواع أحداث التفاعل

بالنسبة إلى كل نوع من تفاعلات المستخدمين، يرسل Google Chat إلى تطبيق Chat ليس إضافة كائن Event يمثّل نوعه الحقل eventType:

تفاعل المستخدم eventType ردّ نموذجي من تطبيق Chat ليس إضافة
يرسل مستخدم رسالة إلى تطبيق في Chat، مثلاً، يشير إلى تطبيق Chat أو يستخدم أمرًا يبدأ بشرطة مائلة. MESSAGE يردّ تطبيق Chat استنادًا إلى محتوى الرسالة. على سبيل المثال، يردّ تطبيق Chat على الأمر /about الذي يبدأ بشرطة مائلة برسالة توضّح المهام التي يمكن أن ينفّذها تطبيق Chat.
يضيف مستخدم تطبيق Chat إلى مساحة. ADDED_TO_SPACE يرسل تطبيق Chat رسالة إعداد توضّح وظيفة التطبيق وكيفية تفاعل المستخدمين في المساحة معه.
يزيل مستخدم تطبيق Chat من مساحة. REMOVED_FROM_SPACE يزيل تطبيق Chat أي إشعارات واردة تم ضبطها للمساحة (مثل حذف خطاف ويب) ويمحو أي مساحة تخزين داخلية.
ينقر المستخدم على زر في بطاقة من رسالة تطبيق Chat أو مربّع حوار أو صفحة رئيسية. CARD_CLICKED يعالج تطبيق Chat ويخزّن أي بيانات أرسلها المستخدم، أو يعرض بطاقة أخرى.
يفتح المستخدم الصفحة الرئيسية لتطبيق Chat من خلال النقر على علامة التبويب الصفحة الرئيسية في رسالة محادثة بين شخصين. APP_HOME يعرض تطبيق Chat بطاقة ثابتة أو تفاعلية من الصفحة الرئيسية.
يرسل مستخدم نموذجًا من الصفحة الرئيسية لتطبيق Chat. SUBMIT_FORM يعالج تطبيق Chat ويخزّن أي بيانات أرسلها المستخدم، أو يعرض بطاقة أخرى.
يُصدر المستخدم أمرًا باستخدام طلب سريع. APP_COMMAND يستجيب تطبيق Chat استنادًا إلى الطلب الذي تم تنفيذه. على سبيل المثال، يردّ تطبيق Chat على الأمر حول برسالة توضّح المهام التي يمكن أن ينفّذها تطبيق Chat.

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

أحداث التفاعل من مربّعات الحوار

إذا كان تطبيق Chat غير الإضافي يفتح مربّعات حوار، سيتضمّن حدث التفاعل المعلومات الإضافية التالية التي يمكنك استخدامها لمعالجة الردّ:

  • تم ضبط الحقل isDialogEvent على true.
  • توضّح السمة DialogEventType (REQUEST_DIALOG أو SUBMIT_DIALOG أو CANCEL_DIALOG) ما إذا كان التفاعل يؤدي إلى فتح مربّع حوار أو إرسال معلومات من مربّع حوار أو إغلاق مربّع حوار.

ضبط تطبيق Chat ليس إضافة لتلقّي أحداث التفاعل

  1. في Google Cloud Console، انتقِل إلى صفحة الإعداد الخاصة بواجهة برمجة التطبيقات Chat API:

    الانتقال إلى صفحة "إعدادات واجهة برمجة تطبيقات Chat"

  2. ضمن الميزات التفاعلية، ألغِ تحديد إنشاء تطبيق Chat هذا كإضافة في Google Workspace، ثم اضبط الوظائف ونقطة نهاية إعدادات الاتصال واحدة (عنوان URL لنقطة نهاية HTTP أو "برمجة التطبيقات" أو اسم موضوع Cloud Pub/Sub أو Dialogflow) والأوامر والطلبات الأولية ومعاينات الروابط وإذن الوصول.

  3. انقر على حفظ.

الرد برسالة في تطبيق Chat ليس إضافة

للرد بشكل متزامن في تطبيق Chat ليس إضافة، عليك عرض الكائن Message مباشرةً. يردّ المثال التالي على حدث تفاعل ADDED_TO_SPACE برسالة نصية:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The event object from Chat API.
 * @param {Object} res The response object from the Chat app.
 */
exports.cymbalApp = function cymbalApp(req, res) {
  // Send an onboarding message when added to a Chat space
  if (req.body.type === 'ADDED_TO_SPACE') {
    res.json({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
        'from Google Chat. Take a look at your schedule today by typing ' +
        '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
        'learn what else I can do, type `/help`.'
    });
  }
};

Python

from flask import Flask, request, json
app = Flask(__name__)

@app.route('/', methods=['POST'])
def cymbal_app():
  """Sends an onboarding message when the Chat app is added to a space.

  Returns:
    Mapping[str, Any]: The response object from the Chat app.
  """
  event = request.get_json()
  if event['type'] == 'ADDED_TO_SPACE':
    return json.jsonify({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
      'from Google Chat. Take a look at your schedule today by typing ' +
      '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To ' +
      'learn what else I can do, type `/help`.'
    })
  return json.jsonify({})

جافا

@SpringBootApplication
@RestController
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }

  /*
   * Sends an onboarding message when the Chat app is added to a space.
   *
   * @return The response object from the Chat app.
   */
  @PostMapping("/")
  @ResponseBody
  public Message onEvent(@RequestBody JsonNode event) {
    switch (event.get("type").asText()) {
      case "ADDED_TO_SPACE":
        return new Message().setText(
          "Hi, Cymbal at your service. I help you manage your calendar " +
          "from Google Chat. Take a look at your schedule today by typing " +
          "`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. " +
          "To learn what else I can do, type `/help`.");
      default:
        return new Message();
    }
  }
}

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

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Chat API.
 * @return {Object} Response from the Chat app.
 */
function onAddToSpace(event) {
  return {
    'text': 'Hi, Cymbal at your service. I help you manage your calendar ' +
      'from Google Chat. Take a look at your schedule today by typing ' +
      '`/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn ' +
      'what else I can do, type `/help`.'
  };
}