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

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

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

پیکربندی یک اقدام برای ایجاد یک پیام پیش نویس

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

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

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

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

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

  3. تابع کنترل ویجت setComposeAction() ویجت را فراخوانی کنید و شی Action را در اختیار آن قرار دهید و ComposeEmailType را مشخص کنید.

  4. تابع callback را که عمل ایجاد پیش نویس را اجرا می کند، پیاده سازی کنید. به این تابع یک شی رویداد به عنوان آرگومان داده می شود. تابع callback باید موارد زیر را انجام دهد:

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

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

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

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

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

به پیش نویس ها پاسخ دهید

پیش نویس پاسخ بخشی از یک رشته پیام موجود است. پیش‌نویس‌های پاسخ یا پاسخ‌های تکی هستند که فقط برای فرستنده پیام ارسال می‌شوند یا پیش‌نویس‌های «پاسخ به همه» هستند که برای همه کسانی که آن پیام را دریافت کرده‌اند ارسال می‌شوند. می توانید با یکی از این توابع سرویس 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();
  }