API

Talkable features are also available via API. So there are helper methods in Talkable SDK. All methods are available in any place of your app (after initialization).

Create visitor

It’s the simplest method. You don’t need anything to create Visitor. But you can do anything you need with just create one.

import com.talkable.sdk.TalkableApi;

TalkableApi.createVisitor(new Callback1<Visitor>() {
    @Override
    public void onSuccess(Visitor apiVisitor) {
        // Process success
    }

    @Override
    public void onError(ApiError error) {
        // Process error
    }
});

Create origin

You need to build Origin to create. There are three subclasses of this class. You need to build one of them.

Hierarchy

  • Origin (Abstract)
    • AffiliateMember

    • Event
      • Purchase

Building Origin

You need to build Origin using one of examples below:

// Building customer, required for all types
String email = "advocate@example.com"; // Required
String idInYourApp = "a8db7683-0f7f-407e-8d12-af2d501035c8"; // Use unique identifier from your system, optional
String firstName = "John"; // Optional
String lastName = "Smith"; // Optional
Customer customer = new Customer(idInYourApp, firstName, lastName, email);

// Building AffiliateMember
AffiliateMember origin = new AffiliateMember();
origin.setCustomer(customer); // Required
origin.setCampaignTag("your-campaign-tag");

// Building Event
String eventNumber = "1"; // Required
String eventCategory = "event-category"; // Required
Double subtotal = 10.99; // Optional
String[] coupons = {"EXAMPLE-CODE"}; // Optional

Event origin = new Event(eventNumber, eventCategory, subtotal, coupons);
origin.setCustomer(customer); // Required
origin.setCampaignTag("your-campaign-tag");

// Build purchase
Double price = 10.99;
Integer quantity = 1;
String productId = "1";
Item item = new Item(subtotal, quantity, productId);
item.setTitle("Item Title"); // Optional
item.setUrl("https://site.com/product.html"); // Optional
item.setImageUrl("https://site.com/image.jpg"); // Optional

Double subtotal = price * quantity; // Required
String orderNumber = "123456"; // Required
String[] coupons = {"EXAMPLE-CODE-1", "EXAMPLE-CODE-2"}; // Optional

Purchase origin = new Purchase(subtotal, orderNumber, coupons);
origin.setCustomer(customer); // Required
origin.setCampaignTag("your-campaign-tag");
origin.addItem(item); // Optional

API request

You need built origin created in previous step to save in in Talkable. If you have, you need call method like in the example below:

TalkableApi.createOrigin(origin, new Callback2<Origin, Offer>() {
    @Override
    public void onSuccess(Origin origin, Offer offer) {
        // Process success
    }

    @Override
    public void onError(ApiError error) {
        // Process error
    }
});

Retrieve rewards

This methods is used for retrieving rewards for user. Example:

TalkableApi.retrieveRewards(new Callback1<Reward[]>() {
    @Override
    public void onSuccess(Reward[] rewards) {
        // Process success
    }

    @Override
    public void onError(ApiError error) {
        // Process error
    }
});

If you need get only rewards with some status or for other than user UUID, you need to pass this data to this method. Example:

Params params = new Params();
params.put("status", "Paid"); // Optional
params.put("visitor_uuid", "eb71e496-6567-41ec-a68c-49e96d101e0e"); // Some other uuid, optional
TalkableApi.retrieveRewards(params, new Callback1<Reward[]>() {
    @Override
    public void onSuccess(Reward[] rewards) {
        // Process success
    }

    @Override
    public void onError(ApiError error) {
        // Process error
    }
});

Retrieve offer

This method is used to get offer details by it’s short code. Example:

String shortUrlCode = "ABCXYZ";
TalkableApi.retrieveOffer(shortUrlCode, new Callback1<Offer>() {
    @Override
    public void onSuccess(Offer newOffer) {
        // Process success
    }

    @Override
    public void onError(ApiError e) {
        // Process error
    }
});

Create offer share

If you have your own sharing mechanism, you can create shares using an API. First, you need to create an Offer using the registerOrigin method.

Email Share

Use the createEmailShare method to share an offer via email.

String subject = "Email Subject"; // optional
String body = "Email custom message"; // optional
Boolean reminder = false; // whether Talkable should send a reminder email later; true by default; optional
ShareEmail email = new ShareEmail(subject, body, reminder); // optional

String recipients = "friend1@example.com,friend2@example.com"; // emails separated by commas; required
EmailOfferShare share = new EmailOfferShare(offer, recipients, email);
TalkableApi.createEmailShare(share, new Callback2<JsonElement, Reward>() {
    @Override
    public void onSuccess(JsonElement result, Reward reward) {
        // Process success
    }
    @Override
    public void onError(ApiError e) {
        // Process error
    }
});

Note

JsonElement result from onSuccess(JsonElement result, Reward reward) contains data, described in Shares API under the result key

Social Share

Use the createSocialShare method to track a social share.

SharingChannel channel = SharingChannel.FACEBOOK; // required
SocialOfferShare share = new SocialOfferShare(offer, channel);
TalkableApi.createSocialShare(share, new Callback2<SocialOfferShare, Reward>() {
    @Override
    public void onSuccess(SocialOfferShare createdShare, Reward reward) {
        // Process success
    }
    @Override
    public void onError(ApiError e) {
        // Process error
    }
});