All Projects → Vonage → Vonage Java Sdk

Vonage / Vonage Java Sdk

Licence: apache-2.0
Vonage Server SDK for Java. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Vonage Java Sdk

Vonage Ruby Sdk
Vonage REST API client for Ruby. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 203 (+170.67%)
Mutual labels:  phone, voice, messaging, sms, two-factor-authentication
Vonage Python Sdk
Vonage Server SDK for Python. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 134 (+78.67%)
Mutual labels:  phone, voice, messaging, sms, two-factor-authentication
Vonage Node Sdk
Vonage API client for Node.js. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 323 (+330.67%)
Mutual labels:  phone, voice, messaging, sms, two-factor-authentication
Vonage Php Sdk Core
Vonage REST API client for PHP. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 849 (+1032%)
Mutual labels:  phone, voice, messaging, sms, two-factor-authentication
Vonage Dotnet Sdk
Nexmo REST API client for .NET, ASP.NET, ASP.NET MVC written in C#. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more.
Stars: ✭ 76 (+1.33%)
Mutual labels:  phone, verify, voice, sms, two-factor-authentication
Nexmo Node Code Snippets
NodeJS code examples for using Nexmo
Stars: ✭ 36 (-52%)
Mutual labels:  verify, voice, sms, authentication
React Native Phone Verification
The best React Native example for phone verification (an alternative to Twitter Digits).
Stars: ✭ 332 (+342.67%)
Mutual labels:  verify, sms, two-factor-authentication, two-factor
node-identif
🔑 Helper class to verify one's identity via personal channels(SMS, Phone, E-Mail and more!)
Stars: ✭ 27 (-64%)
Mutual labels:  phone, sms, verification
Authelia
The Single Sign-On Multi-Factor portal for web apps
Stars: ✭ 11,094 (+14692%)
Mutual labels:  authentication, two-factor-authentication, two-factor
vonage-node-code-snippets
NodeJS code examples for using Nexmo
Stars: ✭ 46 (-38.67%)
Mutual labels:  verify, sms, voice
Authy
Rinvex Authy is a simple wrapper for @Authy TOTP API, the best rated Two-Factor Authentication service for consumers, simplest 2fa Rest API for developers and a strong authentication platform for the enterprise.
Stars: ✭ 34 (-54.67%)
Mutual labels:  phone, sms, two-factor-authentication
Privacyidea
🔐 multi factor authentication system (2FA, MFA, OTP Server)
Stars: ✭ 1,027 (+1269.33%)
Mutual labels:  authentication, two-factor-authentication, two-factor
laravel-authy
Rinvex Authy is a simple wrapper for @authy TOTP API, the best rated Two-Factor Authentication service for consumers, simplest 2fa Rest API for developers and a strong authentication platform for the enterprise.
Stars: ✭ 35 (-53.33%)
Mutual labels:  phone, sms, two-factor-authentication
Twilio Java
A Java library for communicating with the Twilio REST API and generating TwiML.
Stars: ✭ 371 (+394.67%)
Mutual labels:  phone, voice, sms
Twilio Csharp
Twilio C#/.NET Helper Library for .NET Framework 3.5+ and supported .NET Core versions
Stars: ✭ 541 (+621.33%)
Mutual labels:  phone, voice, sms
Smsverifycatcher
Android library for phone number verification feature in your app. Automatically copies verification code from SMS right into the app. Made by Stfalcon
Stars: ✭ 788 (+950.67%)
Mutual labels:  sms, verification
Telegram Sms
An SMS-forwarding Robot Running on Your Android Device.
Stars: ✭ 641 (+754.67%)
Mutual labels:  phone, sms
Otplib
🔑 One Time Password (OTP) / 2FA for Node.js and Browser - Supports HOTP, TOTP and Google Authenticator
Stars: ✭ 916 (+1121.33%)
Mutual labels:  two-factor-authentication, two-factor
Africastalking Java
Official Java SDK
Stars: ✭ 27 (-64%)
Mutual labels:  voice, sms
Craft Twofactorauthentication
Craft plugin for two-factor or two-step login using Time Based OTP.
Stars: ✭ 31 (-58.67%)
Mutual labels:  authentication, two-factor

Vonage Server SDK for Java

Maven Release Build Status codecov Contributor Covenant License

Nexmo is now known as Vonage

You can use this Java Server SDK to add Vonage APIs to your application. To use this, you'll need a Vonage account. Sign up for free at nexmo.com.

Installation

To use the Java Server SDK you'll need to have created a Vonage account.

Gradle

To install the Java Server SDK using Gradle, add the following to build.gradle:

repositories {
    mavenCentral()
}

For Gradle 3.4 or Higher:

dependencies {
    implementation 'com.vonage:client:6.2.0'
}

For older versions:

dependencies {
    compile 'com.vonage:client:6.2.0'
}

Maven

Add the following to the correct place in your project's POM file:

<dependency>
      <groupId>com.vonage</groupId>
      <artifactId>client</artifactId>
      <version>6.2.0</version>
</dependency>

Build It Yourself

Alternatively you can clone the repo and build the JAR file yourself:

git clone [email protected]:vonage/vonage-java-sdk.git
gradle build

Download everything in a ZIP file

Note: We strongly recommend that you use a tool that supports dependency management, such as Gradle, Maven, or Ivy

We provide a ZIP file for each release, containing the Java Server SDK JAR, along with all the dependencies. Download the file, unzip it, and add the JAR files to your project's classpath.

Usage

Customize the Base URI

By default, the client will use https://api.nexmo.com, https://rest.nexmo.com, and https://sns.nexmo.com as base URIs for the various endpoints. To customize these you can instantiate VonageClient with an HttpConfig object.

HttpConfig.Builder has been created to assist in building this object. Usage is as follows:

HttpConfig httpConfig = HttpConfig.builder()
        .apiBaseUri("https://api.example.com")
        .restBaseUri("https://rest.example.com")
        .snsBaseUri("https://sns.example.com")
        .build();

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .httpConfig(httpConfig)
        .build();

If you do not specify a property, it will take on whatever the default value is. You can also set all three with a single method:

HttpConfig httpConfig = HttpConfig.builder().baseUri("http://example.com").build();

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .httpConfig(httpConfig)
        .build();

To keep the default values, you can use HttpConfig.defaultConfig():

HttpConfig httpConfig = HttpConfig.defaultConfig();

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .httpConfig(httpConfig)
        .build();;

You can also instantiate without the parameter:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();

Send an SMS

Send an SMS with the Vonage SMS API:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();

SmsSubmissionResponse responses = client.getSmsClient().submitMessage(new TextMessage(
        FROM_NUMBER,
        TO_NUMBER,
        "Hello from Vonage!"));
for (SmsSubmissionResponseMessage response : responses.getMessages()) {
    System.out.println(response);
}

Make Phone Calls

The following code initiates an outbound call which then reads the user a message:

VonageClient client = VonageClient.builder()
        .applicationId(APP_ID)
        .privateKeyPath("application_key.pem")
        .build();

Call call = new Call(to, from,
                     "https://nexmo-community.github.io/ncco-examples/first_call_talk.json");
CallEvent event = client.getVoiceClient().createCall(call);

After the call is answered, you can get more information about it, including the amount it cost with:

CallInfo info = client.getVoiceClient().getCallDetails(event.getUuid());
System.out.println("This cost: " + info.getPrice() + " EUR");

You can modify an existing call in progress, for example by hanging up on the current call:

ModifyCallResponse modifyResponse = client.getVoiceClient().modifyCall(event.getUuid(), "hangup");
System.out.println(modifyResponse.getMessage());

While a call is in progress, you can send Dual-tone multi-frequency(DTMF) tones like so:

DtmfResponse dtmfResponse = client.getVoiceClient().sendDtmf(event.getUuid(), "332393");
System.out.println("Success! " + dtmfResponse.getMessage());

To stream an audio file to an active call, simply use the following method:

StreamResponse startStreamResponse = client.getVoiceClient().startStream(event.getUuid(), "https://nexmo-community.github.io/ncco-examples/assets/voice_api_audio_streaming.mp3");
System.out.println("Success! " + startStreamResponse.getMessage());

If you'd like to stop streaming an audio file to an active call, you can do so with:

StreamResponse stopStreamResponse = client.getVoiceClient().stopStream(event.getUuid());
System.out.println("Alright. " + stopStreamResponse.getMessage());

To send a synthesized speech message to an active call, just use the following method:

TalkResponse startTalkResponse = client.getVoiceClient().startTalk(event.getUuid(), "Hello World");
System.out.println("Success! " + startTalkResponse.getMessage());

If you'd like to stop sending a synthesized speech message to an active call, you can do so with:

TalkResponse stopTalkResponse = client.getVoiceClient().stopTalk(event.getUuid());
System.out.println("Alright. " + stopTalkResponse.getMessage());

Generating NCCO Responses

Our library contains a com.vonage.client.voice.ncco package, providing JSON-serializable objects for your NCCO webhook endpoints.

Each of the Action items contain a Builder class that can be used for constructing various actions. These actions are then added to an Ncco object for serialization into JSON:

TalkAction intro = TalkAction.builder("At the tone, record your response and press #.")
                        .build();

TalkAction outro = TalkAction.builder("Thanks, goodbye!")
                        .build();

RecordAction record = RecordAction.builder()
                        .beepStart(true)
                        .endOnKey('#')
                        .build()
                        
res.type("application/json");
return new Ncco(intro, record, outro).toJson();

Make a Phone Call with an NCCO

You can combine the above examples to send an NCCO to the Voice API:

The following code initiates an outbound call which then reads the user [a message](https://nexmo-community.github.io/ncco-examples/first_call_talk.json):

```java
VonageClient client = VonageClient.builder()
        .applicationId(APP_ID)
        .privateKeyPath("application_key.pem")
        .build();

Ncco ncco = new Ncco(
    TalkAction.builder("Hi, this is Russell. You are listening to a text-to-speech Call made with Vonage's Voice API")
        .build()
);

Call call = new Call(to, from, ncco);
CallEvent event = client.getVoiceClient().createCall(call);

Send a 2FA Code

Send a 2FA code to a phone number with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
VerifyResponse ongoingVerify = client.getVerifyClient().verify(TO_NUMBER, "NEXMO");

Check the 2FA Code

When the user enters the code they received, you can check it like this:

client.getVerifyClient().check(ongoingVerify.getRequestId(), CODE)

Send a PSD2 Payment Verification Code

Send a PSD2 code to a phone number with:

NexmoClient client = NexmoClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
VerifyResponse verifyPayment = client.getVerifyClient().psd2Verify(TO_NUMBER, 103.33, "Michelle");

Get a List of SMS Prices for a Country

Get a list of SMS prices for a country with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
PricingResponse response = client.getAccountClient().getSmsPrice("GB");
System.out.println(response.getDefaultPrice());

Get a List of Voice Prices for a Country

Get a list of voice prices for a country with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
PricingResponse response = client.getAccountClient().getVoicePrice("US");
System.out.println(response.getDefaultPrice());

Get a List of SMS Prices for a Prefix

Get a list of SMS prices for a country with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
PrefixPricingResponse response = client.getAccountClient().getPrefixPrice(ServiceType.SMS, "1");
System.out.println(response.getCountries().get(0).getDefaultPrice());

Get a List of Voice Prices for a Prefix

Get a list of voice prices for a country with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
PrefixPricingResponse response = client.getAccountClient().getPrefixPrice(ServiceType.VOICE, "1");
System.out.println(response.getCountries().get(0).getDefaultPrice());

Top-up Account

Top-up your account that has auto-reload enabled with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
client.getAccountClient().topUp("TRANSACTION_NUMBER");

Submit Conversion

Submit a request to the Conversion API when it has been enabled on your account with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
client.getConversionClient().submitConversion(ConversionRequest.Type.VOICE,
                                     "MESSAGE-ID",
                                     true,
                                     new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2014-03-04 10:11:12"));

Redact Inbound SMS

Submit a request to the Redact API when it has been enabled on your account with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
client.getRedactClient().redactTransaction(SMS_ID, RedactRequest.Product.SMS, RedactRequest.Type.INBOUND);

Redact Voice

Submit a request to the Redact API when it has been enabled on your account with:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
client.getRedactClient().redactTransaction(VOICE_ID, RedactRequest.Product.VOICE);

Create Secret

Create a secret associated with your account id:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
SecretResponse response = client.getAccountClient().createSecret(API_KEY, "Foo84RSecret");

List Secrets

List the secret id (but not content) associated with your account id:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
ListSecretsResponse response = client.getAccountClient().listSecrets(API_KEY);

Collection<SecretResponse> secrets = response.getSecrets();

Revoke Secret

Revoke a secret associated with your account id:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
client.getAccountClient().revokeSecret(API_KEY, SECRET_ID);

Retrieve Secret

Get information about a specific secret associated with your account id:

VonageClient client = VonageClient.builder()
        .apiKey(API_KEY)
        .apiSecret(API_SECRET)
        .build();
SecretResponse response = client.getAccountClient().getSecret(API_KEY, SECRET_ID);

Custom HTTP Configuration

If you need to configure the Apache HttpClient used for making requests, you can call VonageClient.Builder.httpClient() to supply your custom configured object. This can be useful, for example, if you must use an HTTP proxy to make requests or to configure SSL Certificates.

Tips And Tricks

Phone Calls And WebSockets

Our Voice API can connect a voice call to a websocket! An example using javax.websocket for accepting websocket connections can be found on the Oracle website. Another example using the Spark framework

Frequently Asked Questions

Q: Does this SDK support thread safety? A: No, it currently does not.

Supported APIs

The following is a list of Vonage APIs and whether the Java SDK provides support for them:

API API Release Status Supported?
Account API General Availability
Alerts API General Availability
Application API General Availability
Audit API Beta
Conversation API Beta
Dispatch API Beta
External Accounts API Beta
Media API Beta
Messages API Beta
Number Insight API General Availability
Number Management API General Availability
Pricing API General Availability
Redact API General Availability
Reports API Beta
SMS API General Availability
Verify API General Availability
Voice API General Availability

License

This library is released under the Apache 2.0 License

Contribute!

We ❤️ contributions to this library!

It is a good idea to talk to us first if you plan to add any new functionality. Otherwise, bug reports, bug fixes and feedback on the library are always appreciated.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].