อัปเดตคําสั่งซื้อแบบไม่พร้อมกัน

หลังจากที่ลูกค้าส่งคําสั่งซื้ออาหาร คุณสามารถส่งข้อความอัปเดตคําสั่งซื้อไปที่บริการ "สั่งซื้อผ่าน Google" เพื่อแจ้งให้เราทราบถึงการเปลี่ยนแปลงดังกล่าว

สาเหตุทั่วไปในการส่งการอัปเดตคําสั่งซื้อมีดังนี้

  • เวลาที่ทําได้โดยประมาณสําหรับการสั่งซื้อสามารถเปลี่ยนแปลงได้
  • สถานะของคําสั่งซื้อจะเปลี่ยนแปลง
  • ดําเนินการตามคําสั่งซื้อไม่ได้
  • ราคาของรายการเมนูที่อยู่ในคําสั่งซื้อมีการเปลี่ยนแปลง
  • ลูกค้ามีวิธีใหม่ในการจัดการคําสั่งซื้อ เช่น การสนับสนุนลูกค้าหรือหมายเลขโทรศัพท์ของร้านอาหาร
  • ใบเสร็จของใบสั่งซื้อจะพร้อมใช้งาน

ส่วนถัดไปจะแสดงรายละเอียดเกี่ยวกับวิธีจัดการกับสถานการณ์ต่างๆ เหล่านี้โดยใช้การอัปเดตคําสั่งซื้อ

การเปลี่ยนแปลงสถานะคําสั่งซื้อ

คําสั่งซื้อจะมีสถานะที่เป็นไปได้หกสถานะ รัฐและการเปลี่ยนที่เป็นไปได้เหล่านี้แสดงอยู่ในแผนผังต่อไปนี้

การเปลี่ยนสถานะคําสั่งซื้อ

เมื่อลูกค้าส่งคําสั่งซื้อเป็นครั้งแรก คําสั่งซื้อจะเริ่มต้นด้วยสถานะของ CREATED, CONFIRMED หรือ REJECTED คุณส่งข้อความอัปเดตคําสั่งซื้อเพื่ออัปเดตสถานะคําสั่งซื้อได้ ตราบใดที่การเปลี่ยนสถานะนั้นถูกต้อง ระบบจะใช้สถานะ CREATED เมื่อแพลตฟอร์มของพาร์ทเนอร์ยืนยันหรือปฏิเสธคําสั่งซื้อทันทีไม่ได้ ตัวอย่างกรณีการใช้งานคือ เมื่อลูกค้าสั่งซื้อผ่านเว็บไซต์รวบรวมข้อมูลการจัดส่ง ผู้รวบรวมข้อมูลการจัดส่งจะรับสิ่งที่นําส่งจาก Google และผู้รวบรวมข้อมูลจะส่งข้อมูลไปยังร้านอาหาร เมื่อร้านอาหารได้รับและยืนยันคําสั่งซื้อแล้ว สถานะจะเป็น CONFIRMED ไม่เช่นนั้นจะเป็น REJECTED

คําสั่งซื้อในสถานะ CONFIRMED จะเปลี่ยนเป็นสถานะ IN_PREPARATION ถัดไป ถัดไปให้ใช้สถานะ READY_FOR_PICKUP หรือ IN_TRANSIT โดยขึ้นอยู่กับว่าคําสั่งซื้อนี้ใช้สําหรับการรับสินค้าหรือการจัดส่ง เมื่อมีการจัดส่งอาหารหรือไปรับอาหาร คําสั่งซื้อจะตั้งเป็นสถานะ FULFILLED

หากอนุญาตให้ลูกค้ายกเลิกคําสั่งซื้อ คุณจะใช้สถานะ CANCELLED ได้ คําสั่งซื้ออาจถูกยกเลิกได้เมื่ออยู่ในสถานะ CREATED, CONFIRMED, IN_PREPARATION, READY_FOR_PICKUP หรือ IN_TRANSIT บริการ "สั่งซื้อผ่าน Google" ของคุณควรคืนเงินตามนโยบายการยกเลิกของคุณและสถานะการชําระเงิน ณ เวลาที่ยกเลิก

บริการ "สั่งซื้อผ่าน Google" ไม่จําเป็นต้องรองรับสถานะและการเปลี่ยนทั้งหมดที่ให้บริการ แต่สถานะสุดท้ายของคําสั่งซื้อต้องเป็น FULFILLED, REJECTED หรือ CANCELLED

ระบุเวลาที่จะได้รับสินค้าโดยประมาณ

คุณสามารถระบุช่วงเวลาโดยประมาณที่ผู้ใช้สามารถรับสินค้า (หรือจัดส่ง) ได้ ใช้ช่อง estimatedFulfillmentTimeIso8601 ของ FoodOrderUpdateExtension เพื่อระบุช่วงเวลาโดยประมาณที่คําสั่งซื้อของลูกค้าจะพร้อมสําหรับการรับสินค้าหรือจัดส่ง

