ข้อความ Push

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

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

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

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

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

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

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

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

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

ความตั้งใจที่คุณสร้างในส่วนนี้จะเรียกใช้โฟลว์การแจ้งเตือน วิธีสร้าง ความตั้งใจนี้ ให้ทำตามขั้นตอนต่อไปนี้

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

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

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

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

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

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

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

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

  1. ในส่วนฉากในเมนูด้านซ้าย ให้เลือกฉากใหม่ของระบบการแจ้งเตือน
  2. ในส่วนกำหนดค่าความตั้งใจ ให้คลิกเลือกความตั้งใจ
  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 Console แล้วเลือกโปรเจ็กต์จากเมนูแบบเลื่อนลงเลือกโปรเจ็กต์
  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));
      });
    });