نوشتن پیش نویس پیام ها

در افزونه‌ی Google Workspace می‌توانید ویجت‌هایی ایجاد کنید که دارای اکشن‌های مرتبط باشند. می‌توانید از یک اکشن برای نوشتن پیش‌نویس‌های ایمیل جدید استفاده کنید و در صورت تمایل آنها را با استفاده از اطلاعات وارد شده در رابط کاربری افزونه یا اطلاعات یک پیام باز، پر کنید. به عنوان مثال، می‌توانید دکمه‌ای در رابط کاربری پیام افزونه خود داشته باشید که پاسخی به پیام باز شده‌ی فعلی ایجاد کند که از قبل با اطلاعات افزونه پر شده است.

وقتی عملی که پیام‌ها را می‌سازد، آغاز می‌شود، جیمیل یک تابع فراخوانی را برای ساخت و بازگرداندن پیش‌نویس اجرا می‌کند. سپس جیمیل آن پیش‌نویس را در رابط کاربری خود در یک پنجره استاندارد نوشتن ایمیل نمایش می‌دهد که کاربر می‌تواند در صورت نیاز آن را ویرایش و ارسال کند.

پیکربندی یک اکشن برای ساخت یک پیام پیش‌نویس

برای پیکربندی یک ویجت به گونه‌ای که پس از انتخاب، عملیات ساخت پیش‌نویس را آغاز کند، باید موارد زیر را انجام دهید:

  1. مطمئن شوید که مانیفست شما شامل دامنه action.compose باشد:

    https://www.googleapis.com/auth/gmail.addons.current.action.compose

    می‌توانید به جای آن از یک محدوده مجاز بیشتر استفاده کنید، اما فقط در صورتی که آن محدوده کاملاً ضروری باشد، باید این کار را انجام دهید.

  2. یک شیء Action ایجاد کنید و آن را با یک تابع فراخوانی که تعریف می‌کنید، مرتبط کنید.

  3. تابع کنترل‌کننده‌ی ویجت setComposeAction() ‎ مربوط به ویجت را فراخوانی کنید، شیء Action را به آن ارائه دهید و ComposeEmailType مشخص کنید.

  4. تابع فراخوانی (callback) را پیاده‌سازی کنید که عمل ساخت پیش‌نویس را اجرا می‌کند. به این تابع یک شیء رویداد به عنوان آرگومان داده می‌شود. تابع فراخوانی باید موارد زیر را انجام دهد:

    1. یک شیء GmailDraft ایجاد کنید.
    2. با استفاده از کلاس ComposeActionResponseBuilder و شیء GmailDraft یک شیء ComposeActionResponse بسازید.
    3. ComposeActionResponse ساخته شده را برگردانید.

شما می‌توانید GmailDraft ایجاد شده در تابع فراخوانی را با گیرنده‌ها، موضوع، متن پیام و پیوست‌ها از قبل پر کنید. برای پر کردن پیش‌نویس، داده‌ها می‌توانند از هر منبعی بیایند، اما معمولاً از اطلاعات ارائه شده به خود افزونه، اطلاعات موجود در پیام باز شده یا اطلاعات جمع‌آوری شده از یک سرویس شخص ثالث گرفته می‌شوند. شیء رویداد ارسال شده به تابع فراخوانی شامل شناسه پیام باز شده و سایر اطلاعات افزونه‌ای است که می‌توانید برای پر کردن پیش‌نویس از آنها استفاده کنید.

شما می‌توانید پیش‌نویس را به عنوان یک پیام مستقل جدید یا پاسخی به یک پیام موجود ایجاد کنید. این کار توسط enum ComposeEmailType که به setComposeAction() داده شده است، کنترل می‌شود. می‌توانید پیش‌نویس‌های پاسخ را به عنوان پاسخ‌های تکی یا پیام‌های «پاسخ به همه» ایجاد کنید.

پیش‌نویس‌های مستقل

یک پیش‌نویس مستقل، یک رشته جدید را آغاز می‌کند و پاسخی به هیچ پیام موجود نیست. می‌توانید با یکی از عملکردهای سرویس جیمیل زیر، یک پیش‌نویس مستقل ایجاد کنید:

پیش‌نویس‌های پاسخ

پیش‌نویس پاسخ بخشی از یک رشته پیام موجود است. پیش‌نویس‌های پاسخ یا پاسخ‌های تکی هستند که فقط برای فرستنده پیام ارسال می‌شوند یا پیش‌نویس‌های «پاسخ به همه» هستند که برای همه کسانی که آن پیام را دریافت کرده‌اند ارسال می‌شوند. می‌توانید با یکی از این عملکردهای سرویس Gmail یک پیش‌نویس پاسخ ایجاد کنید:

مثال

قطعه کد زیر نحوه اختصاص دادن عملی که یک پیش‌نویس پاسخ ایجاد می‌کند را به یک دکمه نشان می‌دهد.

  var composeAction = CardService.newAction()
      .setFunctionName('createReplyDraft');
  var composeButton = CardService.newTextButton()
      .setText('Compose Reply')
      .setComposeAction(
          composeAction,
          CardService.ComposedEmailType.REPLY_AS_DRAFT);

  // ...

  /**
   *  Creates a draft email (with an attachment and inline image)
   *  as a reply to an existing message.
   *  @param {Object} e An event object passed by the action.
   *  @return {ComposeActionResponse}
   */
  function createReplyDraft(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // a reply to be drafted.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    // Creates a draft reply.
    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var draft = message.createDraftReply('',
        {
            htmlBody: "Kitten! <img src='cid:kitten'/>",
            attachments: [
              UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
                  .getBlob()
            ],
            inlineImages: {
              "kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
                           .getBlob()
            }
        }
    );

    // Return a built draft response. This causes Gmail to present a
    // compose window to the user, pre-filled with the content specified
    // above.
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
  }