ข้อความ Push

การดำเนินการของคุณส่งข้อความ Push ไปยังผู้ใช้ได้ทุกเมื่อที่เกี่ยวข้อง เช่น การส่งการช่วยเตือนเมื่อวันที่ครบกำหนดของงานอยู่ใกล้

คำแนะนำนี้อธิบายวิธีตั้งค่าข้อความ Push สำหรับการดำเนินการ

แพลตฟอร์มที่รองรับ

ข้อความ Push มีให้บริการในอุปกรณ์ Android และ iOS (อุปกรณ์ iOS ต้องติดตั้งแอป Assistant ไว้จึงจะรับข้อความ Push ได้) แต่ยังไม่รองรับในลําโพงที่สั่งงานด้วยเสียง จออัจฉริยะ หรือแพลตฟอร์มอื่นๆ

ข้อกำหนดเบื้องต้น

โปรเจ็กต์ของคุณต้องมี Intent ส่วนกลางอย่างน้อย 1 รายการ ซึ่งจะเรียกใช้เมื่อผู้ใช้แตะข้อความ Push ที่ได้รับจาก Assistant

เริ่มต้นใช้งาน

ส่วนต่อไปนี้จะอธิบายวิธีตั้งค่าข้อความ Push ในการดําเนินการ

สร้าง Intent สำหรับทริกเกอร์

Intent ที่คุณสร้างในส่วนนี้ทริกเกอร์ขั้นตอนการแจ้งเตือน หากต้องการสร้าง Intent นี้ ให้ทำตามขั้นตอนต่อไปนี้

  1. ไปที่คอนโซล Actions แล้วคลิกพัฒนาในเมนูด้านบน
  2. คลิกความตั้งใจในเมนูด้านซ้ายเพื่อขยายส่วนดังกล่าว
  3. คลิก ที่ด้านล่างของรายการแล้วป้อนชื่อ Intent ใหม่
  4. กด Enter/Return เพื่อสร้าง Intent ใหม่
  5. เพิ่มวลีการฝึกสำหรับเรียกใช้ขั้นตอนการแจ้งเตือน ตัวอย่างเช่น

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. คลิกบันทึก

การเปลี่ยนไปใช้ Intent ของระบบ

ในการตั้งค่าการเปลี่ยนไปใช้โหมดระบบ Notifications ให้ทำตามขั้นตอนต่อไปนี้

  1. ในส่วนฉากในเมนูด้านซ้าย ให้คลิกฉากที่คุณต้องการเพิ่มกระบวนการติดตามการแจ้งเตือน
  2. ในส่วนการจัดการความตั้งใจของผู้ใช้ของโหมด ให้คลิก + เพื่อเพิ่มเครื่องจัดการ Intent ใหม่
  3. ในส่วนความตั้งใจ ให้เลือก Intent ที่สร้างไว้ในส่วนก่อนหน้า
  4. ในส่วนการเปลี่ยน ให้เลือกโหมดของระบบการแจ้งเตือน

  5. คลิกบันทึก

กำหนดค่าโหมดของระบบ

หากต้องการกำหนดค่าโหมดของระบบ Notifications ให้ทำตามขั้นตอนต่อไปนี้

  1. ในส่วนโหมดในเมนูด้านซ้าย ให้เลือกโหมดใหม่ของระบบการแจ้งเตือน
  2. คลิกเลือก Intent ในส่วนกำหนดค่า Intent
  3. ในส่วนเลือกความตั้งใจ ให้เลือกความตั้งใจที่คุณต้องการจับคู่เมื่อผู้ใช้แตะข้อความ Push

  4. ในส่วนปรับแต่งข้อความแจ้งการเลือกใช้ ให้ป้อนข้อความแจ้งที่จะแสดงต่อผู้ใช้เมื่อระบบขอให้ติดตามข้อความ Push โดยข้อความแจ้งจะอยู่ในรูป "จะเป็นอะไรไหมถ้าฉันส่งข้อความ Push ของ $prompt"

  5. คลิกบันทึก

กำหนดค่าการเลือกใช้

