MR
Mayur Rathi
@mayurrathi
⭐ 5 GitHub stars

Azure Communication Callautomation Java

Build call automation workflows with Azure Communication Services Call Automation Java SDK. Use when implementing IVR systems, call routing, call recording, DTMF recognition, text-to-speech, or AI-...

mkdir -p ./skills/azure-communication-callautomation-java && curl -sfL https://raw.githubusercontent.com/mayurrathi/awesome-agent-skills/main/skills/azure-communication-callautomation-java/SKILL.md -o ./skills/azure-communication-callautomation-java/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# Azure Communication Call Automation (Java)


Build server-side call automation workflows including IVR systems, call routing, recording, and AI-powered interactions.


Installation


```xml

<dependency>

<groupId>com.azure</groupId>

<artifactId>azure-communication-callautomation</artifactId>

<version>1.6.0</version>

</dependency>

```


Client Creation


```java

import com.azure.communication.callautomation.CallAutomationClient;

import com.azure.communication.callautomation.CallAutomationClientBuilder;

import com.azure.identity.DefaultAzureCredentialBuilder;


// With DefaultAzureCredential

CallAutomationClient client = new CallAutomationClientBuilder()

.endpoint("https://<resource>.communication.azure.com")

.credential(new DefaultAzureCredentialBuilder().build())

.buildClient();


// With connection string

CallAutomationClient client = new CallAutomationClientBuilder()

.connectionString("<connection-string>")

.buildClient();

```


Key Concepts


| Class | Purpose |

|-------|---------|

| `CallAutomationClient` | Make calls, answer/reject incoming calls, redirect calls |

| `CallConnection` | Actions in established calls (add participants, terminate) |

| `CallMedia` | Media operations (play audio, recognize DTMF/speech) |

| `CallRecording` | Start/stop/pause recording |

| `CallAutomationEventParser` | Parse webhook events from ACS |


Create Outbound Call


```java

import com.azure.communication.callautomation.models.*;

import com.azure.communication.common.CommunicationUserIdentifier;

import com.azure.communication.common.PhoneNumberIdentifier;


// Call to PSTN number

PhoneNumberIdentifier target = new PhoneNumberIdentifier("+14255551234");

PhoneNumberIdentifier caller = new PhoneNumberIdentifier("+14255550100");


CreateCallOptions options = new CreateCallOptions(

new CommunicationUserIdentifier("<user-id>"), // Source

List.of(target)) // Targets

.setSourceCallerId(caller)

.setCallbackUrl("https://your-app.com/api/callbacks");


CreateCallResult result = client.createCall(options);

String callConnectionId = result.getCallConnectionProperties().getCallConnectionId();

```


Answer Incoming Call


```java

// From Event Grid webhook - IncomingCall event

String incomingCallContext = "<incoming-call-context-from-event>";


AnswerCallOptions options = new AnswerCallOptions(

incomingCallContext,

"https://your-app.com/api/callbacks");


AnswerCallResult result = client.answerCall(options);

CallConnection callConnection = result.getCallConnection();

```


Play Audio (Text-to-Speech)


```java

CallConnection callConnection = client.getCallConnection(callConnectionId);

CallMedia callMedia = callConnection.getCallMedia();


// Play text-to-speech

TextSource textSource = new TextSource()

.setText("Welcome to Contoso. Press 1 for sales, 2 for support.")

.setVoiceName("en-US-JennyNeural");


PlayOptions playOptions = new PlayOptions(

List.of(textSource),

List.of(new CommunicationUserIdentifier("<target-user>")));


callMedia.play(playOptions);


// Play audio file

FileSource fileSource = new FileSource()

.setUrl("https://storage.blob.core.windows.net/audio/greeting.wav");


callMedia.play(new PlayOptions(List.of(fileSource), List.of(target)));

```


Recognize DTMF Input


```java

// Recognize DTMF tones

DtmfTone stopTones = DtmfTone.POUND;


CallMediaRecognizeDtmfOptions recognizeOptions = new CallMediaRecognizeDtmfOptions(

new CommunicationUserIdentifier("<target-user>"),

5) // Max tones to collect

.setInterToneTimeout(Duration.ofSeconds(5))

.setStopTones(List.of(stopTones))

.setInitialSilenceTimeout(Duration.ofSeconds(15))

.setPlayPrompt(new TextSource().setText("Enter your account number followed by pound."));


callMedia.startRecognizing(recognizeOptions);

```


Recognize Speech


```java

// Speech recognition with AI

CallMediaRecognizeSpeechOptions speechOptions = new CallMediaRecognizeSpeechOptions(

new Comm

🎯 Best For

  • UI designers
  • Product designers
  • Claude users
  • Data professionals
  • Analytics teams

💡 Use Cases

  • Generating component mockups
  • Creating design system tokens
  • Data pipeline auditing
  • Query optimization

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Azure Communication Callautomation Java to Your Work

    Provide context for your task — paste source material, describe your audience, or share existing work to guide the AI.

  4. 4

    Review and Refine

    Edit the AI output for accuracy, tone, and completeness. Add human insight where the AI lacks context.

❓ Frequently Asked Questions

Does this work with Figma?

Some design skills integrate with Figma plugins. Check the Works With section for supported tools.

How do I install Azure Communication Callautomation Java?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/azure-communication-callautomation-java/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping usability testing

AI-generated designs should be validated with real users before development.

Ignoring data quality

AI analysis inherits all data quality issues — profile your data first.

🔗 Related Skills