Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Deze functie van Azure Communication Services is momenteel beschikbaar als preview-versie. Functies in preview zijn openbaar beschikbaar en kunnen worden gebruikt door alle nieuwe en bestaande Microsoft-klanten.
Deze preview-versie wordt geleverd zonder een service level agreement en we raden deze niet aan voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of mogelijkheden zijn mogelijk beperkt.
Voor meer informatie, zie Aanvullende Gebruiksvoorwaarden voor Microsoft Azure Previews.
In dit artikel wordt beschreven hoe een onafhankelijke softwareleverancier (ISV) Teams Phone kan inrichten voor de uitbreidbaarheid van Teams Phone (TPE). In dit artikel wordt ook beschreven hoe een ISV zijn klanten kan begeleiden omdat er bewerkingen zijn in Teams die een tenant moet implementeren.
Vermoedens
- De klant van ISV heeft toegang tot het Teams-beheercentrum.
- De klant van ISV heeft toegang tot het Microsoft 365-beheercentrum.
- ISV heeft toegang om azure Communication Services-resource-instellingen te wijzigen.
- U verleent Teams-tenant toegang tot een CCaaS-service voor Graph API-gebruik.
- ISV gebruikt de .NET ACS Call Automation SDK versie 1.5.0-beta.1.
- ISV gebruikt de JavaScript ACS Call Automation SDK versie 1.5.0-beta.2.
- ISV maakt gebruik van de JavaScript ACS Client SDK versie 1.36.1-beta.1.
Snel aan de slag
In de rest van dit artikel worden snelle starts beschreven voor twee verschillende persona's: CCaaS-ontwikkelaar en Teams-gebruiker. De CCaaS-ontwikkelaar is de ISV persona die de CCaaS-service bouwt met behulp van Azure Communication Services. De Teams-tenant is de persona die een klant is van de ISV die wordt beheerd voor Teams Phone.
CCaaS-ontwikkelaar: de AppID inrichten (toepassings-id)
Voordat u een bot kunt maken, moet u een toepassings-id registreren.
Open app-registraties vanuit Azure Portal.
Selecteer Nieuwe registratie.
Vul de vereiste velden in en klik op Registreren.
Wanneer de portal de resource voltooit, klikt u op Ga naar de resource.
Noteer de waarden voor de Application (client) ID en de Directory (tenant) ID.
Open Certificaten en geheimen. Maak een nieuw clientgeheim en noteer de waarden voor het certificaat en de geheime id.
Zie Een aanroepende bot registreren voor meer informatie.
CCaaS-ontwikkelaar: de bot maken
Zodra u het AppID
Teams Phone-systeem hebt gemaakt, wordt ook het huidige proces gebruikt zoals gedefinieerd voor Graph om een bot te maken.
U kunt ook de volgende stappen uitvoeren om alleen de bot te maken nadat u een toepassings-id hebt gemaakt met behulp van de Azure CLI.
Download Azure CLI.
Meld u aan met uw Azure-account dat is gebruikt voor de voorgaande app-registratie:
az login
Als dit nog niet is geïnstalleerd, installeert u
Az.BotService
:Install-Module Az.BotService -AllowClobber
Richt de bot in met behulp van de volgende opdracht. Zie Een bot publiceren met Azure PowerShell - Azure AI Bot Service - Bot Service:
Als uw omgeving al is ingericht, slaat u de volgende stappen over.
Connect-AzAccount
Install-Module Az.Resources
Register-AzResourceProvider -ProviderNamespace Microsoft.BotService
Vereist:
New-AzBotService -ResourceGroupName <your RG name here> -Name "<name of Teams Phone bot>" -ApplicationId <your Application/ClientID from Entra> -Location <bot location> -Sku S1 -Description "<description of bot>"
Voorbeeld:
New-AzBotService -ResourceGroupName teamsphonetest-rg -Name "teamsPhoneBot" -ApplicationId aa123456-1234-1234-1234-aaa123456789 -Location "global" -Sku S1 -Description "My Teams Phone Test Bot"
Wanneer u Teams configureert, kan de webhook elke URL zijn voor deze stap. Voer een geldige URL in, zoals https://mycompanydomain.com
.
Opmerking
In de toekomst verwachten we dat deze afhankelijkheid van de URL wordt verwijderd.
Teams-beheerder: Resourceaccount inrichten
De Teams-beheerder moet de volgende cmdlets uitvoeren. De Teams-beheerder moet een Teams-resourceaccount inrichten voor de uitbreidbaarheid van Teams Phone via cmdlets. Teams-beheercentrum valt buiten het bereik, waarvoor PowerShell 6.1.1 of hoger is vereist.
Meld u aan bij Teams PowerShell en werk bij naar de nieuwste versie door deze opdracht uit te voeren:
Voorbeeld:
Connect-MicrosoftTeams
Update-Module MicrosoftTeams
Gebruik de cmdletNew-CsOnlineApplicationInstance (MicrosoftTeamsPowerShell) om een resourceaccount te maken. Er is geen wijziging voor de uitbreidbaarheid van Teams Phone in deze opdracht. De parameter ApplicationId is uw bot-id van derden. Gebruik niet de app-id's van de eerste persoon van Teams die zijn gedefinieerd in Set-CsOnlineApplicationInstance (MicrosoftTeamsPowerShell), omdat ze niet werken voor de uitbreidbaarheid van Teams Phone. Het is aan de CCaaS-ontwikkelaar om de toepassings-id te communiceren met de Teams-tenant.
Voorbeeld:
New-CsOnlineApplicationInstance -UserPrincipalName myteamsphoneresourceaccount@contoso.com -ApplicationId aa123456-1234-1234-1234-aaa123456789 -DisplayName "My Teams Phone Resource Account"
Gebruik de bijgewerkte opdracht Set-CSonlineApplicationInstance om het resourceaccount toe te wijzen aan uw Azure Communication Services-resource. Met deze opdracht worden aanroepen naar die Azure Communication Services-resource gerouteerd. Het is aan de CCaaS-ontwikkelaar hoe de ACSResourceID
aan de Teams Tenant gecommuniceerd wordt.
Voorbeeld:
Set-CsOnlineApplicationInstance -Identity myteamsphoneresourceaccount@contoso.com -ApplicationId aa123456-1234-1234-1234-aaa123456789 -AcsResourceId bb567890-1234-1234-1234-bbb123456789
Gebruik de bijgewerkte opdrachtSync-CsOnlineApplicationInstance (MicrosoftTeamsPowerShell) om het resourceaccount te synchroniseren met uw agentinrichtingsservice. Met deze opdracht worden aanroepen naar die Azure Communication Services-resource gerouteerd. Er is geen wijziging voor de uitbreidbaarheid van Teams Phone in deze opdracht.
Voorbeeld:
Sync-CsOnlineApplicationInstance -ObjectId cc123456-5678-5678-1234-ccc123456789 -ApplicationId aa123456-1234-1234-1234-aaa123456789
Optioneel kunt u de cmdletGet-CsOnlineApplicationInstance (MicrosoftTeamsPowerShell) gebruiken om het ingerichte resourceaccount op te halen.
Teams-beheerder: Een telefoonnummer verkrijgen en toewijzen aan een resourceaccount
U moet een PSTN-nummer (Public Switched Telephone Network) toewijzen aan uw resourceaccount (RA) om een oproep naar dit eindpunt uit te voeren. We gaan een Teams-telefoonnummer inrichten en dit toewijzen aan uw onlangs ingerichte Teams-resourceaccount.
Ga naar uw Teams-beheercentrum.
Meld u aan met de gebruikersreferenties van uw Teams-beheerder.
Ga naar de sectie Telefoonnummer en richt uw keuze in voor het servicetype Service voor Teams-telefoonnummers. Voor meer informatie, zie Servicetelefoonnummers ophalen voor oproeppakketten - Microsoft Teams. Zodra het is voorzien, moet u het telefoonnummer toewijzen aan uw resource-account.
Voer de volgende opdrachten uit om het Telefoonnummer van Teams toe te wijzen aan uw resourceaccount:
Set-CsPhoneNumberAssignment -Identity <your-TeamsResourceAccount> -PhoneNumber <acquired-number> -PhoneNumberType <DirectRouting|CallingPlan|OperatorConnect>
Als u niet zeker weet wat de details van uw telefoonnummer zijn, voert u de volgende
get
cmdlet uit om de details van het telefoonnummer op te halen:Get-CsPhoneNumberAssignment -TelephoneNumber <acquired-number>
Heeft de Teams-portal u gewaarschuwd over het ontbreken van de juiste licentie? Zo ja, dan moet u de juiste licentie toewijzen aan uw resourceaccount.
- Ga naar uw Microsoft 365-beheercentrum.
- Ga naar Licenties en wijs Microsoft Teams Phone Resource-account toe aan uw resource-account.
Als u van plan bent uitgaande PSTN-oproepen uit te voeren met behulp van uw toegewezen telefoonnummer voor resourceaccounts, is het nu een goed moment om een Microsoft Teams-belabonnement toe te wijzen.
CCaaS-ontwikkelaar: gegevens van het resource-account verkrijgen
We introduceren een nieuwe Graph API om een lijst op te halen van resourceaccounts en telefoonnummers waaraan ze zijn toegewezen. De Graph API ondersteunt een optioneel filter op uw Microsoft Entra first party applicationID
/ clientId
.
Verificatie:
De Graph API biedt ondersteuning voor gedelegeerde verificatie, zoals momenteel is gedefinieerd in Graph Authentication.
Machtiging:
De Microsoft Entra ID-toepassing moet microsoft Graph-machtigingen aanvragen om te verwijzen naar TeamsResourceAccount.Read.All. Als u deze machtiging wilt toewijzen, volgt u de stappen in Gedelegeerde grafiekmachtigingen toewijzen.
De Microsoft Entra-toepassing heeft ook beheerderstoestemming nodig.
Zodra u de Microsoft Entra-toepassing de juiste Graph-machtigingen hebt verleend, moet u de gebruiker toewijzen aan die toepassing. Volg de stappen in Toewijzing van gebruikers en groepen beheren aan een toepassing.
De CCaaS-beheerder heeft ook verhoogde machtigingen nodig om toegang te krijgen tot de gegevens van het Teams-resourceaccount. De Graph API krijgt informatie over teams-resourceaccounts en die informatie is een asset die eigendom is van Teams-beheerder, dus hiervoor is bevoegde toegang vereist als Teams-beheerder. Zie Machtigingen voor het beheren van resourceaccounts voor meer informatie.
Query definitie:
https://graph.microsoft.com/beta/admin/teams/resourceAccounts
Voorbeeld van aanvraag-URI (RURI) voor het ophalen van resourceaccounts met een filter op appId:
GET https://graph.microsoft.com/beta/admin/teams/resourceAccounts?$filter=appid eq 'aa123456-1234-1234-1234-aaa123456789'
Geslaagde reactie:
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/teams/resourceAccounts",
"value": [
{
"id": "cc123456-5678-5678-1234-ccc123456789",
"userPrincipalName": "myteamsphoneresourceaccount@contoso.com",
"appId": "aa123456-1234-1234-1234-aaa123456789",
"displayName": "My RA Name",
"phoneNumber": "tel:+1234567890",
"acsResourceId": "bb567890-1234-1234-1234-bbb123456789"
}]
}
CCaaS-ontwikkelaar: inkomende oproep ontvangen en beantwoorden
De volgende stappen laten zien hoe u een inkomende Teams-oproep ontvangt en beantwoordt.
Vereiste voorwaarden
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een geïmplementeerde Communicatiediensten-resource. Maak een Communicatiediensten-resource.
- Een geconfigureerd Event Grid-eindpunt: concepten voor binnenkomende oproepen - Een Azure Communication Services-conceptdocument | Microsoft Learn.
- Een Teams-telefoonnummer dat is toegewezen aan het resourceaccount.
- Een Teams-resourceaccount dat is ingericht voor het verzenden van aanroepen naar de Azure Communication Services-resource.
- Een Teams-resourceaccount dat is ingericht met een abonnement voor gesprekken.
- Een Azure Communication Services-resource met toestemming om een oproep te ontvangen van het Teams-resourceaccount.
- Een dev-tunnel maken en hosten.
- (Optioneel) Maak een Microsoft Teams-gebruiker met een telefoonlicentie waarvoor spraak is ingeschakeld. Teams Phone-licentie is vereist om Teams-gebruikers toe te voegen aan het gesprek. Meer informatie over zakelijke opties van Microsoft Teams. Zie Teams Phone instellen in uw organisatie voor meer informatie.
- Voltooi client- en servertoestemming zoals gedefinieerd in Access de Teams Phone van een gebruiker, gescheiden van hun Teams-client.
Opmerking
Voor de Azure Communication Services-resource moet u ervoor zorgen dat de gegevenslocatie overeenkomt met de locatie van de Teams-tenant om te voldoen aan de regelgeving voor gegevensgrenzen. U kunt programmatisch details over uw huurderorganisatie ophalen via Organisatiegegevens ophalen.
Uw Azure Dev Tunnels instellen en hosten
Met Azure Dev Tunnels kunt u lokale webservices delen die worden gehost op internet. Voer de opdrachten uit om uw lokale ontwikkelomgeving te verbinden met het openbare internet. Dev-tunnels maken een permanente eindpunt-URL en waarmee anonieme toegang mogelijk is. We gebruiken dit eindpunt om uw toepassing op de hoogte te stellen van het aanroepen van gebeurtenissen van de Azure Communication Services Call Automation-service.
devtunnel create --allow-anonymous
devtunnel port create -p 8080
devtunnel host
U kunt ook de instructies volgen voor het instellen van uw Azure Dev Tunnels in Visual Studio.
Callback-gebeurtenissen voor oproepautomatisering verwerken
app.MapPost("/api/callbacks", async (CloudEvent[] cloudEvents, ILogger < Program > logger) => {
foreach(var cloudEvent in cloudEvents) {
logger.LogInformation($"Event received: {JsonConvert.SerializeObject(cloudEvent)}");
CallAutomationEventBase parsedEvent = CallAutomationEventParser.Parse(cloudEvent);
logger.LogInformation($"{parsedEvent?.GetType().Name} parsedEvent received for call connection id: {parsedEvent?.CallConnectionId}");
var callConnection = callAutomationClient.GetCallConnection(parsedEvent.CallConnectionId);
var callMedia = callConnection.GetCallMedia();
if (parsedEvent is CallConnected) {
//Handle Call Connected Event
}
}
});
Een binnenkomend oproepgebeurtenis afhandelen en de oproep beantwoorden
app.MapPost("/api/incomingCall", async (
[FromBody] EventGridEvent[] eventGridEvents,
ILogger<Program> logger) =>
{
foreach (var eventGridEvent in eventGridEvents)
{
// Handle system events
if (eventGridEvent.TryGetSystemEventData(out object eventData))
{
// Handle the subscription validation event.
if (eventData is SubscriptionValidationEventData subscriptionValidationEventData)
{
var responseData = new SubscriptionValidationResponse
{
ValidationResponse = subscriptionValidationEventData.ValidationCode
};
return Results.Ok(responseData);
}
}
var jsonObject = Helper.GetJsonObject(eventGridEvent.Data);
var fromPhoneNumber = new PhoneNumberIdentifier(Helper.GetFrom(jsonObject));
var toPhoneNumber = new PhoneNumberIdentifier(Helper.GetTo(jsonObject));
var incomingCallContext = Helper.GetIncomingCallContext(jsonObject);
var callbackUri = new Uri(new Uri(devTunnelUri), $"/api/callbacks");
var options = new AnswerCallOptions(incomingCallContext, callbackUri);
AnswerCallResult answerCallResult = await callAutomationClient.AnswerCallAsync(options);
logger.LogInformation($"Answered call for connection id: {answerCallResult.CallConnection.CallConnectionId}");
//Use EventProcessor to process CallConnected event
var answer_result = await answerCallResult.WaitForEventProcessorAsync();
if (answer_result.IsSuccess)
{
logger.LogInformation($"Call connected event received for connection id: {answer_result.SuccessResult.CallConnectionId}");
var callConnectionMedia = answerCallResult.CallConnection.GetCallMedia();
}
}
return Results.Ok();
});
De melding voor binnenkomende oproepen is als volgt opgemaakt. Er is geen wijziging in het schema.
to:rawid
De id van de resourceaccount-GUID van Teams wordt nu echter weergegeven:
Voorbeeld van binnenkomende oproep met resourceaccount-id van Teams en aangepaste context (VoIP en SIP):
{
"to": {
"kind": "unknown",
"rawId": "28:orgid:cc123456-5678-5678-1234-ccc123456789"
},
"from": {
"kind": "phoneNumber",
"rawId": "4:+12065551212",
"phoneNumber": {
"value": "+12065551212"
}
},
"serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkudGVhbXMubWljcm9zb2Z0LmNvbS9hcGkvdjIvZXAvY29udi11c3dlLTAyLXNkZi1ha3MuY29udi5za3lwZS5jb20vY29udi9fVERMUjZVS3BrT05aTlRMOHlIVnBnP2k9MTAtNjAtMTMtMjE2JmU9NjM4NTMwMzUzMjk2MjI3NjY1",
"callerDisplayName": "+12065551212",
"customContext":
{
"voipHeaders":
{
"X-myCustomVoipHeaderName": "myValue"
},
"incomingCallContext": "<CALL_CONTEXT VALUE>",
"correlationId": "2e0fa6fe-bf3e-4351-9beb-568add4f5315"
}
CCaaS Developer: Rechtstreeks toegang krijgen tot media
Als de ingebouwde PlayTo- opties voor herkennen en opnemen die worden geleverd met de Call Automation SDK niet voldoen aan de behoeften van de CCaaS-service, heeft de CCaaS-ontwikkelaar rechtstreeks toegang tot media. U kunt toegang krijgen tot media voor aanroepen via REST + Websocket-meldingsmechanismen bij het instantiëren van het AnswerCallOptions
object. Zodra de aanroep tot stand is gebracht, stroomt de mediastroom via WebSocket-meldingen naar de URL die in het MediaStreamingOptions
object is opgegeven. Zie het volgende voorbeeldcodefragment:
De volgende opties zijn niet specifiek voor de uitbreidbaarheid van Teams Phone en zijn ook beschikbaar voor niet-Teams Phone-uitbreidbaarheidsstromen.
var mediaStreamingOptions = new MediaStreamingOptions(
new Uri("wss://mywebsocket.azure.com/client/hubs/media?accesstoken={access_token}"),
MediaStreamingTransport.WebSocket,
MediaStreamingContent.Audio,
MediaStreamingAudioChannel.Mixed,
);
var answerCallOptions = new AnswerCallOptions(incomingCallContext, callbackUri: new Uri(callConfiguration.AppCallbackUrl)) {
MediaStreamingOptions = mediaStreamingOptions
};
var response = await callingServerClient.AnswerCallAsync(answerCallOptions);
De volgende code is een schemadefinitie van een streaminggegevensobject. De audiopakketten zijn base64 gecodeerd en CCaaS moet de waarde in het data
kenmerk decoderen om de pulse-code modulation (PCM) bytes op te halen.
{
"kind": <string>, // What kind of data this is, e.g. AudioMetadata, AudioData.
"audioData":{
"data": <string>, // Base64 Encoded audio buffer data
"timestamp": <string>, // In ISO 8601 format (yyyy-mm-ddThh:mm:ssZ)
"participantRawID": <string>,
"silent": <boolean> // Indicates if the received audio buffer contains only silence.
}
}
CCaaS-clientontwikkelaar: hoe te authenticeren als dubbelpersoonlijkheid
Ontwikkelaars moeten de Tenant-id en client-id van Teams verkrijgen. De ontwikkelaar moet deze overname implementeren. Zodra de clienttoepassing de tenant-id en client-id heeft verkregen, implementeert de ontwikkelaar de middelen om de gebruiker te attenderen. Zie InteractiveBrowserCredential Class (Azure.Identity) voor meer informatie.
Zodra de gebruikersinteractie is voltooid en de verificatie is geslaagd, wordt een token geretourneerd en doorgegeven aan de klasse AzureCommunicationTokenCredential om een Azure Communication Services-token te retourneren.
Het Azure Communication Services-token parseren om de CommunicationUserIdentifier-interface op te halen | Microsoft Learn.
Zie het codevoorbeeld dat is gedefinieerd in Een referentie maken die geschikt is voor het verkrijgen van een Microsoft Entra-gebruikerstoken.
CCaaS-clientontwikkelaar: de uitbreidbaarheidsagent voor Teams-telefoongesprekken samenstellen
Ontwikkelaars instantiëren een aanroepende client en roept vervolgens de methode createTeamsCallAgent aan. Zie De klasse CallClient voor meer informatie.
...
//Auth and get token
...
this._teamsCallAgent = await this._callClient.createTeamsCallAgent(this.tokenCredential);
CCaaS-clientontwikkelaar: hoe een uitgaande OBO-oproep te plaatsen
Ontwikkelaars moeten het resourceaccount (ID) voor de OBO-identiteit ophalen waarop de aanroep namens moet worden gedaan. In de volgende artikelen wordt beschreven hoe u een uitgaande OBO-aanroep plaatst.
Zodra de OBO-identiteit is verkregen, moet u de onBehalfOfOptions
in- StartTeamsGroupCallOptions()
of StartTeamsCallOptions()
methode instellen. Zie de interface StartTeamsGroupCallOptions of de Interface StartTeamsCallOptions voor meer informatie.
Nadat u de oproepopties hebt ingesteld, gebruikt u de startCall()
methode in de TeamsCallAgent-interface.
...
...
const isMultipleParticipants = Array.isArray(userIds) && userIds.length > 1;
this._previousTeamsCall = this._currentTeamsCall;
var onBehalfOfOptions: SDK.OnBehalfOfOptions | undefined;
if (this.elements.onBehalfOfUserInput.value !== null && this.elements.onBehalfOfUserInput.value !== "" ) {
var onBehalfOfUser = myFunctionToGetIdofResourceAccount();
if (isMicrosoftTeamsAppIdentifier(onBehalfOfUser)) {
onBehalfOfOptions = onBehalfOfUser ? { userId: onBehalfOfUser } : undefined;
if (onBehalfOfOptions) {
console.log("OBO options provided with app Id: " + (onBehalfOfUser as MicrosoftTeamsAppIdentifier).teamsAppId);
}
} else {
console.error("OBO option ignored, MicrosoftTeamsAppIdentifier type expected");
}
}
if (isMultipleParticipants) {
const participants = userIds as (MicrosoftTeamsUserIdentifier | PhoneNumberIdentifier | MicrosoftTeamsAppIdentifier | UnknownIdentifier)[];
(this._placeCallOptions as SDK.StartTeamsGroupCallOptions).onBehalfOfOptions = onBehalfOfOptions;
call = this._teamsCallAgent.startCall(participants, this._placeCallOptions as SDK.StartTeamsGroupCallOptions);
} else {
const participant = userIds[0] as (MicrosoftTeamsUserIdentifier | PhoneNumberIdentifier | MicrosoftTeamsAppIdentifier | UnknownIdentifier);
(this._placeCallOptions as SDK.StartTeamsCallOptions).onBehalfOfOptions = onBehalfOfOptions;
call = this._teamsCallAgent.startCall(participant, this._placeCallOptions as SDK.StartTeamsCallOptions);
}
...
...
CCaaS-ontwikkelaar: Hoe een server een Teams Phone-extensibiliteitsagent kan aanspreken
Nadat u zich hebt aangemeld als agent met een dubbele persona-identiteit, kunt u de oproepagent van Teams Phone-extensibility toevoegen aan een bestaande oproep met hun dubbele persona-identiteit.
In het volgende voorbeeld ziet u een aanvraag voor het toevoegen van een uitbreidbaarheidsagent voor Teams Phone met Microsoft Entra ID-id 0269be4d-5be0-4770-bf9c-a1bf50ee78d5
in tenantbereik 87d349ed-44d7-43e1-9a83-5f2406dee5bd
voor Azure Communication Services-resource e5b7f628-ea94-4fdc-b3d9-1af1fe231111
.
//Call is already established
...
...
var target = new TeamsExtensionUserIdentifier("0269be4d-5be0-4770-bf9c-a1bf50ee78d5", "87d349ed-44d7-43e1-9a83-5f2406dee5bd","e5b7f628-ea94-4fdc-b3d9-1af1fe231111");
await callConnection.AddParticipantAsync(new AddParticipantOptions(new CallInvite(target))
{
InvitationTimeoutInSeconds = 60,
OperationContext = "addParticipantAsync"
});
...
...
CCaaS-ontwikkelaar: een PSTN-gebruiker toevoegen aan een uitbreidbaarheidsoproep van Teams Phone door een server
Zodra u een uitbreidbaarheidsgesprek voor Teams Phone tot stand hebt gebracht, kunt u vervolgens een PSTN-gebruiker toevoegen aan het gesprek met behulp van een telefoonnummer.
In het volgende voorbeeld ziet u een aanvraag om een PSTN-gebruiker toe te voegen aan een uitbreidbaarheidsgesprek in Teams Phone met een telefoonnummer +12065551212
.
//Call is already established
...
...
var target = new PhoneNumberIdentifier("+12065551212");
await callConnection.AddParticipantAsync(new AddParticipantOptions(new CallInvite(target, null))
{
InvitationTimeoutInSeconds = 60,
OperationContext = "addParticipantAsync"
});
...
...
CCaaS-ontwikkelaar: Hoe een uitbreidbaarheidsoproep van Teams Phone door een server naar een PSTN-eindpunt over te zetten
Zodra u een uitbreidbaarheidsgesprek voor Teams Phone tot stand hebt gebracht, kunt u deze doorverbinden naar een PSTN-gebruiker door een telefoonnummer op te geven.
In het volgende voorbeeld ziet u een aanvraag voor het doorschakelen van een tot stand gebracht gesprek naar een PSTN-gebruiker met een telefoonnummer +12065551212
.
//Call is already established
...
...
var target = new PhoneNumberIdentifier("+12065551212");
await callConnection.TransferCallToParticipantAsync(new TransferToParticipantOptions(target)
{
OperationContext = "transferParticipantAsync"
});
...
...
CCaaS-ontwikkelaar: Opnamesessie starten met StartRecordingOptions
Voor de uitbreidbaarheid van Teams Phone moet u de CallConnectionId gebruiken die tijdens het starten van het gesprek is ontvangen bij het starten van de opnamesessie.
- Gebruik RecordingContent om het inhoudstype van de opname door te geven. Gebruik AUDIO.
- Gebruik RecordingChannel om het type opnamekanaal door te geven. Gebruik MIXED of UNMIXED.
- Gebruik RecordingFormat om de indeling van de opname door te geven. Gebruik WAV.
CallAutomationClient callAutomationClient = new CallAutomationClient("<ACSConnectionString>");
StartRecordingOptions recordingOptions = new StartRecordingOptions("<callConnectionId>")
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>");
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
.StartAsync(recordingOptions);
Opmerking
De opname die is gestart met de verbindings-id, wordt asynchroon gestart (204-antwoordcode) en de wijziging van de opnamestatus wordt bijgewerkt via de callbackgebeurtenis Microsoft.Communication.RecordingStateChanged
die is ontvangen op RecordingStateCallbackUri
.
Bovendien wordt elke fout bij het starten van de opname gerapporteerd via een nieuwe callbackgebeurtenis Microsoft.Communication.StartRecordingFailed
die is ontvangen op RecordingStateCallbackUri
.
Alfa-SDK's
- Automation C# SDK aanroepen
- Automation Java SDK aanroepen
- Automation Python SDK aanroepen
- Automation JavaScript SDK aanroepen
- Client-SDK