Three lines

Uber

Developers

Automated Delivery Testing

Robo Courier は自動化された配達テストツール

Robo Courier は Uber Direct 専用の自動化されたテストツールです。Robo Courier を使用すると、あらかじめ設定した間隔で、注文後のさまざまな配達ステータスのシミュレーションを自動的に行うことができます。この便利なツールを使用すれば、Uber Direct との統合の徹底的なテストと綿密な検証を行うことができます。

この機能はストレステストには使用しないでください。

Robo Courier を有効にする

Robo Courier がテスト注文を自動的に配達するようにするには、POST 先 Create Delivery への JSON データに次の test_specifications オブジェクトを含めます。

"test_specifications": {
    "robo_courier_specification": {
        "mode": "auto"
    }
}

Robo Courier は実際の配達パートナーの行動を模倣します。test_specifications オブジェクトに auto 変数が指定されていると、Robo Courier は以下のスケジュールで展開します。

イベント 説明 午後 1 時に注文が設定された場合の例
配達パートナーの割り当て ピックアップの時間枠(pickup_ready_dtpickup_deadline_dt で構成)も受け渡しの時間枠(dropoff_ready_dtdropoff_deadline_dt で構成)も設定されていない場合、配達パートナーは注文に即座に割り当てられます。 午後 1 時 00 分 00 秒
配達パートナーが移動中 配達パートナーが割り当て 30 秒後に貴店に向かいます。 午後 1 時 00 分 30 秒
ピックアップ間近 移動し始めてから 30 秒後に、配達パートナーがピックアップ場所に近づきます。 午後 1 時 01 分 00 秒
配達パートナーによるピックアップ ピックアップ間近になってから 30 秒後に、配達パートナーが注文をピックアップします。 午後 1 時 01 分 30 秒
受け渡し間近 注文のピックアップから 30 秒後に、配達パートナーが受け渡し場所に近づきます。 午後 1 時 02 分 00 秒
配達パートナーによる受け渡し 受け渡し間近になってから 30 秒後に、配達パートナーが注文を受け渡します。 午後 1 時 02 分 30 秒

注:pickup_ready_dt(ピックアップの準備時間)が設定されている場合にのみ、指定された時間に配達パートナーが割り当てられます。dropoff_ready_dt(受け渡し準備時間)が設定されている場合のみ、受け渡し時間枠の開始 10 分前に配達パートナーが割り当てられます。

配達時に指定される認証の要件(署名のキャプチャ、写真のキャプチャ、身分証明書の確認、暗証番号の確認、バーコードのスキャン、飲酒検査など)は、ピックアップ時と受け渡し時の両方で Robo Courier が正常に完了します。ピックアップと受け渡しが行われる間、Webhook は通常どおり送信され、完了した認証の要件を反映した情報が含まれます。

時間ベースのさまざまなテストシナリオを設定したい場合は、Robo Courier を custom に設定します。

"test_specifications": {
    "robo_courier_specification": {
        "mode": "custom",
        "enroute_for_pickup_at": "2023-07-06T05:05:01Z",
        "pickup_imminent_at": "2023-07-06T05:06:03Z",
        "pickup_at": "2023-07-06T05:07:01Z",
        "dropoff_imminent_at": "2023-07-06T05:08:01Z",
        "dropoff_at": "2023-07-06T05:08:01Z"
    }
}

イベントごとに、そのイベントが発生する正確なタイムスタンプを指定できます。上述のコードスニペットに示されているすべてのフィールドは custom モードでは必須です。

フィールド タイムスタンプの制限事項
enroute_for_pickup_at ピックアップの時間枠が指定されている場合、その時間枠内にピックアップが発生する必要があります。それ以外の場合、注文から 30 分以内に発生する必要があります。
dropoff_at ピックアップ時間から 8 時間以内である必要があります。

Robo Courier を使用する Create Delivery - ペイロードの例:

{
    "pickup_name": "Store Name",
    "pickup_address": "100 Maiden Ln, New York, NY 10038",
    "pickup_phone_number": "+15555555555",
    "dropoff_name": "Gordon Shumway",
    "dropoff_address": "30 Lincoln Center Plaza, New York, NY 10023",
    "dropoff_phone_number": "+15555555555",
    "manifest_items": [
        {
            "name": "Test",
            "quantity": 1,
            "size": "small"
        }
    ],
    "pickup_business_name": "Store Name",
    "pickup_latitude": 40.7066745,
    "pickup_longitude": -74.0071976,
    "pickup_notes": "Follow big green 'Pickup' signs in the parking lot",
    "pickup_verification": {
        "picture": true
    },
    "dropoff_business_name": "House of Luciano",
    "dropoff_latitude": 40.7727076,
    "dropoff_longitude": -73.9839082,
    "dropoff_notes": "Second floor, black door to the right.",
    "dropoff_seller_notes": "Fragile content - please handle the box with care during delivery.",
    "dropoff_verification": {
        "signature": true
    },
    "deliverable_action": "deliverable_action_meet_at_door",
    "manifest_reference": "REF0000002",
    "manifest_total_value": 1000,
    "undeliverable_action": "return",
    "requires_dropoff_signature": true,
    "requires_id": true,
    "tip": 500,
    "idempotency_key": "1234567890",
    "external_store_id": "my_store_123",
    "return_verification": {
        "signature": true,
        "picture": true
    },
    "external_id": "string",
    "test_specifications": {
        "robo_courier_specification": {
            "mode": "auto"
        }
    }
}

