Skip to content

Commit 22418bb

Browse files
committed
feat (Voice): Voice snippets
1 parent 83a96cc commit 22418bb

18 files changed

+646
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,5 @@ launcher regions/List
3939

4040
- Numbers: [README.md](snippets/src/main/java/numbers/README.md)
4141
- SMS: [README.md](snippets/src/main/java/sms/README.md)
42+
- Voice: [README.md](snippets/src/main/java/voice/README.md)
43+

snippets/src/main/java/utils/Settings.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ public static Optional<String> getSMSRegion() {
4747
return get("SINCH_SMS_REGION");
4848
}
4949

50+
public static Optional<String> getApplicationKey() {
51+
return get("SINCH_APPLICATION_API_KEY");
52+
}
53+
54+
public static Optional<String> getApplicationSecret() {
55+
return get("SINCH_APPLICATION_API_SECRET");
56+
}
57+
5058
public static Optional<String> getPhoneNumber() {
5159
return get("SINCH_PHONE_NUMBER");
5260
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Voice snippets
2+
Sinch Java SDK Code Snippets Repository for Voice APIs
3+
4+
See main [README.md](../../../../../README.md) for how to execute snippets
5+
6+
- Callouts
7+
- [voice/callouts/Call](./callouts/Call.java)
8+
- Calls
9+
- [voice/calls/Get](./calls/Get.java)
10+
- [voice/calls/ManageWithCallLeg](./calls/ManageWithCallLeg.java)
11+
- [voice/calls/Update](./calls/Update.java)
12+
- Conferences
13+
- [voice/conferences/Call](./conferences/Call.java)
14+
- [voice/conferences/Get](./conferences/Get.java)
15+
- [voice/conferences/KickAll](./conferences/KickAll.java)
16+
- [voice/conferences/ManageParticipant](./conferences/ManageParticipant.java)
17+
- [voice/conferences/KickParticipant](./conferences/KickParticipant.java)
18+
- Applications
19+
- [voice/applications/ListNumbers](./applications/ListNumbers.java)
20+
- [voice/applications/AssignNumbers](./applications/AssignNumbers.java)
21+
- [voice/applications/UnassignNumber](./applications/UnassignNumber.java)
22+
- [voice/applications/GetCallbackUrls](./applications/GetCallbackUrls.java)
23+
- [voice/applications/UpdateCallbackUrls](./applications/UpdateCallbackUrls.java)
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package voice.applications;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.ApplicationsService;
5+
import com.sinch.sdk.domains.voice.models.v1.applications.Capability;
6+
import com.sinch.sdk.domains.voice.models.v1.applications.request.UpdateNumbersRequest;
7+
import com.sinch.sdk.models.Configuration;
8+
import java.util.Arrays;
9+
import java.util.logging.Logger;
10+
import utils.Settings;
11+
12+
public class AssignNumbers {
13+
14+
private static final Logger LOGGER = Logger.getLogger(AssignNumbers.class.getName());
15+
16+
public static void main(String[] args) {
17+
18+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
19+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
20+
21+
String phoneNumber = Settings.getPhoneNumber().orElse("MY_SINCH_PHONE_NUMBER");
22+
23+
Configuration configuration =
24+
Configuration.builder()
25+
.setApplicationKey(applicationKey)
26+
.setApplicationSecret(applicationSecret)
27+
.build();
28+
29+
SinchClient client = new SinchClient(configuration);
30+
31+
ApplicationsService applicationsService = client.voice().v1().applications();
32+
33+
LOGGER.info(
34+
String.format("Assign number '%s' to application '%s'", phoneNumber, applicationKey));
35+
36+
UpdateNumbersRequest request =
37+
UpdateNumbersRequest.builder()
38+
.setNumbers(Arrays.asList(phoneNumber))
39+
.setApplicationKey(applicationKey)
40+
.setCapability(Capability.VOICE)
41+
.build();
42+
43+
applicationsService.assignNumbers(request);
44+
45+
LOGGER.info("Done");
46+
}
47+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package voice.applications;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.ApplicationsService;
5+
import com.sinch.sdk.domains.voice.models.v1.applications.Callbacks;
6+
import com.sinch.sdk.models.Configuration;
7+
import java.util.logging.Logger;
8+
import utils.Settings;
9+
10+
public class GetCallbackUrls {
11+
12+
private static final Logger LOGGER = Logger.getLogger(GetCallbackUrls.class.getName());
13+
14+
public static void main(String[] args) {
15+
16+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
17+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
18+
19+
Configuration configuration =
20+
Configuration.builder()
21+
.setApplicationKey(applicationKey)
22+
.setApplicationSecret(applicationSecret)
23+
.build();
24+
25+
SinchClient client = new SinchClient(configuration);
26+
27+
ApplicationsService applicationsService = client.voice().v1().applications();
28+
29+
LOGGER.info("Get callback URLs for application key '%s'".formatted(applicationKey));
30+
31+
Callbacks response = applicationsService.getCallbackUrls(applicationKey);
32+
33+
LOGGER.info("Response: " + response);
34+
}
35+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package voice.applications;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.ApplicationsService;
5+
import com.sinch.sdk.domains.voice.models.v1.applications.response.OwnedNumbersResponse;
6+
import com.sinch.sdk.models.Configuration;
7+
import java.util.logging.Logger;
8+
import utils.Settings;
9+
10+
public class ListNumbers {
11+
12+
private static final Logger LOGGER = Logger.getLogger(ListNumbers.class.getName());
13+
14+
public static void main(String[] args) {
15+
16+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
17+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
18+
19+
Configuration configuration =
20+
Configuration.builder()
21+
.setApplicationKey(applicationKey)
22+
.setApplicationSecret(applicationSecret)
23+
.build();
24+
25+
SinchClient client = new SinchClient(configuration);
26+
27+
ApplicationsService applicationsService = client.voice().v1().applications();
28+
29+
LOGGER.info("Get assigned numbers");
30+
31+
OwnedNumbersResponse response = applicationsService.listNumbers();
32+
33+
LOGGER.info("Response: ");
34+
35+
response.getNumbers().forEach(f -> LOGGER.info(f.toString()));
36+
}
37+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package voice.applications;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.ApplicationsService;
5+
import com.sinch.sdk.domains.voice.models.v1.applications.request.UnAssignNumberRequest;
6+
import com.sinch.sdk.models.Configuration;
7+
import java.util.logging.Logger;
8+
import utils.Settings;
9+
10+
public class UnassignNumber {
11+
12+
private static final Logger LOGGER = Logger.getLogger(UnassignNumber.class.getName());
13+
14+
public static void main(String[] args) {
15+
16+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
17+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
18+
19+
String phoneNumber = Settings.getPhoneNumber().orElse("MY_SINCH_PHONE_NUMBER");
20+
21+
Configuration configuration =
22+
Configuration.builder()
23+
.setApplicationKey(applicationKey)
24+
.setApplicationSecret(applicationSecret)
25+
.build();
26+
27+
SinchClient client = new SinchClient(configuration);
28+
29+
ApplicationsService applicationsService = client.voice().v1().applications();
30+
31+
LOGGER.info(
32+
String.format("Un-assign number '%s' from application '%s'", phoneNumber, applicationKey));
33+
34+
UnAssignNumberRequest request =
35+
UnAssignNumberRequest.builder()
36+
.setNumber(phoneNumber)
37+
.setApplicationKey(applicationKey)
38+
.build();
39+
40+
applicationsService.unassignNumber(request);
41+
42+
LOGGER.info("Done");
43+
}
44+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package voice.applications;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.ApplicationsService;
5+
import com.sinch.sdk.domains.voice.models.v1.applications.Callbacks;
6+
import com.sinch.sdk.domains.voice.models.v1.applications.CallbacksUrl;
7+
import com.sinch.sdk.models.Configuration;
8+
import java.util.logging.Logger;
9+
import utils.Settings;
10+
11+
public class UpdateCallbackUrls {
12+
13+
private static final Logger LOGGER = Logger.getLogger(UpdateCallbackUrls.class.getName());
14+
15+
public static void main(String[] args) {
16+
17+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
18+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
19+
20+
String callbackURL = "A_WEBHOOK_URL";
21+
22+
Configuration configuration =
23+
Configuration.builder()
24+
.setApplicationKey(applicationKey)
25+
.setApplicationSecret(applicationSecret)
26+
.build();
27+
28+
SinchClient client = new SinchClient(configuration);
29+
30+
ApplicationsService applicationsService = client.voice().v1().applications();
31+
32+
Callbacks request =
33+
Callbacks.builder().setUrl(CallbacksUrl.builder().setPrimary(callbackURL).build()).build();
34+
35+
LOGGER.info(
36+
String.format(
37+
"Update callback URLs for application key '%s': '%s'", applicationKey, request));
38+
39+
applicationsService.updateCallbackUrls(applicationKey, request);
40+
41+
LOGGER.info("Done");
42+
}
43+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package voice.callouts;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.CalloutsService;
5+
import com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestTTS;
6+
import com.sinch.sdk.domains.voice.models.v1.destination.DestinationPstn;
7+
import com.sinch.sdk.models.Configuration;
8+
import java.util.logging.Logger;
9+
import utils.Settings;
10+
11+
public class Call {
12+
13+
private static final Logger LOGGER = Logger.getLogger(Call.class.getName());
14+
15+
public static void main(String[] args) {
16+
17+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
18+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
19+
20+
String phoneNumberToBeCalled = "PHONE_NUMBER_TO_BE_CALLED";
21+
String textToSpeech = "Hello, this is a call initiated from Sinch Java SDK. Goodbye.";
22+
23+
Configuration configuration =
24+
Configuration.builder()
25+
.setApplicationKey(applicationKey)
26+
.setApplicationSecret(applicationSecret)
27+
.build();
28+
29+
SinchClient client = new SinchClient(configuration);
30+
31+
CalloutsService calloutsService = client.voice().v1().callouts();
32+
33+
LOGGER.info(String.format("Calling phone number '%s'", phoneNumberToBeCalled));
34+
35+
CalloutRequestTTS request =
36+
CalloutRequestTTS.builder()
37+
.setDestination(DestinationPstn.from(phoneNumberToBeCalled))
38+
.setText(textToSpeech)
39+
.build();
40+
41+
String response = calloutsService.call(request);
42+
43+
LOGGER.info("Response: " + response);
44+
}
45+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package voice.calls;
2+
3+
import com.sinch.sdk.SinchClient;
4+
import com.sinch.sdk.domains.voice.api.v1.CallsService;
5+
import com.sinch.sdk.domains.voice.models.v1.calls.response.CallInformation;
6+
import com.sinch.sdk.models.Configuration;
7+
import java.util.logging.Logger;
8+
import utils.Settings;
9+
10+
public class Get {
11+
12+
private static final Logger LOGGER = Logger.getLogger(Get.class.getName());
13+
14+
public static void main(String[] args) {
15+
16+
String applicationKey = Settings.getApplicationKey().orElse("MY_APPLICATION_KEY");
17+
String applicationSecret = Settings.getApplicationSecret().orElse("MY_APPLICATION_SECRET");
18+
19+
String callId = "A_CALL_ID";
20+
21+
Configuration configuration =
22+
Configuration.builder()
23+
.setApplicationKey(applicationKey)
24+
.setApplicationSecret(applicationSecret)
25+
.build();
26+
27+
SinchClient client = new SinchClient(configuration);
28+
29+
CallsService callsService = client.voice().v1().calls();
30+
31+
LOGGER.info(String.format("Get information for call with ID '%s'", callId));
32+
33+
CallInformation response = callsService.get(callId);
34+
35+
LOGGER.info("Response: " + response);
36+
}
37+
}

0 commit comments

Comments
 (0)