الردّ على أوامر تطبيق Google Chat

توضّح هذه الصفحة كيفية إعداد الأوامر والردّ عليها بصفتك تطبيقًا على Google Chat.

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

لتحديد ما إذا كان عليك إنشاء أوامر، وللتعرّف على كيفية تصميم تفاعلات المستخدمين، راجِع تحديد جميع رحلات المستخدمين.

أنواع أوامر تطبيق Chat

يمكنك إنشاء أوامر لتطبيق Chat على شكل أوامر تبدأ بشرطة مائلة أو أوامر سريعة. للاطّلاع على الأوامر، يمكن للمستخدمين كتابة شرطة مائلة / في مساحة الرد، أو النقر على أدوات Google Workspace من مساحة الرد في رسالة Chat. لاستخدام كل نوع من أنواع الأوامر، يمكن للمستخدمين اتّباع الخطوات التالية:
  1. الأوامر التي تبدأ بشرطة مائلة: يمكن للمستخدمين اختيار أمر يبدأ بشرطة مائلة من القائمة أو كتابة شرطة مائلة (/) ثم نص محدّد مسبقًا، مثل /about. تتطلّب تطبيقات المحادثة عادةً نص وسيطة للأمر الذي يبدأ بشرطة مائلة.

    يمكنك إنشاء أمر شرطة مائلة إذا كان تطبيق Chat يتطلّب إدخال معلومات إضافية من المستخدم. على سبيل المثال، يمكنك إنشاء أمر شرطة مائلة باسم /search يتم تنفيذه بعد أن يدخل المستخدم عبارة للبحث عنها، مثل /search receipts.

  2. الأوامر السريعة: يستخدم المستخدمون الأوامر من خلال فتح القائمة من مساحة الرد في رسالة Chat. لاستخدام أحد الأوامر، ينقر المستخدم على إضافة ثم يختار أحد الأوامر من القائمة.

    أنشئ أمرًا سريعًا إذا كان بإمكان تطبيقك على Chat الرد على المستخدم على الفور، بدون انتظار إدخال إضافي. على سبيل المثال، يمكنك إنشاء أمر سريع باسم صورة عشوائية يستجيب فورًا بعرض صورة.

تعرض الصورة التالية كيفية عثور المستخدمين على قائمة بالأوامر التي تبدأ بشرطة مائلة والأوامر السريعة:
يكتشف المستخدم قائمة بالأوامر التي تبدأ بشرطة مائلة والأوامر السريعة.
يعثر المستخدمون على قائمة بالأوامر التي تبدأ بشرطة مائلة والأوامر السريعة.

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

HTTP

إضافة Google Workspace توسّع نطاق Google Chat. لإنشاء واحد، أكمل البدء السريع في HTTP.

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

إضافة Google Workspace توسّع نطاق Google Chat. لإنشاء تطبيق، أكمِل دليل البدء السريع في Apps Script.

إعداد الأمر

يوضّح هذا القسم كيفية إكمال الخطوات التالية لإعداد أمر:

  1. أنشئ اسمًا ووصفًا للأمر.
  2. ضبط الأمر في Google Cloud Console

تسمية الأمر ووصفه

اسم الأمر هو ما يكتبه المستخدمون أو يختارونه لتنفيذ تطبيق Chat. يظهر أيضًا وصف موجز أسفل الاسم لتوجيه المستخدمين بشكل أكبر بشأن كيفية استخدام الأمر:

اسم الأمر الذي يبدأ بشرطة مائلة ووصفه
اسم ووصف أمر يبدأ بشرطة مائلة

عند اختيار اسم ووصف للأمر، ضع في اعتبارك الاقتراحات التالية:

لتسمية أمر:

  • استخدِم كلمات أو عبارات قصيرة وواضحة وقابلة للتنفيذ لجعل الأوامر واضحة للمستخدم. على سبيل المثال، بدلاً من الاسم Create a reminder، استخدِم Remind me.
  • ننصحك باستخدام اسم فريد أو شائع للأمر. إذا كان الأمر يصف تفاعلاً أو ميزة نموذجية، يمكنك استخدام اسم شائع يعرفه المستخدمون ويتوقعونه، مثل Settings أو Feedback. بخلاف ذلك، حاوِل استخدام أسماء أوامر فريدة، لأنّه إذا كان اسم الأمر هو نفسه في تطبيقات Chat الأخرى، على المستخدم فلترة الأوامر المشابهة للعثور على الأمر الذي يخصّك واستخدامه.

