Sdílet prostřednictvím


Přidání uživatele Microsoft Teams do existujícího hovoru pomocí automatizace volání

V tomto rychlém startu používáme rozhraní API služby Azure Communication Services pro automatizaci volání k přidání, odebrání a přenosu volání uživateli Teams.

Požadavky

  • Účet Azure s aktivním předplatným.
  • Telefonní licence Microsoft Teams a tenant Teams s oprávněními správce. Abyste mohli tuto funkci používat, musíte použít telefonní licenci Teams. Další informace o licencích Teams najdete tady. Uživatel Microsoft Teams musí být voice také povolený, viz nastavení vašeho telefonního systému. Správa istrativní oprávnění jsou nutná k autorizaci prostředků komunikačních služeb pro volání uživatelů Teams, vysvětleno dále v kroku 1.
  • Nasazený prostředek komunikační služby a platný připojovací řetězec nalezený výběrem klíčů v nabídce na levé straně na webu Azure Portal.
  • Získejte telefonní číslo veřejné telefonní sítě z prostředku komunikační služby. Poznamenejte si telefonní číslo, které jste získali pro použití v tomto rychlém startu.
  • Odběr služby Azure Event Grid pro příjem IncomingCall události.
  • Nejnovější knihovna rozhraní API pro automatizaci volání služby Azure Communication Service pro váš operační systém.
  • Webová služba, která implementuje knihovnu rozhraní API pro automatizaci volání, postupujte podle tohoto kurzu.

Krok 1: Autorizace prostředku Azure Communication Services, která umožňuje volání uživatelům Microsoft Teams

Pokud chcete povolit volání prostřednictvím rozhraní API pro automatizaci volání, musí microsoft Teams Správa istrator nebo globální Správa istrator explicitně povolit přístup k prostředkům komunikačních služeb ke svému tenantovi, aby bylo možné volat.

Nastavení na úrovni tenanta Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell), které umožňuje nebo zakáže federaci mezi tenantem a konkrétními prostředky komunikačních služeb.

Zásady uživatele Set-CsExternalAccessPolicy (SkypeForBusiness), které správci umožňují dále řídit, kteří uživatelé ve své organizaci se můžou účastnit federované komunikace s uživateli komunikačních služeb.

Upozorňujeme, že k používání této funkce musí mít uživatel Teams Telefon licenci. K přiřazení licence použijte rutinu Set-Cs Telefon NumberAssignment a nastavte parametr EnterpriseVoiceEnabled na $true. Další informace najdete v tématu Nastavení Telefon Teams ve vaší organizaci.

Krok 2: Získání ID objektu Microsoft Entra pro uživatele Teams pomocí rozhraní Graph API a volitelně zkontrolovat jejich stav

K přidání nebo přenosu z volání komunikačních služeb je vyžadováno ID objektu Microsoft Entra uživatele Aplikace Teams. Identifikátor identifikátoru lze načíst prostřednictvím 1) portálu Office, 2) Centra pro správu Microsoft Entra, 3) Microsoft Entra Připojení; nebo 4) Graph API. Následující příklad používá rozhraní Graph API.

Souhlas musí udělit správce Microsoft Entra, aby bylo možné graph použít k vyhledávání uživatelů. Další informace najdete v dokumentu s přehledem microsoft Graphu Rozhraní API pro zabezpečení. Identifikátor OID lze načíst pomocí rozhraní API seznamu uživatelů k vyhledání uživatelů. Následující příklad ukazuje hledání podle zobrazovaného názvu, ale můžete prohledávat i jiné vlastnosti:

Zobrazení seznamu uživatelů pomocí Microsoft Graphu verze 1.0:

Request:
	https://graph.microsoft.com/v1.0/users?$search="displayName:Art Anderson"
Permissions:
	Application and delegated. Refer to documentation.
