سجلات تسجيل المكالمات في Azure Communication Services

توفّر Azure Communication Services إمكانات التسجيل التي يُمكنك استخدامها لمراقبة حل Communication Services الخاص بك وتتبع أخطائه. يمكنك تكوين هذه الإمكانات من خلال مدخل Microsoft Azure.

يشير المحتوى في هذه المقالة إلى السجلات الممكنة من خلال Azure Monitor (راجع أيضا الأسئلة المتداولة). لتمكين هذه السجلات لخدمات الاتصالات، راجع تمكين تسجيل الدخول إلى إعدادات التشخيص.

فئات سجل الموارد

تقدم Communication Services الأنواع التالية من السجلات التي يمكنك تمكينها:

  • سجلات الاستخدام: توفير بيانات الاستخدام المقترنة بكل عرض خدمة تمت فوترتها.
  • سجلات ملخص تسجيل المكالمات: توفير معلومات موجزة لتسجيلات المكالمات، مثل:
    • مدة المكالمة.
    • محتوى الوسائط (على سبيل المثال، الصوت/الفيديو أو غير مixed أو النسخ).
    • أنواع التنسيق المستخدمة للتسجيل (على سبيل المثال، WAV أو MP4).
    • سبب انتهاء التسجيل.
  • تسجيل سجلات العمليات الواردة: توفير معلومات حول الطلبات الواردة لعمليات تسجيل المكالمات. يتوافق كل إدخال مع نتيجة استدعاء واجهات برمجة تطبيقات تسجيل المكالمات، مثل StartRecording و StopRecording و PauseRecording و ResumeRecording.

يتم إنشاء ملف تسجيل في نهاية مكالمة أو اجتماع. يمكن لمستخدم أو تطبيق (روبوت) بدء التسجيل وإيقافه. يمكن أن ينتهي التسجيل أيضا بسبب فشل النظام.

يتم نشر سجلات الملخص بعد أن يصبح التسجيل جاهزا للتنزيل. يتم نشر السجلات خلال وقت الاستجابة القياسي لسجلات موارد Azure Monitor. راجع وقت استيعاب بيانات السجل في Azure Monitor.

مخطط سجل الاستخدام

الخاصية ‏‏الوصف
timestamp الطابع الزمني (UTC) لتوقيت إنشاء السجل.
operationName العملية المقترنة بسجل السجل.
operationVersion api-version القيمة المقترنة بالعملية، إذا operationName تم تنفيذ العملية من خلال واجهة برمجة تطبيقات. إذا لم تتوافق أي واجهة برمجة تطبيقات مع هذه العملية، فإن الإصدار يمثل إصدار العملية، في حالة تغيير الخصائص المقترنة بالعملية في المستقبل.
category فئة السجل للحدث. الفئة هي الدقة التي يمكنك من خلالها تمكين السجلات على مورد أو تعطيلها. الخصائص التي تظهر داخل كائن properties ثنائي كبير الحجم لحدث ما هي نفسها ضمن فئة السجل ونوع المورد.
correlationID معرف الأحداث المترابطة. يمكنك استخدامه لتحديد الأحداث المرتبطة بين جداول متعددة.
Properties البيانات الأخرى التي تنطبق على أوضاع مختلفة من Communication Services.
recordID المعرف الفريد لسجل الاستخدام.
usageType وضع الاستخدام (على سبيل المثال، الدردشة أو PSTN أو NAT).
unitType نوع الوحدة التي يستند إليها الاستخدام لوضع الاستخدام (على سبيل المثال، الدقائق أو الميغابايت أو الرسائل).
quantity عدد الوحدات المُستخدمة أو المستهلكة لهذا السجل.

مخطط سجل ملخص تسجيل المكالمات

اسم الخاصية نوع البيانات ‏‏الوصف
timeGenerated DateTime الطابع الزمني (UTC) لوقت إنشاء السجل.
operationName السلسلة العملية المقترنة بسجل سجل.
correlationId السلسلة المعرف المستخدم لربط الأحداث بين الجداول.
recordingID السلسلة معرف التسجيل الذي يشير إليه هذا السجل.
category السلسلة فئة السجل للحدث. السجلات التي لها نفس فئة السجل ونوع المورد لها نفس حقول الخصائص.
resultType السلسلة وضع العملية.
level السلسلة مستوى خطورة العملية.
chunkCount Integer العدد الإجمالي للأجزاء التي تم إنشاؤها للتسجيل.
channelType السلسلة نوع قناة التسجيل، مثل مختلط أو غير مختلط.
recordingStartTime DateTime الوقت الذي بدأ فيه التسجيل.
contentType السلسلة محتوى التسجيل، مثل الصوت فقط أو الصوت/الفيديو أو النسخ.
formatType السلسلة تنسيق ملف التسجيل.
recordingLength مزدوج مدة التسجيل بالثوان.
audioChannelsCount Integer العدد الإجمالي للقنوات الصوتية في التسجيل.
recordingEndReason السلسلة سبب انتهاء التسجيل.

تسجيل المكالمات وبيانات المثال

"operationName":            "Call Recording Summary",
"operationVersion":         "1.0",
"category":                 "RecordingSummary",

