Sinch 0.1.18-alpha

This is a prerelease version of Sinch.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Sinch --version 0.1.18-alpha
NuGet\Install-Package Sinch -Version 0.1.18-alpha
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sinch" Version="0.1.18-alpha" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sinch --version 0.1.18-alpha
#r "nuget: Sinch, 0.1.18-alpha"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sinch as a Cake Addin
#addin nuget:?package=Sinch&version=0.1.18-alpha&prerelease

// Install Sinch as a Cake Tool
#tool nuget:?package=Sinch&version=0.1.18-alpha&prerelease

Sinch .NET SDK

License

.NET 6.0 .NET 7.0 .NET 8.0

Here you'll find documentation related to the Sinch .NET SDK, including how to install it, initialize it, and start developing .NET code using Sinch services.

To use Sinch services, you'll need a Sinch account and access keys. You can sign up for an account and create access keys at dashboard.sinch.com.

For more information on the Sinch APIs on which this SDK is based, refer to the official developer documentation portal.

[!WARNING] This SDK is currently available to selected developers for preview use only. It is being provided for the purpose of collecting feedback, and should not be used in production environments.

Installation

SinchSDK can be installed using the Nuget package manager or the dotnet CLI.

dotnet add package Sinch --prerelease

Getting started

Once the SDK is installed, you must start by initializing the main client class.

Client initialization

To initialize communication with the Sinch servers, credentials obtained from the Sinch dashboard must be provided to the main client class of this SDK. It's highly recommended to not hardcode these credentials and to load them from environment variables instead or any key-secret storage (for example, app-secrets).

using Sinch;

var sinch = new SinchClient(configuration["Sinch:KeyId"], configuration["Sinch:KeySecret"], configuration["Sinch:ProjectId"]);

With ASP.NET dependency injection:

// SinchClient is thread safe so it's okay to add it as a singleton
builder.Services.AddSingleton<ISinch>(x => new SinchClient(
    builder.Configuration["Sinch:KeyId"],
    builder.Configuration["Sinch:KeySecret"],
    builder.Configuration["Sinch:ProjectId"]));

To configure Conversation or Sms hosting regions, and any other additional parameters, use SinchOptions:

var sinch = new SinchClient(
    configuration["Sinch:KeyId"],
    configuration["Sinch:KeySecret"],
    configuration["Sinch:ProjectId"],
    options =>
    {
        options.SmsHostingRegion = Sinch.SMS.SmsHostingRegion.Eu;
        options.ConversationRegion = Sinch.Conversation.ConversationRegion.Eu;
    });

Supported Sinch Products

Sinch client provides access to the following Sinch products:

Usage example of the numbers product, assuming sinch is a type of ISinchClient:

using Sinch.Numbers.Active.List;

ListActiveNumbersResponse response = await sinch.Numbers.Active.List(new ListActiveNumbersRequest
{
    RegionCode = "US",
    Type = Types.Mobile
});

Logging, HttpClient, and additional options

To configure a logger, provide your own HttpClient, or any additional options utilize SinchOptions action within the constructor:

using Sinch;
using Sinch.SMS;

var sinch = new SinchClient(
    configuration["Sinch:KeyId"],
    configuration["Sinch:KeySecret"],
    configuration["Sinch:ProjectId"],
    options =>
    {
        // provide any logger factory which satisfies Microsoft.Extensions.Logging.ILoggerFactory
        options.LoggerFactory = LoggerFactory.Create(config => {
            // add log output to console
            config.AddConsole();
        });
        // Provide your http client here
        options.HttpClient = new HttpClient();
        // Set a hosting region for Sms
        options.SmsHostingRegion = SmsHostingRegion.Eu;
    });

Handling exceptions

For an unsuccessful API calls SinchApiException will be thrown:

using Sinch;
using Sinch.SMS.Batches.Send;

try {
    var batch = await sinch.Sms.Batches.Send(new SendBatchRequest
    {
        Body = "Hello, World!",
        DeliveryReport = DeliveryReport.None,
        To = new List<string>()
        {
            123456789
        }
    });
}
catch(SinchApiException e)
{
    logger.LogError("Api Exception. Status: {status}. Detailed message: {message}", e.Status, e.DetailedMessage);
}

Sample apps

For additional examples see examples

License

This project is licensed under the Apache License. See the LICENSE file for the license text.

Product 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 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
0.1.19-alpha 59 4/17/2024
0.1.18-alpha 54 3/25/2024
0.1.17-alpha 97 2/21/2024
0.1.16-alpha 53 2/5/2024
0.1.15-alpha 51 2/1/2024
0.1.14-alpha 50 1/22/2024
0.1.13-alpha 959 12/13/2023
0.1.11-alpha 80 11/30/2023
0.1.10-alpha 57 11/29/2023
0.1.9-alpha 698 10/27/2023
0.1.8-alpha 62 10/26/2023
0.1.7-alpha 49 9/21/2023
0.1.6-alpha 67 9/11/2023
0.1.5-alpha 89 9/1/2023
0.1.4-alpha 75 8/21/2023
0.1.2-alpha.1 82 7/19/2023