لوصف أمر:

  • احرص على أن يكون الوصف قصيرًا وواضحًا ليعرف المستخدمون ما يمكن توقّعه عند استخدام الأمر.
  • أخبِر المستخدمين إذا كانت هناك أي متطلبات تنسيق للأمر. على سبيل المثال، إذا أنشأت أمرًا يبدأ بشرطة مائلة ويتطلّب نص وسيطة، اضبط الوصف على شيء مثل Remind me to do [something] at [time].
  • أخبِر المستخدمين ما إذا كان تطبيق Chat يرد على الجميع في المساحة أو بشكل خاص على المستخدم الذي يستدعي الأمر. على سبيل المثال، بالنسبة إلى الأمر السريع About، يمكنك وصفه على النحو التالي Learn about this app (Only visible to you).

ضبط الأمر في Google Cloud Console

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

لضبط أمر في Google Chat API، أكمِل الخطوات التالية: o لضبط أمر شرطة مائلة في Google Chat API، أكمِل الخطوات التالية:

  1. في Google Cloud Console، انقر على"القائمة " > واجهات برمجة التطبيقات والخدمات > واجهات برمجة التطبيقات والخدمات المفعَّلة > Google Chat API.

    الانتقال إلى صفحة Google Chat API

  2. انقر على الإعداد.

  3. ضمن إعدادات الاتصال، انتقِل إلى المشغّلات وحدِّد تفاصيل نقطة النهاية. يجب استخدام هذا المشغّل في القسم التالي للرد على الأمر.

    1. عنوان URL لنقطة نهاية HTTP: يمكنك تحديد عنوان URL واحد مشترك لنقطة نهاية HTTP هنا. بدلاً من ذلك، لاستخدام نقاط نهاية HTTP مختلفة لمشغّلات مختلفة، حدِّد نقطة النهاية مباشرةً في حقل أمر التطبيق.
    2. برمجة التطبيقات: أدخِل رقم تعريف عملية نشر "برمجة التطبيقات". سيتم استدعاء الدالة onAppCommand تلقائيًا. لاستخدام دالة مختلفة من Apps Script، حدِّد اسم الدالة المخصّصة في حقل أمر التطبيق.
  4. ضمن الأوامر، انقر على إضافة أمر.

  5. أدخِل المعلومات التالية حول الأمر:

    1. رقم تعريف الأمر: هو رقم يتراوح بين 1 و1000 يستخدمه تطبيق Chat للتعرّف على الأمر وعرض ردّ.
    2. الوصف: النص الذي يوضّح كيفية استخدام الأمر وتنسيقه. يمكن أن يصل طول الأوصاف إلى 50 حرفًا.
    3. نوع الأمر: اختَر أمر سريع أو أمر الشرطة المائلة.
    4. حدِّد اسمًا للأمر السريع أو الأمر الذي يبدأ بشرطة مائلة:
      • اسم الأمر السريع: هو الاسم المعروض الذي يختاره المستخدمون من القائمة لتنفيذ الأمر. يمكن أن يصل طوله إلى 50 حرفًا وأن يتضمّن أحرفًا خاصة. مثلاً: Remind me
      • اسم الأمر الذي يبدأ بشرطة مائلة: النص الذي يكتبه المستخدمون لتنفيذ الأمر في رسالة. يجب أن يبدأ بشرطة مائلة، وأن يحتوي على نص فقط، ويمكن أن يصل إلى 50 حرفًا. مثلاً: /remindMe
  6. اختياري: إذا أردت أن يردّ تطبيق Chat على الأمر من خلال مربّع حوار، ضَع علامة في مربّع الاختيار فتح مربّع حوار.

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

تم الآن إعداد الأمر لتطبيق Chat.

الردّ على أمر

عندما يستخدم المستخدمون أمرًا، يتلقّى تطبيق Chat كائن حدث. تحتوي حمولة الحدث على عنصر appCommandPayload يتضمّن تفاصيل حول الأمر الذي تم استدعاؤه (بما في ذلك معرّف الأمر ونوعه)، وذلك لكي تتمكّن من عرض استجابة مناسبة. يتم إرسال عنصر الحدث إلى نقطة نهاية HTTP أو دالة Apps Script التي حدّدتها عند ضبط مشغّل أمر التطبيق.

رسالة خاصة لتطبيق Cymbal Labs Chat. توضح الرسالة أنّ تطبيق Chat تم إنشاؤه بواسطة Cymbal Labs وتتضمّن رابطًا إلى المستندات ورابطًا للتواصل مع فريق الدعم.
يردّ تطبيق Chat بشكل خاص على أمر الشرطة المائلة /help لشرح كيفية الحصول على الدعم.

يعرض الرمز التالي مثالاً على تطبيق Chat يردّ على الأمر /about برسالة نصية. للرد على أوامر الشرطة المائلة، يعالج تطبيق Chat عناصر الأحداث من مشغّل أمر التطبيق. عندما تحتوي حمولة كائن حدث على معرّف أمر يتضمّن شرطة مائلة، يعرض تطبيق Chat الإجراء DataActions مع الكائن createMessageAction:

Node.js

node/chat/avatar-app/index.js
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 1;

