Snippets

Team Zoom Java examples

Created by Terence Foxcroft last modified
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zoomconnect</groupId>
    <artifactId>zoomconnect-api-examples</artifactId>
    <version>0.1.0</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.4</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

</project>
package com.zoomconnect;

import com.zoomconnect.common.Util;

public class CharacterEncodingExamples {

    public static void main(String[] args) {
        String gmsMessage = "This is a simple GSM message! Its not worth £500";
        System.out.println(gmsMessage +"\nIs GSM 7 only? "
                + Util.isContainedInGsm7Charset(gmsMessage));

        System.out.println();

        String unicodeMessage1 = "This is a simple unicode message! It contains non " +
                "GSM characters like ∑ and ♥";
        System.out.println(unicodeMessage1 + "\nIs GSM 7 only? "
                + Util.isContainedInGsm7Charset(unicodeMessage1));

        System.out.println();

        String unicodeMessage2 = "This is a simple unicode message! It contains what " +
                "looks like a normal space '\u00A0' character but is non GSM";
        System.out.println(unicodeMessage2 + "\nIs GSM 7 only? "
                + Util.isContainedInGsm7Charset(unicodeMessage2));
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.Account;
import org.springframework.web.client.RestOperations;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing how to retrieve the credit balance for an account
 */
public class GetAccountBalance {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        Account account = restOperations.getForObject(ACCOUNT_BALANCE_JSON_URL, Account.class);
        
        System.out.println("Your account credit balance is: " + account.getCreditBalance());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendSmsRequest;
import com.zoomconnect.model.SendSmsResponse;
import org.springframework.web.client.RestOperations;

import java.util.Date;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing the scheduling of a single message
 */
public class ScheduleSingleMessage {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        Date now = new Date();
        Date tenMinutesTime = new Date(now.getTime() + (10 * 60 * 1000));
        
        SendSmsRequest scheduleMessageRequest = new SendSmsRequest();
        scheduleMessageRequest.setMessage("Test message");
        scheduleMessageRequest.setRecipientNumber("27821234567");
        scheduleMessageRequest.setDateToSend(tenMinutesTime);
        SendSmsResponse scheduleSmsResponse = restOperations.postForObject(
                SEND_JSON_URL, scheduleMessageRequest, SendSmsResponse.class);
        
        System.out.println("Schedule single message message id: " + scheduleSmsResponse.getMessageId());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendSmsRequest;
import com.zoomconnect.model.SendSmsRequests;
import com.zoomconnect.model.SendSmsResponse;
import com.zoomconnect.model.SendSmsResponses;
import org.springframework.web.client.RestOperations;

import java.util.ArrayList;
import java.util.List;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing sending of multiple messages in a single request
 */
public class SendBulkMessage {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        SendSmsRequest message1 = new SendSmsRequest();
        message1.setMessage("Test message 1");
        message1.setRecipientNumber("27821234567");

        SendSmsRequest message2 = new SendSmsRequest();
        message2.setMessage("Test message 2");
        message2.setRecipientNumber("27821234568");
        
        List<SendSmsRequest> sendSmsRequestList = new ArrayList<SendSmsRequest>();
        sendSmsRequestList.add(message1);
        sendSmsRequestList.add(message2);
        SendSmsRequests sendSmsRequests = new SendSmsRequests();
        sendSmsRequests.setSendSmsRequests(sendSmsRequestList);
        SendSmsResponses sendBulkSmsResponses = restOperations.postForObject(
                SEND_BULK_URL, sendSmsRequests, SendSmsResponses.class);
        
        for (SendSmsResponse response : sendBulkSmsResponses.getSendSmsResponses()) {
            System.out.println("Send bulk message message id: " + response.getMessageId());
        }
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendSmsRequest;
import com.zoomconnect.model.SendSmsResponse;
import org.springframework.web.client.RestOperations;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing how to set the campaign field when sending a message
 */
public class SendSingleMessageForCampaign {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        SendSmsRequest sendMessageRequest = new SendSmsRequest();
        sendMessageRequest.setMessage("Test message");
        sendMessageRequest.setRecipientNumber("27821234567");
        sendMessageRequest.setCampaign("My campaign");
        SendSmsResponse sendMessageForCampaignResponse = restOperations.postForObject(
                SEND_JSON_URL, sendMessageRequest, SendSmsResponse.class);
        
        System.out.println("Send message for campaign message id: " + sendMessageForCampaignResponse.getMessageId());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendSmsRequest;
import com.zoomconnect.model.SendSmsResponse;
import org.springframework.web.client.RestOperations;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing the sending of a single message using JSON
 */
public class SendSingleMessageUsingJson {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        SendSmsRequest singleMessageRequest = new SendSmsRequest();
        singleMessageRequest.setMessage("Test message");
        singleMessageRequest.setRecipientNumber("27821234567");
        
        SendSmsResponse sendSmsResponse = restOperations.postForObject(
                SEND_JSON_URL, singleMessageRequest, SendSmsResponse.class);
        
        System.out.println("Send single message using JSON message id: " + sendSmsResponse.getMessageId());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendSmsRequest;
import com.zoomconnect.model.SendSmsResponse;
import org.springframework.web.client.RestOperations;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing the sending of a single message using XML
 */
public class SendSingleMessageUsingXml {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        SendSmsRequest singleMessageRequest = new SendSmsRequest();
        singleMessageRequest.setMessage("Test message");
        singleMessageRequest.setRecipientNumber("27821234567");
        
        SendSmsResponse sendSmsResponse = restOperations.postForObject(
                SEND_XML_URL, singleMessageRequest, SendSmsResponse.class);
        
        System.out.println("Send single message using JSON message id: " + sendSmsResponse.getMessageId());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendVoiceMessageResponse;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestOperations;

import java.io.IOException;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing the sending of a single voice text message
 */
public class SendVoiceMessageAudio {

    public static void main(String[] args) throws IOException {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        ClassPathResource audioFile = new ClassPathResource("test.mp3");

        if (!audioFile.exists()) {
            System.out.println("Unable to load file");
        }

        MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>();
        parameters.add("recipientNumber", "27821234567");
        parameters.add("file", audioFile);

        HttpHeaders headers = new HttpHeaders();
        headers.set("Content-Type", "multipart/form-data");

        SendVoiceMessageResponse response = restOperations.postForObject(
                SEND_VOICE_AUDIO_URL,
                new HttpEntity<MultiValueMap<String, Object>>(parameters, headers),
                SendVoiceMessageResponse.class);

        System.out.println("Send voice message text message id: " + response.getVoiceMessageId());
    }
}
package com.zoomconnect;

import com.zoomconnect.common.RestOperationFactory;
import com.zoomconnect.model.SendVoiceMessageResponse;
import com.zoomconnect.model.SendVoiceMessageTextRequest;
import org.springframework.web.client.RestOperations;

import static com.zoomconnect.common.Constants.*;

/**
 * Example showing the sending of a single voice text message
 */
public class SendVoiceMessageText {

    public static void main(String[] args) {
        RestOperationFactory restOperationFactory = new RestOperationFactory();
        RestOperations restOperations = restOperationFactory.buildRestOperations(EMAIL_ADDRESS, REST_API_TOKEN);

        SendVoiceMessageTextRequest request = new SendVoiceMessageTextRequest();
        request.setMessage("Hello. This is a test voice message.");
        request.setLanguage("en");
        request.setRecipientNumber("27821234567");

        SendVoiceMessageResponse response = restOperations.postForObject(
                SEND_VOICE_TEXT_URL, request, SendVoiceMessageResponse.class);

        System.out.println("Send voice message text message id: " + response.getVoiceMessageId());
    }
}
package com.zoomconnect.common;

public class Constants {

    public static final String EMAIL_ADDRESS = "YOUR_EMAIL_ADDRESS";
    public static final String REST_API_TOKEN = "YOUR-API-TOKEN";

    public static final String REST_API_BASE_URL = "https://zoomconnect.com/app/api/rest/v1/";
    public static final String SEND_JSON_URL = REST_API_BASE_URL + "sms/send.json";
    public static final String SEND_XML_URL = REST_API_BASE_URL + "sms/send.xml";
    public static final String SEND_BULK_URL = REST_API_BASE_URL + "sms/send-bulk.json";
    public static final String ACCOUNT_BALANCE_JSON_URL = REST_API_BASE_URL + "account/balance.json";
    public static final String SEND_VOICE_TEXT_URL = REST_API_BASE_URL + "voice/single-text";
    public static final String SEND_VOICE_AUDIO_URL = REST_API_BASE_URL + "voice/single-audio";

    public static final String YYYY_MM_DD_HH_MM_DATE_FORMAT = "yyyyMMddHHmm";
}
package com.zoomconnect.common;

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.Credentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestOperations;
import org.springframework.web.client.RestTemplate;

public class RestOperationFactory {

    public RestOperations buildRestOperations(String username, String password) {
        Credentials credentials = new UsernamePasswordCredentials(username, password);
        BasicCredentialsProvider credentialsProvider =  new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, credentials);

        HttpClientBuilder httpClient = HttpClientBuilder.create();
        httpClient.setDefaultCredentialsProvider(credentialsProvider);
        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient.build());

        return new RestTemplate(requestFactory);
    }
}
package com.zoomconnect.common;

public class Util {

    public static boolean isContainedInGsm7Charset(CharSequence str0) {
        if(str0 == null) {
            return true;
        } else {
            int len = str0.length();

            for(int i = 0; i < len; ++i) {
                char c = str0.charAt(i);
                if((c < 32 || c > 95) && (c < 97 || c > 126)) {
                    switch(c) {
                        case '\n':
                        case '\f':
                        case '\r':
                        case '¡':
                        case '£':
                        case '¤':
                        case '¥':
                        case '§':
                        case '¿':
                        case 'Ä':
                        case 'Å':
                        case 'Æ':
                        case 'Ç':
                        case 'É':
                        case 'Ñ':
                        case 'Ö':
                        case 'Ø':
                        case 'Ü':
                        case 'ß':
                        case 'à':
                        case 'ä':
                        case 'å':
                        case 'æ':
                        case 'è':
                        case 'é':
                        case 'ì':
                        case 'ñ':
                        case 'ò':
                        case 'ö':
                        case 'ø':
                        case 'ù':
                        case 'ü':
                        case 'Γ':
                        case 'Δ':
                        case 'Θ':
                        case 'Λ':
                        case 'Ξ':
                        case 'Π':
                        case 'Σ':
                        case 'Φ':
                        case 'Ψ':
                        case 'Ω':
                        case '€':
                            break;
                        default:
                            return false;
                    }
                }
            }

            return true;
        }
    }
}
package com.zoomconnect.model;

public class Account {

    private double creditBalance;

    public double getCreditBalance() {
        return creditBalance;
    }

    public void setCreditBalance(double creditBalance) {
        this.creditBalance = creditBalance;
    }
}
package com.zoomconnect.model;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zoomconnect.serializers.JaxbDateSerializer;
import com.zoomconnect.serializers.JsonDateDeserializer;
import com.zoomconnect.serializers.JsonDateSerializer;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Date;

public class SendSmsRequest {

    private String recipientNumber;
    private String message;
    private Date dateToSend;
    private String campaign;
    private String dataField;

    public String getRecipientNumber() {
        return recipientNumber;
    }

    public void setRecipientNumber(String recipientNumber) {
        this.recipientNumber = recipientNumber;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Date getDateToSend() {
        return dateToSend;
    }

    @XmlJavaTypeAdapter(JaxbDateSerializer.class)
    @JsonSerialize(using = JsonDateSerializer.class)
    @JsonDeserialize(using = JsonDateDeserializer.class)
    public void setDateToSend(Date dateToSend) {
        this.dateToSend = dateToSend;
    }

    public String getCampaign() {
        return campaign;
    }

    public void setCampaign(String campaign) {
        this.campaign = campaign;
    }

    public String getDataField() {
        return dataField;
    }

    public void setDataField(String dataField) {
        this.dataField = dataField;
    }
}
package com.zoomconnect.model;

import java.util.List;

public class SendSmsRequests {

    private List<SendSmsRequest> sendSmsRequests;

    public List<SendSmsRequest> getSendSmsRequests() {
        return sendSmsRequests;
    }

    public void setSendSmsRequests(List<SendSmsRequest> sendSmsRequests) {
        this.sendSmsRequests = sendSmsRequests;
    }
}
package com.zoomconnect.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class SendSmsResponse {

    private String messageId;
    private String error;

    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
}
package com.zoomconnect.model;

import java.util.List;

public class SendSmsResponses {

    private List<SendSmsResponse> sendSmsResponses;

    public List<SendSmsResponse> getSendSmsResponses() {
        return sendSmsResponses;
    }

    public void setSendSmsResponses(List<SendSmsResponse> sendSmsResponses) {
        this.sendSmsResponses = sendSmsResponses;
    }
}
package com.zoomconnect.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class SendVoiceMessageResponse {

    private String voiceMessageId;
    private String error;

    public String getVoiceMessageId() {
        return voiceMessageId;
    }

    public void setVoiceMessageId(String voiceMessageId) {
        this.voiceMessageId = voiceMessageId;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
}
package com.zoomconnect.model;

public class SendVoiceMessageTextRequest {

    private String recipientNumber;
    private String message;
    private String language;
    private String campaign;
    private String dataField;

    public String getRecipientNumber() {
        return recipientNumber;
    }

    public void setRecipientNumber(String recipientNumber) {
        this.recipientNumber = recipientNumber;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String getCampaign() {
        return campaign;
    }

    public void setCampaign(String campaign) {
        this.campaign = campaign;
    }

    public String getDataField() {
        return dataField;
    }

    public void setDataField(String dataField) {
        this.dataField = dataField;
    }
}
package com.zoomconnect.serializers;

import com.zoomconnect.common.Constants;

import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class JaxbDateSerializer extends XmlAdapter<String, Date> {

    private SimpleDateFormat dateFormat = new SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_DATE_FORMAT);

    @Override
    public String marshal(Date date) {
        return dateFormat.format(date);
    }

    @Override
    public Date unmarshal(String date) throws ParseException {
        return dateFormat.parse(date);
    }
}
package com.zoomconnect.serializers;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.zoomconnect.common.Constants;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class JsonDateDeserializer extends JsonDeserializer<Date> {

    private SimpleDateFormat dateFormat = new SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_DATE_FORMAT);

    @Override
    public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        ObjectCodec oc = jsonParser.getCodec();
        JsonNode node = oc.readTree(jsonParser);
        try {
            return dateFormat.parse(node.textValue());
        } catch (ParseException e) {
            throw new RuntimeException("Invalid date format");
        }
    }
}
package com.zoomconnect.serializers;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.zoomconnect.common.Constants;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class JsonDateSerializer extends JsonSerializer<Date> {

    private SimpleDateFormat dateFormat = new SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_DATE_FORMAT);

    @Override
    public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
        jsonGenerator.writeString(dateFormat.format(value));
    }
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.