Robo Courier - Webhook の例:


{
  "account_id": "",
  "batch_id": "bat_3dYyXMxOW1qBNrLyqMVkUg",
  "created": "2023-08-02T14:18:21.6Z",
  "customer_id": "d80aa06f-11b5-5f8a-8d4b-601799678a42",
  "data": {
    "batch_id": "bat_3dYyXMxOW1qBNrLyqMVkUg",
    "complete": false,
    "courier": {
      "img_href": "https://d1w2poirtb3as9.cloudfront.net/default.jpeg?Expires=1691029043&Signature=N~tBRp875yYALgox5AO-jkEaIQ6V-9Nq4XCJ1PH3x4l422Q0iGUeGUcK6a4MBHotxpDL~qIhDb7yqVAjosNPMK7vN~~RMCVxxYdyqNdEWBoSdkBTUDTH3XZtHaf6sZK6y8KpoUoDBmCIt3VxLmTEdxuvkPg0XVk90m-yvfBHDxyg-V4x8vUBKoqssAXOIQ~eLz2bzOH2yQFm-1gkBRS28-JT99Q-~yV4Xd1L-g3D2vYlim~1isF21vH7~LaWenhd~iDAezHfG2JZhiP0dl8KOY8FMV8rgTtyBH5~HOG-Qa0gXvBhtexgVNewRxrIUkPCvE3-J7cxVY-9xcBVtza6NQ__&Key-Pair-Id=K36LFL06Z5BT10",
      "location": {
        "lat": 40.706913,
        "lng": -74.00695
      },
      "location_description": "",
      "name": "Alex I.",
      "phone_number": "+19294164877",
      "rating": "5.00",
      "vehicle_color": "white",
      "vehicle_make": "Toyota",
      "vehicle_model": "Prius",
      "vehicle_type": "car"
    },
    "courier_imminent": false,
    "created": "2023-08-02T14:16:48.067Z",
    "currency": "usd",
    "deliverable_action": "deliverable_action_meet_at_door",
    "dropoff": {
      "address": "30 Lincoln Center Plaza, New York, NY 10023",
      "detailed_address": {
        "city": "New York",
        "country": "US",
        "state": "",
        "street_address_1": "30 Lincoln Center Plaza",
        "street_address_2": "",
        "zip_code": "10023"
      },
      "location": {
        "lat": 40.77271,
        "lng": -73.98391
      },
      "name": "Gordon S.",
      "notes": "Second floor, black door to the right.",
      "phone_number": "+15555555555",
      "verification": {
        "identification": {
          "min_age_verified": false
        },
        "signature": {
          "image_url": ""
        }
      },
      "verification_requirements": {
        "identification": {
          "min_age": 21
        },
        "signature": true,
        "signatureRequirement": {
          "collect_signer_name": false,
          "collect_signer_relationship": false,
          "enabled": true
        }
      }
    },
    "dropoff_deadline": "2023-08-02T16:03:22Z",
    "dropoff_eta": "2023-08-02T15:20:00.03Z",
    "dropoff_ready": "2023-08-02T14:16:48Z",
    "external_id": "string",
    "fee": 2134,
    "id": "del_CvvPBsW_RVSFPdk74cD6Pg",
    "kind": "delivery",
    "live_mode": false,
    "manifest": {
      "description": "1 X Test\n",
      "reference": "REF0000002",
      "total_value": 1000
    },
    "manifest_items": [
      {
        "dimensions": {
          "depth": 15,
          "height": 7,
          "length": 20
        },
        "must_be_upright": false,
        "name": "Test",
        "price": 0,
        "quantity": 1,
        "size": "small"
      }
    ],
    "pickup": {
      "address": "100 Maiden Ln, New York, NY 10038-0001, US",
      "detailed_address": {
        "city": "New York",
        "country": "US",
        "state": "NY",
        "street_address_1": "100 Maiden Ln",
        "street_address_2": "",
        "zip_code": "10038-0001"
      },
      "external_store_id": "my_store_123",
      "location": {
        "lat": 40.706673,
        "lng": -74.007195
      },
      "name": "Store Name",
      "notes": "Follow big green 'Pickup' signs in the parking lot",
      "phone_number": "+15555555555",
      "status": "completed",
      "status_timestamp": "2023-08-02T14:18:21.447Z",
      "verification": {
        "picture": {
          "image_url": "https://tb-static.uber.com/prod/file-upload/uploads/courier-task-platform/82a0d88e-100d-40d6-a0d0-ea9c4a2e55bb"
        }
      },
      "verification_requirements": {
        "picture": true
      }
    },
    "pickup_action": "default",
    "pickup_deadline": "2023-08-02T14:36:48Z",
    "pickup_eta": "2023-08-02T14:18:21.447Z",
    "pickup_ready": "2023-08-02T14:16:48Z",
    "quote_id": "dqt_CvvPBsW_RVSFPdk74cD6Pg",
    "route_id": "rte_7mVtgY_rQOeHGgCjHqd2mg",
    "status": "dropoff",
    "tip": 500,
    "tracking_url": "https://www.ubereats.com/orders/0afbcf06-c5bf-4554-853d-d93be1c0fa3e",
    "undeliverable_action": "",
    "undeliverable_reason": "",
    "updated": "2023-08-02T14:18:21.447Z",
    "uuid": "0AFBCF06C5BF4554853DD93BE1C0FA3E"
  },
  "delivery_id": "del_CvvPBsW_RVSFPdk74cD6Pg",
  "developer_id": "",
  "id": "evt_py0BffftR_SmwvAlpSnGjg",
  "kind": "event.delivery_status",
  "live_mode": false,
  "route_id": "rte_7mVtgY_rQOeHGgCjHqd2mg",
  "status": "dropoff"
}