Response:
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
    "value": [
        {
            "displayName": "Art Anderson",
            "mail": "artanderson@contoso.com",
            "id": "fc4ccb5f-8046-4812-803f-6c344a5d1560"
        }

Volitelně se dá stav uživatele načíst pomocí rozhraní API pro získání stavu a ID objektu uživatele. Další informace najdete v dokumentaci k Microsoft Graphu v1.0.

Request:
https://graph.microsoft.com/v1.0/users/fc4ccb5f-8046-4812-803f-6c344a5d1560/presence
Permissions:
Delegated only. Application not supported.  Refer to documentation.
Response:
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('fc4ccb5f-8046-4812-803f-6c344a5d1560')/presence/$entity",
    "id": "fc4ccb5f-8046-4812-803f-6c344a5d1560",
    "availability": "Offline",
    "activity": "Offline"

Krok 3: Přidání uživatele Teams do existujícího volání komunikační služby řízeného rozhraními API pro automatizaci volání

Musíte dokončit požadovaný krok a mít aplikaci webové služby pro řízení volání komunikační služby. Pomocí volání Připojení ion objektu přidejte účastníka do hovoru.

CallAutomationClient client = new CallAutomationClient('<Connection_String>');
AnswerCallResult answer = await client.AnswerCallAsync(incomingCallContext, new Uri('<Callback_URI>'));
await answer.Value.CallConnection.AddParticipantAsync(
    new CallInvite(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'))
    {
        SourceDisplayName = "Jack (Contoso Tech Support)"
    });
CallAutomationClient client = new CallAutomationClientBuilder().connectionString("<resource_connection_string>").buildClient();
AnswerCallResult answer = client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.getCallConnection().addParticipant(
    new CallInvite(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"))
        .setSourceDisplayName("Jack (Contoso Tech Support)"));
const client = new CallAutomationClient("<resource_connection_string>");
const answer = await client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.callConnection.addParticipant({
    targetParticipant: { microsoftTeamsUserId: "<Teams_User_Guid>" },
    sourceDisplayName: "Jack (Contoso Tech Support)"
});
call_automation_client = CallAutomationClient.from_connection_string("<resource_connection_string>")
answer = call_automation_client.answer_call(incoming_call_context = incoming_call_context, callback_url = "<Callback_URI>")
call_connection_client = call_automation_client.get_call_connection(answer.call_connection_id)
call_connection_client.add_participant(target_participant = CallInvite(
    target = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"),
    source_display_name = "Jack (Contoso Tech Support)"))

Na desktopovém klientovi Microsoft Teams bude hovor Jacka odeslán uživateli Microsoft Teams prostřednictvím oznámení o příchozím hovoru.

Snímek obrazovky s desktopovým klientem Microsoft Teams, volání Jacka se odešle uživateli Microsoft Teams prostřednictvím oznámení o příchozím hovoru.

Jakmile uživatel Microsoft Teams přijme hovor, bude mít prostředí v hovoru pro uživatele Microsoft Teams všechny účastníky zobrazené v seznamu microsoft Teams. Upozorňujeme, že aplikace, která spravuje volání pomocí rozhraní API pro automatizaci volání, zůstane uživatelům Teams na obrazovce hovoru skrytá, s výjimkou případu, kdy s uživatelem Teams zahájíte hovor 1:1.
Snímek obrazovky uživatele Microsoft Teams, který hovor přijme a zadá prostředí v hovoru pro uživatele Microsoft Teams

Krok 4: Odebrání uživatele Teams z existujícího volání Komunikační služby řízeného rozhraními API pro automatizaci volání

await answer.Value.CallConnection.RemoveParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().removeParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.removeParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.remove_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"))

Volitelná funkce: Přenos na uživatele Teams z existujícího volání komunikační služby řízeného rozhraními API pro automatizaci volání

await answer.Value.CallConnection.TransferCallToParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().transferCallToParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.transferCallToParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.transfer_call_to_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id = "<USER_ID>"))

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služby Communication Services, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené. Přečtěte si další informace o čištění prostředků.

Další kroky