ส่ง estimatedFulfillmentTimeIso8601 ในเวลาต่อไปนี้

  • เมื่อถึงเวลาโดยประมาณ ควรใช้ในลําดับ CREATED หรือ CONFIRMED
  • เมื่อเวลาโดยประมาณเปลี่ยนแปลง เช่น การอัปเดตเวลาโดยประมาณเพื่อให้แม่นยํามากขึ้นเมื่อคําสั่งซื้อมีค่าเป็น IN_TRANSIT

ในการจัดการความคาดหวังของผู้ใช้อย่างมีประสิทธิภาพ คุณควรประเมินอย่างระมัดระวังและให้ข้อมูลวันที่และเวลาแทนที่จะใช้วันที่และเวลาที่ตายตัว คุณควรคํานึงถึงปัจจัยต่างๆ เช่น สภาพการจราจรเมื่อเป็นไปได้ เช่น คุณจะส่งเวลาโดยประมาณ 12.45 น. (ขอบเขตล่าง) ถึง 13.15 น. (ขอบเขตบน) สําหรับคําสั่งซื้อที่มีเวลาจัดส่งโดยประมาณคือ 13.00 น.

การดําเนินการจัดการคําสั่งซื้อ

เมื่อส่งการอัปเดตคําสั่งซื้อ คุณสามารถให้ทรัพยากรเพื่อช่วยลูกค้าจัดการคําสั่งซื้อในรูปแบบ OrderManagementAction หลังจากที่ลูกค้าทําการสั่งซื้อ ลูกค้าอาจต้องติดต่อคุณหรือร้านอาหารซึ่งกรอกคําสั่งซื้อเพื่อติดตามความคืบหน้า ทําการเปลี่ยนแปลง หรือยกเลิกคําสั่งซื้อของลูกค้า

OrderManagementAction ช่วยให้ลูกค้าส่งอีเมล โทร หรือลิงก์ไปยัง URL จากอุปกรณ์ของพวกเขาได้โดยตรง ใช้ข้อมูลใน OrderManagementAction เหมือนกับในอีเมลยืนยันคําสั่งซื้อที่คุณส่งถึงผู้ใช้

การทํางานในการจัดการคําสั่งซื้อประกอบไปด้วยประเภทต่อไปนี้

  • CUSTOMER_SERVICE: ให้ลูกค้าดําเนินการเพื่อติดต่อฝ่ายบริการลูกค้า ต้องระบุประเภทการดําเนินการในการจัดการนี้เพื่ออัปเดตคําสั่งซื้อ
  • EMAIL: ให้การกระทําแก่ลูกค้าเพื่อส่งอีเมลไปยังที่อยู่อีเมลที่ระบุ
  • CALL: เสนอการดําเนินการเพื่อโทรหาหมายเลขโทรศัพท์ที่ระบุ
  • VIEW_DETAIL: ให้ลูกค้าดําเนินการเพื่อดูรายละเอียดคําสั่งซื้อ

การอัปเดตคําสั่งซื้อแต่ละรายการต้องมีการดําเนินการจัดการคําสั่งซื้ออย่างน้อย 1 รายการ อย่างไรก็ตาม การทํางานในการจัดการคําสั่งซื้ออาจแตกต่างกันออกไปตามสถานะของคําสั่งซื้อ ตัวอย่างเช่น เมื่อคําสั่งซื้ออยู่ในสถานะ CONFIRMED การดําเนินการ CUSTOMER_SERVICE อาจชี้ไปยังหมายเลขโทรศัพท์ฝ่ายบริการลูกค้าของคุณ เมื่อสถานะคําสั่งซื้อมีการอัปเดตเป็น IN_TRANSIT การดําเนินการ "CUSTOMER_SERVICE" อาจชี้ไปยังหมายเลขโทรศัพท์ของร้านอาหารที่ดําเนินการตามคําสั่งซื้อ

กําลังส่งการอัปเดตคําสั่งซื้อ

คุณใช้ประเภทข้อความ AsyncOrderUpdateRequestMessage เพื่อส่งการอัปเดตคําสั่งซื้อไปยังบริการ "สั่งซื้อด้วย Google" Google ตอบกลับด้วย AsyncOrderUpdateResponseMessage เช่น หากต้องการแจ้งให้ลูกค้าทราบว่าคําสั่งซื้อถูกต้องและได้รับการยอมรับ คุณจะส่ง AsyncOrderUpdateRequestMessage เพื่อเปลี่ยนสถานะคําสั่งซื้อเป็น CONFIRMED ด้วยป้ายกํากับ Accepted by restaurant ได้

