إضافة مستخدم Microsoft Teams إلى مكالمة موجودة باستخدام أتمتة المكالمات

هام

هذه الميزة من Azure Communication Services قيد المعاينة حاليا.

يتم توفير واجهات برمجة التطبيقات وSDKs للمعاينة دون اتفاقية على مستوى الخدمة. نوصي بعدم استخدامها لأحمال عمل الإنتاج. قد لا تكون بعض الميزات مدعومة، أو قد تكون لها قدرات مقيدة.

لمزيد من المعلومات، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.

في هذا التشغيل السريع، نستخدم واجهات برمجة تطبيقات Azure Communication Services Call Automation لإضافة مكالمة وإزالتها ونقلها إلى مستخدم Teams.

المتطلبات الأساسية

  • حساب Azure مع اشتراك نشط، للحصول على التفاصيل، راجع إنشاء حساب مجانا.
  • ترخيص هاتف Microsoft Teams ومستأجر Teams بامتيازات إدارية. يعد ترخيص Teams Phone أمرا لا بد منه لاستخدام هذه الميزة، تعرف على المزيد حول تراخيص Teams هنا. يجب voice أيضا تمكين مستخدم Microsoft Teams، راجع إعداد نظام هاتفك. الامتيازات الإدارية مطلوبة لتخويل مورد Communication Services للاتصال بمستخدمي Teams، الموضحة لاحقا في الخطوة 1.
  • تم العثور على مورد Communication Service منشور سلسلة الاتصال صالح عن طريق تحديد Keys في القائمة اليمنى على مدخل Microsoft Azure.
  • الحصول على رقم هاتف PSTN من مورد Communication Service. لاحظ رقم الهاتف الذي حصلت عليه لاستخدامه في هذا التشغيل السريع.
  • اشتراك Azure Event Grid لتلقي IncomingCall الحدث.
  • أحدث مكتبة Azure Communication Service Call Automation API لنظام التشغيل الخاص بك.
  • خدمة ويب تنفذ مكتبة واجهة برمجة تطبيقات أتمتة المكالمات، اتبع هذا البرنامج التعليمي.

الخطوة 1: تخويل مورد Azure Communication Services لتمكين الاتصال لمستخدمي Microsoft Teams

لتمكين الاتصال من خلال واجهات برمجة تطبيقات أتمتة المكالمات، يجب على مسؤول Microsoft Teams أو المسؤول العام تمكين الوصول إلى موارد Communication Services بشكل صريح إلى المستأجر للسماح بالاتصال.

إعداد مستوى المستأجر Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) الذي يمكن/يعطل الاتحاد بين المستأجر وموارد خدمات الاتصال المحددة.

نهج المستخدم Set-CsExternalAccessPolicy (SkypeForBusiness) الذي يسمح للمسؤول بمزيد من التحكم في المستخدمين في مؤسستهم الذين يمكنهم المشاركة في الاتصالات الموحدة مع مستخدمي Communication Services.

الخطوة 2: استخدم واجهة برمجة تطبيقات Graph للحصول على معرف كائن Microsoft Entra لمستخدمي Teams والتحقق اختياريا من وجودهم

مطلوب معرف عنصر Microsoft Entra (OID) لمستخدم Teams لإضافته إليه أو نقله إليه من مكالمة Communication Services. يمكن استرداد OID من خلال 1) مدخل Office، 2) مركز إدارة Microsoft Entra، 3) Microsoft Entra Connect؛ أو 4) Graph API. يستخدم المثال التالي Graph API.

يجب على مسؤول Microsoft Entra الموافقة الكلية قبل استخدام Graph للبحث عن المستخدمين، ومعرفة المزيد من خلال المتابعة في مستند نظرة عامة على Microsoft Graph واجهة برمجة تطبيقات الأمان. يمكن استرداد OID باستخدام قائمة المستخدمين API للبحث عن المستخدمين. يظهر المثال التالي بحثا حسب اسم العرض، ولكن يمكنك أيضا البحث عن خصائص أخرى:

سرد المستخدمين الذين يستخدمون Microsoft Graph v1.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"
        }

اختياريا، يمكن استرداد حالة الحضور لمستخدم باستخدام واجهة برمجة تطبيقات الحصول على حالة الحضور ومعرف الكائن الخاص بالمستخدم. تعرف على المزيد حول وثائق Microsoft Graph 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"

الخطوة 3: إضافة مستخدم Teams إلى مكالمة Communication Services موجودة يتم التحكم فيها بواسطة واجهات برمجة تطبيقات أتمتة المكالمات

تحتاج إلى إكمال خطوة المتطلبات الأساسية ولديك تطبيق خدمة ويب للتحكم في مكالمة Communication Services. باستخدام كائن callConnection، أضف مشاركا إلى المكالمة.

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)"))

على عميل سطح مكتب Microsoft Teams، يتم إرسال مكالمة جاك إلى مستخدم Microsoft Teams من خلال إعلام منبثق للمكالمة الواردة.

لقطة شاشة لعميل Microsoft Teams لسطح المكتب، يتم إرسال مكالمة جاك إلى مستخدم Microsoft Teams من خلال إعلام منبثق للمكالمة الواردة.

بعد قبول مستخدم Microsoft Teams للمكالمة، تعرض تجربة الاتصال لمستخدم Microsoft Teams جميع المشاركين في كشف Microsoft Teams. يظل التطبيق الذي يدير المكالمة باستخدام واجهة برمجة تطبيقات أتمتة المكالمات مخفيا لمستخدم Teams على شاشة المكالمة. لقطة شاشة لمستخدم Microsoft Teams يقبل المكالمة ويدخل تجربة الاتصال لمستخدم Microsoft Teams.

الخطوة 4: إزالة مستخدم Teams من مكالمة Communication Services موجودة يتم التحكم فيها بواسطة واجهات برمجة تطبيقات أتمتة المكالمات

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>"))

ميزة اختيارية: النقل إلى مستخدم Teams من مكالمة Communication Services موجودة يتم التحكم فيها بواسطة واجهات برمجة تطبيقات أتمتة المكالمات

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>"))

تنظيف الموارد

إذا كنت ترغب في تنظيف وإزالة اشتراك Communication Services، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. تعرّف على المزيد حول تنظيف الموارد.

الخطوات التالية