/**
 * Handle requests from Google Workspace add on
 *
 * @param {Object} req Request sent by Google Chat
 * @param {Object} res Response to be sent back to Google Chat
 */
http('avatarApp', (req, res) => {
  const chatEvent = req.body.chat;
  let message;
  if (chatEvent.appCommandPayload) {
    message = handleAppCommand(chatEvent);
  } else {
    message = handleMessage(chatEvent);
  }
  res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: {
    message: message
  }}}});
});

/**
 * Responds to an APP_COMMAND event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 * @return the response message object.
 */
function handleAppCommand(event) {
  switch (event.appCommandPayload.appCommandMetadata.appCommandId) {
    case ABOUT_COMMAND_ID:
      return {
        text: 'The Avatar app replies to Google Chat messages.'
      };
  }
}

Python

python/chat/avatar-app/main.py
# The ID of the slash command "/about".
# You must use the same ID in the Google Chat API configuration.
ABOUT_COMMAND_ID = 1

@functions_framework.http
def avatar_app(req: flask.Request) -> Mapping[str, Any]:
  """Handle requests from Google Workspace add on

  Args:
    flask.Request req: the request sent by Google Chat

  Returns:
    Mapping[str, Any]: the response to be sent back to Google Chat
  """
  chat_event = req.get_json(silent=True)["chat"]
  if chat_event and "appCommandPayload" in chat_event:
    message = handle_app_command(chat_event)
  else:
    message = handle_message(chat_event)
  return { "hostAppDataAction": { "chatDataAction": { "createMessageAction": {
      "message": message
  }}}}

def handle_app_command(event: Mapping[str, Any]) -> Mapping[str, Any]:
  """Responds to an APP_COMMAND event in Google Chat.

  Args:
    Mapping[str, Any] event: the event object from Google Chat

  Returns:
    Mapping[str, Any]: the response message object.
  """
  if event["appCommandPayload"]["appCommandMetadata"]["appCommandId"] == ABOUT_COMMAND_ID:
    return {
      "text": "The Avatar app replies to Google Chat messages.",
    }
  return {}

Java

java/chat/avatar-app/src/main/java/com/google/chat/avatar/App.java
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
private static final int ABOUT_COMMAND_ID = 1;

private static final Gson gson = new Gson();

/**
 * Handle requests from Google Workspace add on
 * 
 * @param request the request sent by Google Chat
 * @param response the response to be sent back to Google Chat
 */
@Override
public void service(HttpRequest request, HttpResponse response) throws Exception {
  JsonObject event = gson.fromJson(request.getReader(), JsonObject.class);
  JsonObject chatEvent = event.getAsJsonObject("chat");
  Message message;
  if (chatEvent.has("appCommandPayload")) {
    message = handleAppCommand(chatEvent);
  } else {
    message = handleMessage(chatEvent);
  }
  JsonObject createMessageAction = new JsonObject();
  createMessageAction.add("message", gson.fromJson(gson.toJson(message), JsonObject.class));
  JsonObject chatDataAction = new JsonObject();
  chatDataAction.add("createMessageAction", createMessageAction);
  JsonObject hostAppDataAction = new JsonObject();
  hostAppDataAction.add("chatDataAction", chatDataAction);
  JsonObject dataActions = new JsonObject();
  dataActions.add("hostAppDataAction", hostAppDataAction);
  response.getWriter().write(gson.toJson(dataActions));
}

/**
 * Handles an APP_COMMAND event in Google Chat.
 *
 * @param event the event object from Google Chat
 * @return the response message object.
 */
private Message handleAppCommand(JsonObject event) throws Exception {
  switch (event.getAsJsonObject("appCommandPayload")
    .getAsJsonObject("appCommandMetadata").get("appCommandId").getAsInt()) {
    case ABOUT_COMMAND_ID:
      return new Message()
        .setText("The Avatar app replies to Google Chat messages.");
    default:
      return null;
  }
}

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

apps-script/chat/avatar-app/Code.gs
// The ID of the slash command "/about".
// You must use the same ID in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 1;

/**
 * Responds to an APP_COMMAND event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 */
function onAppCommand(event) {
  // Executes the app command logic based on ID.
  switch (event.chat.appCommandPayload.appCommandMetadata.appCommandId) {
    case ABOUT_COMMAND_ID:
      return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
        text: 'The Avatar app replies to Google Chat messages.'
      }}}}};
  }
}

لاستخدام عينة الرمز هذه، استبدِل ABOUT_COMMAND_ID برقم تعريف الأمر الذي حدّدته عند إعداد الأمر في Chat API.

اختبار الأمر

لاختبار الأمر والرمز، يُرجى الاطّلاع على اختبار الميزات التفاعلية لتطبيقات Google Chat.

لمعرفة كيفية اختبار الأمر واستخدامه في واجهة مستخدم Chat، راجِع مقالة استخدام التطبيقات في Google Chat ضمن مستندات "مساعدة Google Chat".