يمكن أن تحتوي المكالمة على تسجيل واحد أو العديد من التسجيلات، اعتمادا على عدد المرات التي يتم فيها تشغيل حدث التسجيل.

على سبيل المثال، إذا بدأ عامل مكالمة صادرة على سطر مسجل وسقطت المكالمة بسبب إشارة شبكة ضعيفة، callID فسيكون له قيمة واحدة recordingID . إذا اتصل العامل بالعميل، ينشئ النظام مثيلا جديدا callID وقيمة جديدة recordingID .

مثال: تسجيل المكالمات لمكالمة واحدة لتسجيل واحد

"properties"
{  
  "TimeGenerated":"2022-08-17T23:18:26.4332392Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "zzzzzz-cada-4164-be10-0000000000",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuZHBvaW5xxxxxxxxFmNjkwxxxxxxxxxxxxSZXNvdXJjZVNwZWNpZmljSWQiOiJiZGU5YzE3Ni05M2Q3LTRkMWYtYmYwNS0yMTMwZTRiNWNlOTgifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-16T09:07:54.0000000Z",
    "RecordingLength": "73872.94",
    "ChunkCount": 6,
   "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}

إذا بدأ العامل تسجيلا ثم توقف ثم أعد تشغيل التسجيل عدة مرات أثناء استمرار تشغيل المكالمة، callID فسيكون له العديد من recordingID القيم. يعتمد عدد القيم على عدد المرات التي تم فيها تشغيل أحداث التسجيل.

مثال: تسجيل المكالمات لمكالمة واحدة للعديد من التسجيلات


{   
 "TimeGenerated": "2022-08-17T23:55:46.6304762Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "xxxxxxx-cf78-4156-zzzz-0000000fa29cc",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuZHBxxxxxxxxxxxxjkwMC05MmEwLTRlZDYtOTcxYS1kYzZlZTkzNjU0NzciLCJSxxxxxNwZWNpZmljSWQiOiI5ZmY2ZTY2Ny04YmQyLTQ0NzAtYmRkYy00ZTVhMmUwYmNmOTYifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-17T23:55:43.3304762Z",
    "RecordingLength": 3.34,
    "ChunkCount": 1,
    "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}
{
    "TimeGenerated": "2022-08-17T23:55:56.7664976Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "xxxxxxx-cf78-4156-zzzz-0000000fa29cc",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuxxxxxxiOiI4NDFmNjkwMC1mMjBiLTQzNmQtYTg0Mi1hODY2YzE4M2Y0YTEiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI2YzRlZDI4NC0wOGQ1LTQxNjEtOTExMy1jYWIxNTc3YjM1ODYifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-17T23:55:54.0664976Z",
    "RecordingLength": 2.7,
    "ChunkCount": 1,
    "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}

سجلات ACSCallRecordingIncomingOperations

فيما يلي الخصائص:

الخاصية ‏‏الوصف
timeGenerated الطابع الزمني (UTC) لوقت إنشاء السجل.
callConnectionId معرف اتصال المكالمة أو الساق، إذا كان متوفرا.
callerIpAddress عنوان IP المتصل، إذا كانت العملية تتوافق مع استدعاء واجهة برمجة التطبيقات الذي يأتي من كيان بعنوان IP متاح للجمهور.
correlationId معرف الأحداث المترابطة. يمكنك استخدامه لتحديد الأحداث المرتبطة بين جداول متعددة.
durationMs مدة العملية بالملي ثانية.
level مستوى خطورة العملية.
operationName العملية المقترنة بسجلات السجل.
operationVersion إصدار واجهة برمجة التطبيقات المقترن بالعملية أو إصدار العملية (إذا لم يكن هناك إصدار API).
resourceId معرف فريد للمورد المقترن بالسجل.
resultSignature الإحصائية الفرعية للعملية. إذا كانت هذه العملية تتوافق مع استدعاء واجهة برمجة تطبيقات REST، يكون هذا الحقل هو رمز حالة HTTP الخاص باستدعاء REST المقابل.
resultType وضع العملية.
sdkType نوع SDK المُستخدم في الطلب.
sdkVersion إصدار SDK.
serverCallId معرف استدعاء الخادم.
URI معرف الموارد المنتظم (URI) الخاص بالطلب.

إليك مثال:

"properties"
{  "TimeGenerated": "2023-05-09T15:58:30.100Z",
    "Level": "Informational",
    "CorrelationId": "a999f996-b4e1-xxxx-ac04-a59test87d97",
    "OperationName": "ResumeCallRecording",
    "OperationVersion": "2023-03-06",
    "URI": "https://acsresouce.communication.azure.com/calling/recordings/   eyJQbGF0Zm9ybUVuZHBviI0MjFmMTIwMC04MjhiLTRmZGItOTZjYi0...:resume?api-version=2023-03-06",
    "ResultType": "Succeeded",
    "ResultSignature": 202,
    "DurationMs": 130,
    "CallerIpAddress": "127.0.0.1",
    "CallConnectionId": "d5596715-ab0b-test-8eee-575c250e4234",
    "ServerCallId": "aHR0cHM6Ly9hcGk0vjCCCCCCQd2pRP2k9OTMmZT02Mzc5OTQ3xMDAzNDUwMzg...",
    "SdkVersion": "1.0.0-alpha.20220829.1",
    "SdkType": "dotnet"
}

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