CSxAPI 11.5.2-SNAPSHOT1
See the version list below for details.
dotnet add package CSxAPI --version 11.5.2-SNAPSHOT1
NuGet\Install-Package CSxAPI -Version 11.5.2-SNAPSHOT1
<PackageReference Include="CSxAPI" Version="11.5.2-SNAPSHOT1" />
paket add CSxAPI --version 11.5.2-SNAPSHOT1
#r "nuget: CSxAPI, 11.5.2-SNAPSHOT1"
// Install CSxAPI as a Cake Addin #addin nuget:?package=CSxAPI&version=11.5.2-SNAPSHOT1&prerelease // Install CSxAPI as a Cake Tool #tool nuget:?package=CSxAPI&version=11.5.2-SNAPSHOT1&prerelease
CSxAPI
CSxAPI is a strongly-typed API client library for Cisco xAPI. It is similar to the official jsxapi
implementation, but for .NET instead of JavaScript. xAPI is exposed by Cisco video conferencing devices, which are known by many names:
- Collaboration Endpoint
- Webex Room
- Cisco device
- Room system
- TelePresence
- Codec
This library can send and receive xCommands, xConfigurations, xStatuses, and xEvents over a WebSocket connection, which is available in Cisco software versions ≥ CE 9.7, and enabled by default in versions ≥ RoomOS 10.8.
Requirements
- .NET 6 or later
- Cisco endpoint
- Targeted endpoint software version: RoomOS 11.5
- Each CSxAPI library release targets exactly one endpoint software version, ideally the latest on-premises version
- Other endpoint software versions should also work, as long as the API didn't introduce any breaking changes from the target version
- This library makes no additional attempt at backwards compatibility other than that afforded by xAPI, which is very backwards compatible on its own
- Minimum endpoint software versions: CE 9.7 and RoomOS 10.3
- Hardware: Room, Board, Desk, SX, DX, or MX series are compatible
- Tested on a Room Kit and a Room Kit Plus PTZ 4K
- xAPI does not exist on C, CTS, E, EX, IX, MXP, or T series endpoints, therefore they are not compatible
- Configuration: WebSocket protocol must be enabled
- Enable by running
xConfiguration NetworkServices Websocket: FollowHTTPService
through SSH, Telnet, or an RS-232 serial connection (XACLI); the web admin site; or the XML HTTP API (TXAS) - Enabled by default in versions ≥ RoomOS 10.8
/Configuration/NetworkServices/HTTP/Mode
must not beOff
- Enable by running
- Addressing: you must know the endpoint's IP address, FQDN, or other hostname
- Authentication: you need the username and password of an active user that can log in to the endpoint
- If the endpoint is registered to Webex and has no local users, you must create a new local user through Local Device Controls
- Network: open TCP route from your client to port 443 on the endpoint
- Targeted endpoint software version: RoomOS 11.5
Installation
The CSxAPI
package is available on NuGet.
dotnet add package CSxAPI
API documentation
For xAPI documentation, refer to the API Reference Guide PDF for the endpoint software version that this CSxAPI release targets, RoomOS 11.5.
Alternatively, you may refer to the online xAPI documentation site.
Connection
using CSxAPI;
await using XAPI xAPI = new CSxAPIClient(hostname: "192.168.1.100", username: "admin", password: "password123!");
await xAPI.Connect();
To disconnect, CSxAPIClient
must be disposed with await using
, using
, or .Dispose()
.
Options
You don't have to pass any of these options, but they're here if you need them.
new CSxAPIClient(hostname, username, password) {
AllowSelfSignedTls = false,
ConsoleTracing = false
};
AllowSelfSignedTls
: set totrue
if connections to WebSocket servers with self-signed or invalid TLS certificates should be allowed, orfalse
(default) to require valid certificates that chain to trusted CAs.- If you want a valid TLS certificate for your Cisco endpoint, you may consider using Let's Encrypt and Aldaviva/CiscoEndpointCertificateDeployer.
ConsoleTracing
: set totrue
to print all JSON-RPC requests and responses sent and received over the WebSocket connection to the console.
Operations
Commands
IDictionary<string, object> result = await xapi.Command.Dial(number: "10990@bjn.vc");
Console.WriteLine($"Dialed call {result["CallId"]} (conference {result["ConferenceId"]})");
Configurations
Get
string name = await xapi.Configuration.SystemUnit.Name();
Set
await xapi.Configuration.SystemUnit.Name("Whisper Blade");
Notify
xapi.Configuration.SystemUnit.NameChanged += newName => Console.WriteLine($"System name changed to {newName}");
Statuses
Get
TimeSpan uptime = TimeSpan.FromSeconds(await xapi.Status.SystemUnit.Uptime());
Console.WriteLine($"Endpoint has been up for {uptime.Days:N0} day(s), {uptime.Hours:N0} hour(s), {uptime.Minutes:N0} minute(s), and {uptime.Seconds:N0} second(s).");
Notify
xapi.Status.Call.N.StatusChanged += callStatus => {
if (callStatus == StatusCallNStatus.Connected) {
Console.WriteLine("Call connected");
}
};
Events
xapi.Event.UserInterface.Message.TextInput.Response += response => {
if (response.FeedbackId == "my expected feedback ID") {
Console.WriteLine($"User entered {response.Text} into the TextInput dialog");
}
};
Error handling
Disconnections
The XAPI
interface exposes the bool IsConnected
property, which is true
when the WebSocket is connected and false
otherwise.
To receive notifications when it is disconnected, subscribe to the Disconnected
event.
Reconnection
Not yet implemented
Method not found
Not yet implemented
Illegal arguments
Not yet implemented
Testing
Dependent unit testing
To do
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- StreamJsonRpc (>= 2.15.29)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
11.14.0 | 139 | 4/21/2024 |
11.5.2-SNAPSHOT1 | 145 | 7/28/2023 |
0.0.0-SNAPSHOT1 | 116 | 6/19/2023 |