Loading 0%

Introduction

Transporter is a delivery stack that helps in planning, scheduling, tracking and reporting of last mile delivery operations. The system works as web-based dashboard that is used by delivery/ distribution/service centre (DC) heads/managers/supervisors (DS) to track the complete lifecycle of shipment or order or delivery. The SaaS also comes with delivery APP for bikers.

Quickstart

Delivery or Order specific data can be directly pushed to TRANSPORTER using standard RESTful APIs. The dashboard provides a CTA (call-to-action) button that says PULL for the DC head, and imports delivery information in JSON format directly into the stack.

To do so you would have provide an custom http(s) URL where you can keep delivery data in a standard JSON format. Our reverse webhook will fetch OR GET data from this URL.

How This Works

When the DC head presses CTA button PULL in the dashboard, our reverse webhook gets activated and imports data. Every Time this button is pressed the process repeats.

Pulling data from your servers/database is much simpler than pushing data to us because this way the DC head can import this info according to his operational timings

Sending Data Via API

Create a HTTP(s) URL for our reverse WEBHOOK

                                API Url : {to be given by you}
e.g.: http://xyz.com/get-data?depotCode={your depot code*}
Method: GET
Header : { "Authorization" : {key to validate the request else None>} }

We will expect the below response in json:

                                {
      “data” : [{
        “AWB”:”101507857”,
        “consignee_name”:”Rahul”,
        “consignee_address”: “5/293 MAHAJATI NAGAR”,
        “pincode”: 122002,
        “mobile”: 9898989898,
        “weight”: 20 (in kgs)	,
        “vol_weight”: 24(in kgs),
        “latitude”: 28.422129,
        “longitude”: 77.037244
        “cod amount”: 200 //optional
    }]
}

                            

Usage Notes

  • You have to pass either 'consignee_address' or 'latitude' and 'longitude'
  • You can pass either 'weight' or 'vol_weight' or both.
  • 'Pincode' is must.
  • Depot Code: This unique id is the identification key to the depot for which the delivery info is sent. Most last mile delivery operations is set around depots or distribution centres. Our system will auto-configure these URLs according to login credentials of DC heads. if you don't have delivery ops set as depots or distribution centres leave the space empty after the URL

Details Of Each Field

Fields Details Type
AWB Awb/unique id of the shipment Char Field
consignee_name Consignee Name Char Field
consignee_address Consignee Address Char Field
vol_weight Volume weight of the shipment Float Field
weight Total Weight of shipment Float Field
pincode Pincode of consignee Integer Field
mobile Consignee Contact Number Integer Field
latitude latitude Float Field
longitude longitude Float Field
cod amount amount to be taken from customer Integer Field

Install the SDK

In your app's build.gradle file, define the repositories and dependencies as shown.Once configured, run a gradle sync to import the SDK and its dependencies to your project.

                                repositories {
    maven { url 'https://dl.bintray.com/transportercity/maven' }
}
                                dependencies {
        compile 'com.transporter.city:transporter-sdk:0.1.2'
}
                            

Initialize SDK

Import the SDK:

                                import com.transporter.sdk.Transporter;
                            

Configure your publishable key and initialise the SDK by calling below method. In onCreate(), call:

                                Transporter.initialize (this,"publishable_key");
                            

Note:

Understanding “publishable_key”:
As soon as you create account (or we create it for you) with Transporter a Unique key is assigned to your account. This is generated and assigned by us. This is used in the SDK, when any User sends data from mobile to our server we identify user as your company user by this key.

Enable Location Permissions

  • The SDK includes the ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION permissions. So no need to explicitly add this.
  • In case your app is for Marshmallow and above (API level 23+), Call requestPermissions() API to request for run-time location permissions.
  • For high quality location collection, the SDK needs location services enabled at high accuracy. Call requestLocationSettings() API to request for user to enable Location Services in highaccuracy, if not enabled already
                                Transporter.requestPermissions(this);
                                
// To enable request Location Permissions add this in your code
Transporter.requestLocationSettings(this); // To enable Location Services add this in your

IMPORTANT:

For sample Sample implementation of Location Permissions and Location Settings, Refer here to view our code on Github.

Identify User

Before tracking the user's location (E.g delivery boy), you must identify the user to Transporter.

To do this, set a userId which is a stable unique ID for the user. It can be mobile number, email id or any other unique id for the user. Calling this method is mandatory.

                                Transporter.setUserId(this,”userId”);
                                
// e.g, Transporter.setUserId(this, “9812914350”);

Set description (human readable) for the user (can be name or any other string.), to be displayed on the web dashboard. Calling this method is optional.

                                Transporter.setDescription(this, “description”);
                                
//e.g, Transporter.setDescription(this, “Mukesh”);

Start/Stop Tracking

Once you have initialized the SDK, and completed above steps, you can start tracking the user's location in the background.

To start tracking the user's location (e.g. when the user logs in), call:

                                Transporter.startTracking(this);
                            

To stop tracking the user's location (e.g., when the user logs out), call:

                                Transporter.stopTracking(this);
                            

View Dashboard

Install your app with the Transporter SDK on a device and begin tracking on the dashboard. You would see the user’s current state on the Transporter dashboard. If you click on the user, you should be able to view the user's timeline with drive and stops.

Note:

Understanding “user_id” [optional]:

We do not generate this key.This is provided by You. Your Company will have many people whom you will be tracking (e.g all your employees on the field).

When Data comes to our server from any mobile we identify it to be your company user from above “publishable_key”. This user may also have an unique identity within your company. That identity can be uniquely ascribed to your user by this “user_id”.