اعلان های فشاری

Action شما می‌تواند هر زمان که مرتبط باشد، اعلان‌ها را به کاربران ارسال کند، مانند ارسال یادآوری زمانی که موعد مقرر برای یک کار نزدیک است.

این راهنما نحوه تنظیم اعلان‌های فشار را برای Action خود توضیح می‌دهد.

سطوح پشتیبانی شده

اعلان‌های فشاری در دستگاه‌های Android و iOS در دسترس هستند (دستگاه‌های iOS باید برنامه Assistant را برای دریافت اعلان‌های فشار نصب کرده باشند). آنها در حال حاضر در بلندگوهای فعال صوتی، نمایشگرهای هوشمند یا سطوح دیگر پشتیبانی نمی‌شوند.

پیش نیازها

پروژه شما باید حداقل دارای یک هدف کلی باشد که وقتی کاربر روی یک اعلان فشاری دریافت شده از دستیار ضربه می زند، فراخوانی می شود.

شروع کنید

بخش‌های زیر نحوه تنظیم اعلان‌های فشاری را در Action شرح می‌دهند.

یک قصد برای تحریک ایجاد کنید

هدفی که در این بخش ایجاد می‌کنید، جریان اعلان‌ها را فعال می‌کند. برای ایجاد این هدف، مراحل زیر را دنبال کنید:

  1. به کنسول Actions بروید و در منوی بالا روی Develop کلیک کنید.
  2. روی Intents در منوی سمت چپ کلیک کنید تا بخش بزرگ شود.
  3. روی در پایین لیست کلیک کنید و یک نام برای هدف جدید وارد کنید.
  4. Enter/Return را فشار دهید تا هدف جدید ایجاد شود.
  5. عبارات آموزشی را برای راه اندازی جریان اعلان ها اضافه کنید. چند نمونه عبارتند از:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. روی ذخیره کلیک کنید.

انتقال به قصد سیستم

برای تنظیم انتقال به صحنه سیستم Notifications ، مراحل زیر را دنبال کنید:

  1. در قسمت صحنه‌ها در منوی سمت چپ، روی صحنه‌ای که می‌خواهید جریان اشتراک اعلان‌ها را به آن اضافه کنید، کلیک کنید.
  2. در قسمت User intent handling صحنه، روی + کلیک کنید تا یک کنترل کننده قصد جدید اضافه شود.
  3. در قسمت Intent ، هدفی را که در بخش قبلی ایجاد کردید انتخاب کنید.
  4. در بخش Transition ، صحنه سیستم Notifications را انتخاب کنید.

  5. روی ذخیره کلیک کنید.

پیکربندی صحنه سیستم

برای پیکربندی صحنه سیستم Notifications ، مراحل زیر را دنبال کنید:

  1. در قسمت Scenes در منوی سمت چپ، صحنه جدید سیستم Notifications را انتخاب کنید.
  2. در بخش Configure intent ، روی Select intent کلیک کنید.
  3. در بخش Select intent ، هدفی را انتخاب کنید که می‌خواهید وقتی کاربر روی یک اعلان فشار ضربه می‌زند، مطابقت داشته باشد.

  4. برای سفارشی کردن درخواست انتخاب ، درخواستی را وارد کنید که وقتی از آنها خواسته می‌شود مشترک اعلان‌های فشاری شوند، به کاربران نمایش داده می‌شود. درخواست به شکل "آیا اشکالی ندارد اگر اعلان‌های فشاری برای $prompt ارسال کنم" است.

  5. روی ذخیره کلیک کنید.

انتخاب کردن را پیکربندی کنید

برای پیکربندی شرکت در پوش اعلان‌ها، این مراحل را دنبال کنید:

  1. در بخش صحنه‌ها ، صحنه سیستم اعلان‌ها را انتخاب کنید.
  2. در زیر شرایط ، اگر کاربر «بله» می‌گوید را انتخاب کنید.
  3. Call your webhook را فعال کنید و یک نام مدیریت رویداد مانند subscribe_to_notifications ارائه دهید.
  4. درخواست‌های ارسال را فعال کنید و یک فرمان ساده ارائه دهید تا به کاربر اطلاع دهید که اعلان‌هایی برایشان ارسال می‌شود:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. در بخش انتقال ، پایان مکالمه را انتخاب کنید تا پس از عضویت کاربر در اعلان‌ها، به مکالمه پایان دهید.