แผนภาพการอัปเดตคําสั่งซื้อ

การตั้งค่าข้อความอัปเดตคําสั่งซื้อ

เมื่อส่ง AsyncOrderUpdateRequestMessage ไปยัง Google คุณจะต้องรวมข้อมูลเกี่ยวกับสถานะของคําสั่งซื้อโดยใช้ช่อง OrderUpdate

ตัวอย่างต่อไปนี้แสดงตัวอย่างของ AsyncOrderUpdateRequestMessage สําหรับแต่ละสถานะการสั่งซื้อ

ยืนยันแล้ว

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อเพื่อแจ้งผู้ใช้ว่าคําสั่งซื้อได้รับการยืนยันด้วยใบเสร็จและเวลาจัดส่งโดยประมาณ

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "CONFIRMED",
        "label": "Provider confirmed"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "2017-07-17T13:00:00Z/2017-07-17T13:30:00Z"
      }
    }
  }
}
    

ถูกปฏิเสธ

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อเพื่อแจ้งผู้ใช้ว่าคําสั่งซื้อถูกปฏิเสธโดยเหตุผลในการปฏิเสธ

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "REJECTED",
        "label": "Order rejected"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "rejectionInfo": {
        "type": "UNKNOWN",
        "reason": "Sorry, the restaurant cannot take your order right now."
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
      "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
      "foodOrderErrors": [
        {
        "error": "NO_CAPACITY",
        "description": "Sorry, the restaurant cannot take your order right now."
        }
      ]
      }
    }
  }
}
    

ยกเลิกแล้ว

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อเพื่อแจ้งผู้ใช้ว่าคําสั่งซื้อถูกยกเลิกพร้อมกับเหตุผลในการยกเลิก

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "CANCELLED",
        "label": "Order cancelled"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "cancellationInfo": {
        "reason": "Customer requested"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ]
    }
  }
}
    

การเตรียมการ

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อที่แจ้งให้ผู้ใช้ทราบว่ากําลังเตรียมอาหารอยู่

{
  "isInSandbox":true,
  "customPushMessage":{
    "orderUpdate":{
      "actionOrderId":"sample_action_order_id",
      "orderState":{
        "state":"IN_PREPARATION",
        "label":"Order is being prepared"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "updateTime":"2018-04-15T11:30:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension":{
        "@type":"type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601":"PT20M"
      }
    }
  }
}
    

สามารถอ่านได้

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อที่แจ้งให้ผู้ใช้ทราบว่าอาหารพร้อมสําหรับการไปรับ

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "READY_FOR_PICKUP",
        "label": "Order is ready for pickup"
      },
      "receipt": {
        "userVisibleOrderId": "userVisibleId1234"
      },
      "updateTime": "2018-04-15T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "PT20M"
      }
    }
  }
}
    

อยู่ระหว่างการขนส่ง

ตัวอย่างนี้แสดงตัวอย่างคําขออัปเดตคําสั่งซื้อที่แจ้งให้ผู้ใช้ทราบว่าคําสั่งซื้ออยู่ระหว่างการขนส่งด้วยเวลานําส่งโดยประมาณ

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
        "state": "IN_TRANSIT",
        "label": "Order is on the way"
      },
      "inTransitInfo": {
        "updatedTime": "2017-07-17T12:00:00Z"
      },
      "updateTime": "2017-07-17T12:00:00Z",
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ],
      "infoExtension": {
        "@type": "type.googleapis.com/google.actions.v2.orders.FoodOrderUpdateExtension",
        "estimatedFulfillmentTimeIso8601": "PT20M"
      }
    }
  }
}
  

ดําเนินการแล้ว

ตัวอย่างนี้แสดงตัวอย่างคําขอการอัปเดตคําสั่งซื้อที่แจ้งให้ผู้ใช้ทราบว่ามีการรับสินค้าหรือมีการส่งสินค้าที่สั่งซื้อแล้ว

{
  "isInSandbox": true,
  "customPushMessage": {
    "orderUpdate": {
      "actionOrderId": "sample_action_order_id",
      "orderState": {
      "state": "FULFILLED",
      "label": "Order delivered"
      },
      "updateTime": "2017-05-10T02:30:00.000Z",
      "fulfillmentInfo": {
        "deliveryTime": "2017-05-10T02:30:00.000Z"
      },
      "orderManagementActions": [
        {
          "type": "CUSTOMER_SERVICE",
          "button": {
            "title": "Contact customer service",
            "openUrlAction": {
              "url": "mailto:support@example.com"
            }
          }
        },
        {
          "type": "EMAIL",
          "button": {
            "title": "Email restaurant",
            "openUrlAction": {
              "url": "mailto:person@example.com"
            }
          }
        },
        {
          "type": "CALL_RESTAURANT",
          "button": {
            "title": "Call restaurant",
            "openUrlAction": {
              "url": "tel:+16505554679"
            }
          }
        },
        {
          "type": "CALL_DRIVER",
          "button": {
            "title": "Call driver",
            "openUrlAction": {
              "url": "tel:+16505554681"
            }
          }
        }
      ]
    }
  }
}
    