หากต้องการกำหนดค่าการเลือกใช้ข้อความ Push ให้ทำตามขั้นตอนต่อไปนี้

  1. ในส่วนฉาก ให้เลือกโหมดของระบบการแจ้งเตือน
  2. ในส่วนเงื่อนไข ให้เลือกหากผู้ใช้ตอบว่า "ใช่"
  3. เปิดใช้เรียกใช้เว็บฮุคและระบุชื่อเครื่องจัดการเหตุการณ์ เช่น subscribe_to_notifications
  4. เปิดใช้ส่งพรอมต์และใช้ข้อความแจ้งง่ายๆ เพื่อแจ้งให้ผู้ใช้ทราบว่าจะได้รับการแจ้งเตือนดังนี้

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. ในส่วนการเปลี่ยน ให้เลือกสิ้นสุดการสนทนาเพื่อสิ้นสุดการสนทนาหลังจากที่ผู้ใช้ติดตามการแจ้งเตือน

กำหนดค่าการเลือกไม่ใช้

หากต้องการกำหนดค่าการเลือกไม่ใช้ข้อความ Push ให้ทำตามขั้นตอนต่อไปนี้

  1. ในส่วนเงื่อนไข ให้เลือกหากผู้ใช้พูดว่า "ไม่"
  2. เปิดใช้ส่งพรอมต์และแสดงข้อความแจ้งง่ายๆ เพื่อแจ้งให้ผู้ใช้ทราบว่าจะไม่ได้รับการแจ้งเตือน

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. ในส่วนการเปลี่ยน ให้เลือกสิ้นสุดการสนทนาเพื่อสิ้นสุดการสนทนาหลังจากที่ผู้ใช้เลือกไม่รับการแจ้งเตือน

กำหนดค่าเว็บฮุค

หากต้องการกำหนดค่าเว็บฮุค ให้ทำตามขั้นตอนต่อไปนี้

  1. ในเว็บฮุค ให้เพิ่มเครื่องจัดการ Intent เพื่อจัดเก็บ 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.)
      }
    });
    

ส่งการแจ้งเตือน

ระบบจะส่งข้อความ Push ไปยังผู้ใช้โดยใช้ Actions API หากต้องการใช้ API นี้ คุณต้องเปิดใช้งาน API ในโปรเจ็กต์ Google Cloud รวมถึงตั้งค่าและดาวน์โหลดคีย์บัญชีบริการ JSON

จากนั้นคุณสามารถใช้ไลบรารีของไคลเอ็นต์ OAuth2 ของ Google เพื่อแลกเปลี่ยนคีย์บัญชีบริการสำหรับโทเค็นเพื่อการเข้าถึง และใช้โทเค็นเพื่อตรวจสอบสิทธิ์คำขอที่ส่งไปยัง Actions API

ดาวน์โหลดคีย์บัญชีบริการ

  1. ไปที่คอนโซล Google API แล้วเลือกโปรเจ็กต์จากรายการแบบเลื่อนลงของเลือกโปรเจ็กต์
  2. คลิกเปิดใช้เพื่อเปิดใช้ Actions API สำหรับโปรเจ็กต์ของคุณ
  3. ไปที่หน้าข้อมูลเข้าสู่ระบบคอนโซล Google Cloud แล้วเลือกโปรเจ็กต์จากเมนูแบบเลื่อนลงเลือกโปรเจ็กต์
  4. คลิกสร้างข้อมูลเข้าสู่ระบบ > บัญชีบริการ
  5. ป้อนชื่อบัญชีบริการแล้วคลิกสร้าง
  6. จากเมนูแบบเลื่อนลงเลือกบทบาท ให้เลือกโปรเจ็กต์ > เจ้าของ
  7. คลิกต่อไป
  8. คลิกสร้างคีย์เพื่อดาวน์โหลดไฟล์ JSON ของบัญชีบริการ

แลกเปลี่ยนคีย์เป็นโทเค็นเพื่อการเข้าถึงและส่งการแจ้งเตือน

หากต้องการส่งข้อความ Push ผ่าน Actions API คุณต้องแลกเปลี่ยนคีย์บัญชีบริการกับโทเค็นเพื่อการเข้าถึง เราขอแนะนำให้ใช้ไลบรารีของไคลเอ็นต์ Google API ในการดำเนินการดังกล่าว ในชุดข้อมูลโค้ดที่ตามมา เราจะใช้ไลบรารีของไคลเอ็นต์ Google API Node.js

  1. ติดตั้งไลบรารีของไคลเอ็นต์ Google API และส่งคำขอดังนี้

    npm install googleapis request --save

  2. ใช้รหัสต่อไปนี้เพื่อรับโทเค็นเพื่อการเข้าถึงจากคีย์บัญชีบริการและส่งข้อความ Push

    // 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));
      });
    });