انصراف را پیکربندی کنید

برای پیکربندی انصراف از اعلان‌های فشار، این مراحل را دنبال کنید:

  1. در قسمت Conditions ، If the user say "no" را انتخاب کنید.
  2. درخواست‌های ارسال را فعال کنید و یک فرمان ساده ارائه دهید تا کاربر بداند اعلان‌هایی برایشان ارسال نمی‌شود:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. در بخش انتقال ، پایان مکالمه را انتخاب کنید تا پس از انصراف کاربر از اعلان‌ها، به مکالمه پایان دهید.

پیکربندی وب هوک

برای پیکربندی وب هوک خود، این مراحل را دنبال کنید:

  1. در وب هوک خود، یک کنترل کننده قصد برای ذخیره updatesUserId اضافه کنید:

    app.handle('subscribe_to_notifications', conv => {
      const intentName = '<name_of_intent_to_trigger>';
      const notificationsSlot = conv.session.params['NotificationSlot_${intentName}'];
      if(notificationsSlot.permissionStatus == 'PERMISSION_GRANTED') {
        const updateUserId = notificationsSlot.additionalUserData.updateUserId;
        // Store the user ID and the notification's target intent for later use.
        // (Use a database, like Firestore, for best practice.)
      }
    });
    

ارسال نوتیفیکیشن

اعلان‌های فشاری با استفاده از Actions API برای کاربران ارسال می‌شوند. برای استفاده از این API، باید API را در پروژه Google Cloud خود فعال کنید و کلید حساب سرویس JSON را تنظیم و دانلود کنید.

سپس می‌توانید از کتابخانه سرویس گیرنده Google OAuth2 برای مبادله کلید حساب سرویس با یک نشانه دسترسی استفاده کنید و از آن برای تأیید اعتبار درخواست‌های خود در API Action استفاده کنید.

یک کلید حساب سرویس دریافت کنید

  1. به کنسول Google API بروید و پروژه خود را از منوی کشویی Select a project انتخاب کنید.
  2. روی Enable کلیک کنید تا Actions API برای پروژه شما فعال شود.
  3. به صفحه اطلاعات کاربری کنسول Google Cloud بروید و پروژه خود را از منوی انتخاب پروژه انتخاب کنید.
  4. روی ایجاد اعتبارنامه > حساب سرویس کلیک کنید.
  5. نام حساب سرویس را وارد کنید و روی ایجاد کلیک کنید.
  6. از منوی کشویی Select a role ، Project > Owner را انتخاب کنید.
  7. روی Continue کلیک کنید.
  8. برای دانلود فایل JSON حساب سرویس، روی ایجاد کلید کلیک کنید.

کلید را با یک نشانه دسترسی تعویض کنید و یک اعلان ارسال کنید

برای ارسال اعلان‌های فشار از طریق API Action، باید کلید حساب سرویس را با یک نشانه دسترسی مبادله کنید. توصیه می کنیم برای این کار از کتابخانه سرویس گیرنده Google API استفاده کنید. در مجموعه کدهای زیر، از کتابخانه سرویس گیرنده Google API Node.js استفاده می کنیم.

  1. کتابخانه سرویس گیرنده Google API را نصب کنید و درخواست کنید:

    npm install googleapis request --save

  2. از کد زیر برای دریافت رمز دسترسی از کلید حساب سرویس و ارسال اعلان فشار استفاده کنید:

    // Use the Actions API to send a Google Assistant push notification.
    let client = auth.fromJSON(require('./service-account.json'));
    client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
    let notification = {
      userNotification: {
        title: 'Example notification title',
      },
      target: {
        userId: '<UPDATES_USER_ID>',
        intent: 'Notifications Intent',
      },
    };
    client.authorize((err, tokens) => {
      if (err) {
        throw new Error('Auth error: ${err}');
      }
      request.post('https://actions.googleapis.com/v2/conversations:send', {
        'auth': {
          'bearer': tokens.access_token,
        },
        'json': true,
        'body': {'customPushMessage': notification, 'isInSandbox': true},
      }, (err, httpResponse, body) => {
        if (err) {
          throw new Error('API request error: ${err}');
        }
        console.log('${httpResponse.statusCode}: ' + '${httpResponse.statusMessage}');
        console.log(JSON.stringify(body));
      });
    });