キャンセルの理由

Robo Courier は、配達キャンセルのシナリオをシミュレートすることもできます。

"test_specifications": {
    "robo_courier_specification": {
        "mode": "auto",
        "cancel_reason": "cannot_access_customer_location"
    }
}

cancel_reason に指定可能な値:

  • cannot_access_customer_location
  • cannot_find_customer_address
  • customer_rejected_order
  • customer_unavailable

Robo Courier が受け渡し場所に近づくと、courier_imminent を示す配達ステータスの Webhook を受信します。その後、配達パートナーは上述の理由コードを使用して注文をキャンセルします。キャンセルを示す配達ステータスの Webhook を受信します。

Webhook の cancellation_reason フィールドには指定された理由コードが入力されます。受け渡しの認証アクション(身分証明書の確認、署名など)は行われません。

配達を完了できない場合のアクション

最初の Create Delivery の呼び出し時に、注文がキャンセルされた場合に配達パートナーが実行すべき undeliverable_action を指定します。

配達を完了できない場合のアクション 行動の説明
leave_at_door 配達パートナーは商品を玄関先まで配達する。
return 配達パートナーは配達品を店舗に返送する。配達品の返送が自動的に作成され、配達パートナーに割り当てられます。配達パートナーは商品をピックアップの住所に返送します。配達品の返送を追跡するための追加の Webhook 通知を受信します。

Create Delivery リクエストで undeliverable_action を指定しない場合、既定のアクションは return です。

キャンセルの Webhook を受信すると、この値が送り返されます。指定した値が入力された undeliverable_action フィールドが含まれます(省略した場合は空白になります)。

Robo Courier に関するよくある質問

Robo Courier は、ピックアップ場所から受け渡し場所までの実際のルートに沿っていますか?

いいえ、Robo Courier は、ピックアップ場所から受け渡し場所までの道順を案内するわけではありません。その代わりに、「テレポート」をします。

  • 注文を受けると、Robo Courier がピックアップ住所近くのランダムに選択された場所に現れ、配達を行うことができます。
  • pickup_imminent 時間に達すると、配達パートナーは直接ピックアップ住所に配置されます。
  • dropoff_imminent 時間に達すると、配達パートナーは受け渡し住所に配置されます。

delivery_status イベントを受信するのは、Robo Courier を使用したテスト配達の場合だけですか、それとも courier_update Webhook イベントも受信しますか?

登録している限り、両方の種類のイベントを受信します。ただし、courier_update イベントの場合、配達パートナーの緯度および経度は、上述の 3 つの場所(最初のランダムな場所、ピックアップ場所、受け渡し場所)のいずれかに固定されます。

Robo Courier には他に既知の制限事項がありますか?

  • 駐車場チェックインはサポートされていません(courier_check_in 配達ステータスのイベント)
  • バッチ処理(単一の Robo Courier が一度に複数の注文のピックアップと受け渡しを行うこと)はできません

引き続き手動で(ドライバーアプリを使用して)テストを行うことはできますか?

  • はい、Robo Courier は Create Delivery リクエストで test_specifications 属性が送信された場合にのみトリガーされます。配達を手動でテストする場合は、リクエストからこの属性を除外します。

Uber

Developers
© 2025 Uber Technologies Inc.