ดูตัวอย่างเพิ่มเติมของคําขออัปเดตคําสั่งซื้อในกรณีการใช้งานต่างๆ ได้ที่ใช้การอัปเดตคําสั่งซื้อขั้นสูง

สร้างโทเค็นการให้สิทธิ์และส่งข้อความ

การอัปเดตคําสั่งซื้อจะต้องใช้โทเค็นการให้สิทธิ์เพื่อให้บริการ "สั่งซื้อผ่าน Google" ยืนยันได้ว่าข้อความมาจากบริการผ่านเว็บ "สั่งซื้อผ่าน Google"

วิธีการใช้การอัปเดตคําสั่งซื้อสําหรับโครงการ ให้ทําตามขั้นตอนต่อไปนี้

  1. สร้างโทเค็นการให้สิทธิ์โดยทําตามขั้นตอนต่อไปนี้
    1. ใช้ไลบรารีการตรวจสอบสิทธิ์ของ Google เพื่ออ่านข้อมูลรับรองจากไฟล์บัญชีบริการ
    2. ขอโทเค็นโดยใช้ขอบเขต API ต่อไปนี้ https://www.googleapis.com/auth/actions.fulfillment.conversation
  2. ใช้โทเค็นนี้เพื่อส่งคําขอ HTTP POST ที่ตรวจสอบสิทธิ์แล้วไปยังปลายทางต่อไปนี้ https://actions.googleapis.com/v2/conversations:send
  3. ตั้งค่าส่วนหัว Content-Type เป็น application/json เป็นส่วนหนึ่งของคําขอ

ตัวอย่างต่อไปนี้แสดงวิธีใช้งานการอัปเดตคําสั่งซื้อ

Node.js

โค้ดนี้จะใช้ไลบรารีการตรวจสอบสิทธิ์ของ Google สําหรับ Node.js

const {auth} = require('google-auth-library')
const request = require('request');
// The service account client secret file downloaded from the Google Cloud Console
const serviceAccountJson = require('./service-account.json')
// order-update.json is a file that contains the payload
const jsonBody = require('./order-update.json')

/**
 * Get the authorization token using a service account.
 */
async function getAuthToken() {
  let client = auth.fromJSON(serviceAccountJson)
  client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation']
  const tokens = await client.authorize()
  return tokens.access_token;
}

/**
 * Send an order update request
 */
async function sendOrderUpdate() {
  const token = await getAuthToken()
  request.post({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: 'https://actions.googleapis.com/v2/conversations:send',
    body: jsonBody,
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}
    

Python

โค้ดนี้ใช้ไลบรารีการตรวจสอบสิทธิ์ของ Google สําหรับ Python

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
import json

# service-account.json is the service account client secret file downloaded from the
# Google Cloud Console
credentials = service_account.Credentials.from_service_account_file(
    'service-account.json')

scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/actions.fulfillment.conversation'])

authed_session = AuthorizedSession(scoped_credentials)

# order-update.json is a file that contains the payload
json_payload=json.load(open('order-update.json'))

response = authed_session.post(
    'https://actions.googleapis.com/v2/conversations:send',
    json=json_payload)
    

Java

โค้ดนี้ใช้ไลบรารีการตรวจสอบสิทธิ์ของ Google สําหรับ Java

/**
 * Get the authorization token using a service account.
 */
private static String getAuthToken() {
  InputStream serviceAccountFile = Example.class.getClassLoader().getResourceAsStream("service-account.json");
  ServiceAccountCredentials.Builder credentialsSimpleBuilder =
      ServiceAccountCredentials.fromStream(serviceAccountFile).toBuilder();
  credentialsSimpleBuilder.setScopes(ImmutableList.of("https://www.googleapis.com/auth/actions.fulfillment.conversation"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an order update request
 */
public void sendOrderUpdate() {
  String authToken = getAuthToken();
  // Execute POST request
  executePostRequest("https://actions.googleapis.com/v2/conversations:send",
      authToken, "update_order_example.json",);
}
    

Google จะตอบกลับ HTTP 200 ด้วยเพย์โหลดที่ว่างเปล่าเพื่อให้การอัปเดตคําสั่งซื้อเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด หากมีปัญหาเกิดขึ้น เช่น การอัปเดตมีรูปแบบไม่ถูกต้อง Google จะแสดงข้อผิดพลาด