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
- Podrobnosti o účtu Azure s aktivním předplatným najdete v tématu Vytvoření účtu zdarma.
- Licence Telefon v Microsoft Teams a tenanta Teams s oprávněními správce. Abyste mohli tuto funkci používat, musíte mít licenci na Telefon v 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. Oprávnění správce jsou nutná k autorizaci prostředku komunikační služby pro volání uživatelů Teams, vysvětlená 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í správce Microsoft Teams nebo globální správce 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.
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 OID lze načíst prostřednictvím 1) portálu Office, 2) Centra pro správu Microsoft Entra, 3) Microsoft Entra Connect; nebo 4) Graph API. Následující příklad používá rozhraní Graph API.
Před vyhledáním uživatelů musí správce Microsoft Entra souhlasit. Další informace najdete v dokumentu s přehledem Rozhraní API pro zabezpečení Microsoft Graphu. 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 také vyhledat další 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í objektu callConnection přidejte do hovoru účastníka.
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 se uživateli Microsoft Teams přes oznámení příchozího hovoru odešle hovor Jacka.
Jakmile uživatel Microsoft Teams přijme hovor, zobrazí se v uživatelském prostředí Microsoft Teams všechny účastníky seznamu Microsoft Teams. Vaše aplikace, která spravuje volání pomocí rozhraní API pro automatizaci volání, zůstává uživatelům Teams na obrazovce hovoru skrytá.
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
- Zjistěte, jak nahrávat hovory.
- Přečtěte si další informace o automatizaci volání a jejích funkcích.
- Další informace o možnostech podpory interoperability Teams s využitím automatizace volání ve službě Azure Communication Services
- Přečtěte si o akci Přehrát pro přehrání zvuku v hovoru.
- Zjistěte, jak vytvořit pracovní postup volání pro scénář zákaznické podpory.