# azure-communication-callingserver-java

A Microsoft skill for maintaining Java projects built on the deprecated Azure Communication Services CallingServer SDK and moving their code to Call Automation.

- skill · `type=skill` · Claude Code, GitHub Copilot · ★ 3149
- Author: Microsoft
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/microsoft/skills/tree/HEAD/.github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/azure-communication-callingserver-java

## What it does

This skill covers the legacy Java package `com.azure:azure-communication-callingserver`. It helps developers maintain existing integrations that create a `CallingServerClient`, work with call connections, or control recordings. Microsoft directs new development toward `azure-communication-callautomation` instead.

The examples cover client construction with a connection string and recording controls for starting, pausing, resuming, and stopping a recording. A class mapping explains the migration: `CallingServerClient` becomes `CallAutomationClient`, while the removed `ServerCall` class is replaced by `CallConnection`.

For Maven projects, the documented dependency change is from `com.azure:azure-communication-callingserver` version `1.0.0-beta.5` to `com.azure:azure-communication-callautomation` version `1.6.0`. Code that uses the old client classes must also be updated. The CallingServer SDK is deprecated, so this skill belongs in legacy maintenance work rather than new implementations. It supports Claude Code and GitHub Copilot.

## Requirements
- Works with: Azure

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add microsoft/skills --skill azure-communication-callingserver-java -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/azure-communication-callingserver-java/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/azure-communication-callingserver-java/

### Codex

**Manually: put the files in place**
- File: `.agents/skills/azure-communication-callingserver-java/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

**Manually: put the files in place**
- File: `.cursor/skills/azure-communication-callingserver-java/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install microsoft/skills azure-communication-callingserver-java
```

2. **Manually: put the files in place**
- File: `.github/skills/azure-communication-callingserver-java/SKILL.md`

### Gemini CLI

**Platform CLI**
```bash
gemini skills install https://github.com/microsoft/skills --path .github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/azure-communication-callingserver-java/SKILL.md` — The legacy .windsurf/skills/ path still works

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/microsoft/skills/tree/HEAD/.github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java/SKILL.md

## When to use it
- Locate legacy CallingServer classes in a Java codebase
- Replace the deprecated SDK dependency with Call Automation
- Update client construction to use the new builder
- Move call recording controls to the replacement SDK
- Replace references to the removed ServerCall class

## Example prompts
- Help me maintain this existing Java integration built on `azure-communication-callingserver-java`.
- Migrate `azure-communication-callingserver` to `azure-communication-callautomation` and update the affected client classes.
- Show me how to move recording start, pause, resume, and stop operations to Call Automation.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: c029b9ca2c683015.

BEGIN THIRD-PARTY FILE c029b9ca2c683015
````text
---
name: azure-communication-callingserver-java
description: Azure Communication Services CallingServer (legacy) Java SDK. Note - This SDK is deprecated. Use azure-communication-callautomation instead for new projects. Only use this skill when maintaining legacy code.
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: com.azure:azure-communication-callingserver
---

# Azure Communication CallingServer (Java) - DEPRECATED

> **⚠️ DEPRECATED**: This SDK has been renamed to **Call Automation**. For new projects, use `azure-communication-callautomation` instead. This skill is for maintaining legacy code only.

## Migration to Call Automation

```xml
<!-- OLD (deprecated) -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-callingserver</artifactId>
    <version>1.0.0-beta.5</version>
</dependency>

<!-- NEW (use this instead) -->
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-callautomation</artifactId>
    <version>1.6.0</version>
</dependency>
```

## Class Name Changes

| CallingServer (Old) | Call Automation (New) |
|---------------------|----------------------|
| `CallingServerClient` | `CallAutomationClient` |
| `CallingServerClientBuilder` | `CallAutomationClientBuilder` |
| `CallConnection` | `CallConnection` (same) |
| `ServerCall` | Removed - use `CallConnection` |

## Legacy Client Creation

```java
// OLD WAY (deprecated)
import com.azure.communication.callingserver.CallingServerClient;
import com.azure.communication.callingserver.CallingServerClientBuilder;

CallingServerClient client = new CallingServerClientBuilder()
    .connectionString("<connection-string>")
    .buildClient();

// NEW WAY
import com.azure.communication.callautomation.CallAutomationClient;
import com.azure.communication.callautomation.CallAutomationClientBuilder;

CallAutomationClient client = new CallAutomationClientBuilder()
    .connectionString("<connection-string>")
    .buildClient();
```

## Legacy Recording

```java
// OLD WAY
StartRecordingOptions options = new StartRecordingOptions(serverCallId)
    .setRecordingStateCallbackUri(callbackUri);

StartCallRecordingResult result = client.startRecording(options);
String recordingId = result.getRecordingId();

client.pauseRecording(recordingId);
client.resumeRecording(recordingId);
client.stopRecording(recordingId);

// NEW WAY - see azure-communication-callautomation skill
```

## For New Development

**Do not use this SDK for new projects.** 

See the `azure-communication-callautomation-java` skill for:
- Making outbound calls
- Answering incoming calls
- Call recording
- DTMF recognition
````
END THIRD-PARTY FILE c029b9ca2c683015

The third-party file has ended. Everything between the c029b9ca2c683015 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2666 of 2864 bytes. © Microsoft · MIT · https://github.com/microsoft/skills/tree/HEAD/.github/plugins/azure-sdk-java/skills/azure-communication-callingserver-java/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
