Bibliothèque de client Azure CommunicationAutomation pour .NET - version 1.0.0

Ce package contient un Kit de développement logiciel (SDK) C# pour Azure Communication Call Automation.

| Code sourceDocumentation produit

Prise en main

Installer le package

Installez la bibliothèque de client Azure Communication CallAutomation pour .NET avec NuGet :

dotnet add package Azure.Communication.CallAutomation

Prérequis

Vous avez besoin d’un abonnement Azure et d’une ressource Communication Service pour utiliser ce package.

Pour créer un service communication, vous pouvez utiliser le portail Azure, le Azure PowerShell ou la bibliothèque de client de gestion .NET.

Concepts clés

CallAutomationClient fournit la fonctionnalité permettant de répondre à un appel entrant ou d’initialiser un appel sortant.

Utilisation d’instructions

using Azure.Communication.CallAutomation;

Authentifier le client

Le client Call Automation peut être authentifié à l’aide de la chaîne de connexion acquise à partir d’une ressource de communication Azure dans le portail Azure.

var connectionString = "<connection_string>"; // Find your Communication Services resource in the Azure portal
CallAutomationClient callAutomationClient = new CallAutomationClient(connectionString);

Vous pouvez également utiliser un jeton Active Directory valide.

var endpoint = new Uri("https://my-resource.communication.azure.com");
TokenCredential tokenCredential = new DefaultAzureCredential();
var client = new CallAutomationClient(endpoint, tokenCredential);

Exemples

Passer un appel à un destinataire de numéro de téléphone

Pour effectuer un appel sortant, appelez la CreateCall fonction ou CreateCallAsync à partir de .CallAutomationClient

CallInvite callInvite = new CallInvite(
    new PhoneNumberIdentifier("<targets-phone-number>"),
    new PhoneNumberIdentifier("<caller-id-phonenumber>")
    );  // E.164 formatted recipient phone number

// create call with above invitation
createCallResult = await callAutomationClient.CreateCallAsync(
    callInvite,
    new Uri("<YOUR-CALLBACK-URL>")
    );

Console.WriteLine($"Call connection id: {createCallResult.CallConnectionProperties.CallConnectionId}");

Gérer les événements de rappel Mid-Connection

Votre application recevra des événements de rappel de connexion intermédiaire via le point de terminaison de rappel que vous avez fourni. Vous devez écrire le contrôleur de gestionnaire d’événements pour recevoir les événements et diriger votre flux d’application en fonction de votre logique métier.

/// <summary>
/// Handle call back events.
/// </summary>>
[HttpPost]
[Route("/CallBackEvent")]
public IActionResult OnMidConnectionCallBackEvent([FromBody] CloudEvent[] events)
{
    try
    {
        if (events != null)
        {
            // Helper function to parse CloudEvent to a CallAutomation event.
            CallAutomationEventData callBackEvent = CallAutomationEventParser.Parse(events.FirstOrDefault());

            switch (callBackEvent)
            {
                case CallConnected ev:
                    # logic to handle a CallConnected event
                    break;
                case CallDisconnected ev:
                    # logic to handle a CallDisConnected event
                    break;
                case ParticipantsUpdated ev:
                    # cast the event into a ParticipantUpdated event and do something with it. Eg. iterate through the participants
                    ParticipantsUpdated updatedEvent = (ParticipantsUpdated)ev;
                    break;
                case AddParticipantSucceeded ev:
                    # logic to handle an AddParticipantSucceeded event
                    break;
                case AddParticipantFailed ev:
                    # logic to handle an AddParticipantFailed event
                    break;
                case CallTransferAccepted ev:
                    # logic to handle CallTransferAccepted event
                    break;
                case CallTransferFailed ev:
                    # logic to handle CallTransferFailed event
                    break;
                default:
                    break;
            }
        }
    }
    catch (Exception ex)
    {
        // handle exception
    }
    return Ok();
}

Gérer les événements Mid-Connection avec EventProcessor de CallAutomation

Pour gérer facilement les événements de mi-connexion, le KIT DE développement logiciel (SDK) d’Call Automation offre un moyen plus simple de gérer ces événements. Examinons CallAutomationEventProcessor. cela garantit la corelation entre l’appel et les événements plus facilement.

[HttpPost]
[Route("/CallBackEvent")]
public IActionResult OnMidConnectionCallBackEvent([FromBody] CloudEvent[] events)
{
    try
    {
        // process incoming event for EventProcessor
        _callAutomationClient.GetEventProcessor().ProcessEvents(cloudEvents);
    }
    catch (Exception ex)
    {
        // handle exception
    }
    return Ok();
}

ProcessEvents est nécessaire pour qu’EventProcessor fonctionne. Une fois l’événement consommé par EventProcessor, vous pouvez commencer à utiliser sa fonctionnalité.

Consultez l’exemple ci-dessous : où vous effectuez un appel avec CreateCallet attendez CallConnected l’événement de l’appel.

CallInvite callInvite = new CallInvite(
    new PhoneNumberIdentifier("<targets-phone-number>"),
    new PhoneNumberIdentifier("<caller-id-phonenumber>")
    );  // E.164 formatted recipient phone number

// create call with above invitation
createCallResult = await callAutomationClient.CreateCallAsync(
    callInvite,
    new Uri("<YOUR-CALLBACK-URL>")
    );

// giving 30 seconds timeout for call reciever to answer
CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
CancellationToken token = cts.Token;

try
{
    // this will wait until CreateCall is completed or Timesout!
    CreateCallEventResult eventResult = await createCallResult.WaitForEventProcessorAsync(token);

    // Once this is recieved, you know the call is now connected.
    CallConnected returnedEvent = eventResult.SuccessResult;

    // ...Do more actions, such as Play or AddParticipant, since the call is established...
}
catch (OperationCanceledException ex)
{
    // Timeout exception happend!
    // Call likely was never answered.
}

Si le jeton d’annulation n’a pas été passé avec le délai d’expiration, le délai d’expiration par défaut est de 4 minutes.

Résolution des problèmes

Un RequestFailedException est levée en tant que réponse de service pour toutes les demandes infructueuses. L’exception contient des informations sur le code de réponse retourné par le service.

Étapes suivantes

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez cla.microsoft.com.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.