Dzienniki połączeń głosowych i połączeń wideo w usługach Azure Communication Services

Usługi Azure Communication Services oferują funkcje rejestrowania, których można użyć do monitorowania i debugowania rozwiązania usług Komunikacyjnych. Te możliwości można skonfigurować za pośrednictwem witryny Azure Portal.

Zawartość tego artykułu dotyczy dzienników włączonych za pośrednictwem usługi Azure Monitor (zobacz też często zadawane pytania). Aby włączyć te dzienniki dla usług komunikacyjnych, zobacz Włączanie rejestrowania w ustawieniach diagnostycznych.

Pojęcia dotyczące danych

Poniższe ogólne opisy pojęć dotyczących danych są specyficzne dla połączeń głosowych i połączeń wideo. Te pojęcia są ważne do przejrzenia, aby zrozumieć znaczenie danych przechwyconych w dziennikach.

Jednostki i identyfikatory

Zapoznaj się z następującymi terminami:

  • Wywołanie: Zgodnie z reprezentacją w danych wywołanie jest abstrakcją przedstawioną przez correlationIdelement . Wartości parametru correlationId są unikatowe dla każdego wywołania i są one powiązane czasowo przez elementy callStartTime i callDuration.

  • Uczestnik: ta jednostka reprezentuje połączenie między punktem końcowym a serwerem. Uczestnik (participantId) jest obecny tylko wtedy, gdy połączenie jest wywołaniem grupy.

  • Punkt końcowy: jest to najbardziej unikatowa jednostka reprezentowana przez endpointIdelement . Każde wywołanie jest zdarzeniem zawierającym dane z co najmniej dwóch punktów końcowych. Punkty końcowe reprezentują uczestników wywołania.

    EndpointType informuje, czy punkt końcowy jest użytkownikiem ludzkim (PSTN lub VoIP), botem lub serwerem zarządzającym wieloma uczestnikami w ramach wywołania. endpointType Gdy wartość to "Server", punkt końcowy nie ma przypisanego unikatowego identyfikatora. Możesz przeanalizować endpointType i liczbę endpointId wartości, aby określić, ilu użytkowników i innych nieludzkich uczestników (botów i serwerów) dołączy do wywołania.

    Natywne zestawy SDK dla systemów Android i iOS ponownie wykorzystają tę samą endpointId wartość dla użytkownika w wielu wywołaniach, aby uzyskać informacje o środowiskach między sesjami. Ten proces różni się od internetowych punktów końcowych, które zawsze generują nową wartość dla każdego nowego endpointId wywołania.

  • Strumień: jest to najbardziej szczegółowa jednostka. Istnieje jeden strumień dla każdego kierunku (przychodzącego lub wychodzącego) i mediaType wartości (na przykład Audio lub Video).

Definicje danych

Schemat dziennika użycia

Właściwości opis
Timestamp Sygnatura czasowa (UTC) czasu wygenerowania dziennika.
Operation Name Operacja skojarzona z rekordem dziennika.
Operation Version api-version Wartość skojarzona z operacją, jeśli Operation Name operacja została wykonana za pośrednictwem interfejsu API. Jeśli żaden interfejs API nie odpowiada tej operacji, wersja reprezentuje wersję operacji, na wypadek gdyby właściwości skojarzone z operacją zmieniły się w przyszłości.
Category Kategoria dziennika zdarzenia. Kategoria to stopień szczegółowości, w którym można włączać lub wyłączać dzienniki w zasobie. Właściwości wyświetlane w properties obiekcie blob zdarzenia są takie same w kategorii dziennika i typie zasobu.
Correlation ID Identyfikator skorelowanych zdarzeń. Służy do identyfikowania skorelowanych zdarzeń między wieloma tabelami.
Properties Inne dane, które mają zastosowanie do różnych trybów usług komunikacyjnych.
Record ID Unikatowy identyfikator rekordu użycia.
Usage Type Tryb użycia (na przykład Czat, PSTN lub NAT).
Unit Type Typ jednostki, która jest opierać się na trybie użycia (na przykład minutach, megabajtach lub komunikatach).
Quantity Liczba jednostek używanych lub używanych dla tego rekordu.

Schemat dziennika podsumowania wywołań

Dziennik podsumowania wywołań zawiera dane ułatwiające zidentyfikowanie kluczowych właściwości wszystkich wywołań. W wywołaniu jest tworzony participantId inny dziennik podsumowania wywołań (endpointId w przypadku wywołań komunikacji równorzędnej [P2P].

Ważne

Informacje o uczestnikach w dzienniku podsumowania wywołań różnią się w zależności od dzierżawy uczestnika. Wersja zestawu SDK i wersja systemu operacyjnego są redacted, jeśli uczestnik nie należy do tej samej dzierżawy (nazywanej również między dzierżawami) co zasób usług komunikacyjnych. Uczestnicy między dzierżawami są klasyfikowani jako użytkownicy zewnętrzni zaproszeni przez dzierżawę zasobów do dołączenia i współpracy podczas połączenia.

Właściwości opis
time Sygnatura czasowa (UTC) czasu wygenerowania dziennika.
operationName Operacja skojarzona z rekordem dziennika.
operationVersion api-version Wartość skojarzona z operacją, jeśli operationName operacja została wykonana za pośrednictwem interfejsu API. Jeśli żaden interfejs API nie odpowiada tej operacji, wersja reprezentuje wersję operacji, na wypadek gdyby właściwości skojarzone z operacją zmieniły się w przyszłości.
category Kategoria dziennika zdarzenia. Ta właściwość to stopień szczegółowości, w którym można włączać lub wyłączać dzienniki w zasobie. Właściwości wyświetlane w properties obiekcie blob zdarzenia są takie same w kategorii dziennika i typie zasobu.
correlationId Unikatowy identyfikator wywołania. Identyfikuje skorelowane zdarzenia ze wszystkich uczestników i punktów końcowych, które łączą się podczas jednego wywołania, i można ich użyć do łączenia danych z różnych dzienników. Jeśli kiedykolwiek musisz otworzyć zgłoszenie do pomocy technicznej w firmie Microsoft, możesz użyć correlationId wartości , aby łatwo zidentyfikować połączenie, które rozwiązujesz.
identifier Unikatowy identyfikator użytkownika. Tożsamość może być użytkownikiem usług Azure Communication Services, identyfikatorem użytkownika Usługi Microsoft Entra, identyfikatorem użytkownika anonimowego usługi Teams lub identyfikatorem bota usługi Teams. Tego identyfikatora można użyć do korelowania zdarzeń użytkownika w dziennikach.
callStartTime Sygnatura czasowa rozpoczęcia wywołania na podstawie pierwszej próby połączenia z dowolnego punktu końcowego.
callDuration Czas trwania wywołania wyrażony w sekundach. Jest on oparty na pierwszej próbie połączenia i końcu ostatniego połączenia między dwoma punktami końcowymi.
callType Typ wywołania. Zawiera wartość "P2P" lub "Group". Wywołanie "P2P" jest bezpośrednim połączeniem 1:1 między tylko dwoma punktami końcowymi spoza serwera. Wywołanie "Group" jest wywołaniem, które ma więcej niż dwa punkty końcowe lub jest tworzone jako "Group" wywołanie przed połączeniem.
teamsThreadId Identyfikator wątku usługi Teams. Ten identyfikator jest istotny tylko wtedy, gdy połączenie jest zorganizowane jako spotkanie usługi Teams. Następnie reprezentuje przypadek użycia współdziałania między usługami Microsoft Teams i Azure Communication Services.

Ten identyfikator jest uwidaczniony w dziennikach operacyjnych. Możesz również uzyskać ten identyfikator za pośrednictwem interfejsów API czatu.
participantId Identyfikator wygenerowany do reprezentowania dwukierunkowego połączenia między "Participant" punktem końcowym (endpointType = "Server") i serwerem. Gdy callType = "P2P"występuje bezpośrednie połączenie między dwoma punktami końcowymi, a żadna wartość nie participantId jest generowana.
participantStartTime Sygnatura czasowa dla początku pierwszej próby połączenia uczestnika.
participantDuration Czas trwania każdego połączenia uczestnika w sekundach od participantStartTime sygnatury czasowej po zakończeniu połączenia.
participantEndReason Przyczyna zakończenia połączenia uczestnika. Zawiera on kody błędów wywoływania zestawu SDK, które zestaw SDK emituje (jeśli jest to istotne) dla każdej participantId wartości.
endpointId Unikatowy identyfikator reprezentujący każdy punkt końcowy połączony z wywołaniem, w którym endpointType definiuje typ punktu końcowego. Gdy wartość to null, połączona jednostka jest serwerem usług komunikacyjnych (endpointType = "Server").

endpointId Wartość może czasami być utrwalana dla tego samego użytkownika w wielu wywołaniach (correlationId) dla klientów natywnych. endpointId Liczba wartości określa liczbę dzienników podsumowania wywołań. Dla każdej endpointId wartości jest tworzony odrębny dziennik podsumowania.
endpointType Ta wartość opisuje właściwości każdego punktu końcowego połączonego z wywołaniem. Może zawierać "Server"wartości , , "VOIP""PSTN", "BOT"lub "Unknown".
sdkVersion Ciąg wersji dla wersji zestawu SDK wywoływania usług komunikacyjnych używanych przez każdy odpowiedni punkt końcowy (na przykład "1.1.00.20212500").
osVersion Ciąg reprezentujący system operacyjny i wersję każdego urządzenia punktu końcowego.
participantTenantId Identyfikator dzierżawy firmy Microsoft skojarzony z tożsamością uczestnika. Dzierżawą może być dzierżawa platformy Azure, która jest właścicielem zasobu usług Azure Communication Services lub dzierżawy firmy Microsoft tożsamości M365. To pole służy do kierowania redaction między dzierżawami.
participantType Opis uczestnika jako połączenie klienta (Azure Communication Services lub Teams) oraz jego tożsamości (Azure Communication Services lub Microsoft 365). Możliwe wartości obejmują: Azure Communication Services (tożsamość usług Azure Communication Services i zestaw SDK usług Azure Communication Services), Teams (tożsamość usługi Teams i klient usługi Teams), usługi Azure Communication Services jako użytkownik zewnętrzny usługi Azure Communication Services (tożsamość usług Azure Communication Services i zestaw SDK usług Azure Communication Services w połączeniu lub spotkaniu usługi Azure Communication Services), usługi Azure Communication Services jako użytkownik platformy Microsoft 365 (tożsamość M365 i klient usług Azure Communication Services) i Teams Voice Apps.
pstnPartcipantCallType Reprezentuje typ i kierunek uczestników PSTN, w tym połączenia awaryjne, routing bezpośredni, transfer, przekazywanie itp.

Wywoływanie schematu dziennika diagnostycznego

Dzienniki diagnostyczne wywołania zawierają ważne informacje o punktach końcowych i transferach multimediów dla każdego uczestnika. Zapewniają one również pomiary, które ułatwiają zrozumienie problemów z jakością.

Dla każdego punktu końcowego w ramach wywołania tworzony jest odrębny dziennik diagnostyczny wywołań dla strumieni multimediów wychodzących (na przykład audio lub wideo) między punktami końcowymi. W wywołaniu P2P każdy dziennik zawiera dane powiązane z poszczególnymi strumieniami wychodzącymi skojarzonymi z poszczególnymi punktami końcowymi. W wywołaniach grupy służy jako identyfikator klucza, participantId aby dołączyć powiązane dzienniki wychodzące do odrębnego połączenia uczestnika. Wywołaj dzienniki diagnostyczne pozostają nienaruszone i są takie same niezależnie od dzierżawy uczestnika.

Uwaga

W tym artykule wywołania P2P i grupy są domyślnie w tej samej dzierżawie dla wszystkich scenariuszy wywołań, które są między dzierżawami. Są one określone odpowiednio w całym artykule.

Właściwości opis
operationName Operacja skojarzona z rekordem dziennika.
operationVersion api-version Wartość skojarzona z operacją, jeśli operationName operacja została wykonana za pośrednictwem interfejsu API. Jeśli żaden interfejs API nie odpowiada tej operacji, wersja reprezentuje wersję operacji, na wypadek gdyby właściwości skojarzone z operacją zmieniły się w przyszłości.
category Kategoria dziennika zdarzenia. Ta właściwość to stopień szczegółowości, w którym można włączać lub wyłączać dzienniki w zasobie. Właściwości wyświetlane w properties obiekcie blob zdarzenia są takie same w kategorii dziennika i typie zasobu.
correlationId Unikatowy identyfikator wywołania. Identyfikuje skorelowane zdarzenia ze wszystkich uczestników i punktów końcowych, które łączą się podczas jednego wywołania. Jeśli kiedykolwiek musisz otworzyć zgłoszenie do pomocy technicznej w firmie Microsoft, możesz użyć correlationId wartości , aby łatwo zidentyfikować połączenie, które rozwiązujesz.
participantId Identyfikator wygenerowany do reprezentowania dwukierunkowego połączenia między "Participant" punktem końcowym (endpointType = "Server") i serwerem. Gdy callType = "P2P"występuje bezpośrednie połączenie między dwoma punktami końcowymi, a żadna wartość nie participantId jest generowana.
identifier Unikatowy identyfikator użytkownika. Tożsamość może być użytkownikiem usług Azure Communication Services, identyfikatorem użytkownika Usługi Microsoft Entra, identyfikatorem obiektu usługi Teams lub identyfikatorem bota usługi Teams. Tego identyfikatora można użyć do korelowania zdarzeń użytkownika w dziennikach.
endpointId Unikatowy identyfikator reprezentujący każdy punkt końcowy połączony z wywołaniem, w którym endpointType definiuje typ punktu końcowego. Gdy wartość to null, połączona jednostka jest serwerem usług komunikacyjnych. EndpointId program może utrwalać dla tego samego użytkownika w wielu wywołaniach () dla klientów natywnych,correlationId ale jest unikatowy dla każdego wywołania, gdy klient jest przeglądarką internetową.
endpointType Wartość opisując właściwości każdego endpointId wystąpienia. Może zawierać "Server", , "PSTN""Voicemail""Anonymous""VOIP""BOT"lub ."Unknown"
mediaType Wartość ciągu, która opisuje typ nośnika przesyłanego między punktami końcowymi w każdym strumieniu. Możliwe wartości to "Audio", , "VBSS""Video"(udostępnianie ekranu opartego na wideo) i "AppSharing".
streamId Unikatowa liczba całkowita, która wraz z elementem mediaTypeumożliwia unikatowe identyfikowanie strumieni o tej samej participantId wartości.
transportType Wartość ciągu opisując protokół transportu sieciowego dla każdej participantId wartości. Może zawierać "UDP"wartość , "TCP"lub "Unrecognized". "Unrecognized" wskazuje, że system nie może ustalić, czy typ transportu to TCP lub UDP.
roundTripTimeAvg Średni czas potrzebny na pobranie pakietu IP z jednego punktu końcowego do drugiego w danym participantDuration okresie. To opóźnienie propagacji sieci jest związane z odległością fizyczną między dwoma punktami, prędkością światła i obciążeniem, między którymi znajdują się różne routery.

Opóźnienie jest mierzone jako jednorazowy lub dwukierunkowy (RTT). Jego wartość wyrażona w milisekundach. Protokół RTT większy niż 500 ms ma negatywny wpływ na jakość wywołań.
roundTripTimeMax Maksymalna wartość RTT (w milisekundach) mierzona w strumieniu multimediów fo w okresie participantDuration wywołania grupy lub w callDuration okresie wywołania P2P.
jitterAvg Średnia zmiana opóźnienia między kolejnymi pakietami. Usługi Azure Communication Services mogą dostosowywać się do niektórych poziomów zakłócenia przez buforowanie. Gdy zakłócenia przekraczają buforowanie, co jest w przybliżeniu większe jitterAvg niż 30 ms, prawdopodobnie występuje negatywny wpływ na jakość. Pakiety przychodzące z różnymi prędkościami powodują, że głos osoby mówiącej brzmie z robotyką.

Ta metryka jest mierzona dla każdego strumienia participantDuration multimediów w okresie wywołania grupy lub callDuration w okresie wywołania P2P.
jitterMax Maksymalna wartość roztrzasku mierzona między pakietami dla każdego strumienia multimediów. Wzrost liczby w warunkach sieciowych może powodować problemy w przepływie ruchu audio/wideo.
packetLossRateAvg Średni procent utraconych pakietów. Utrata pakietów bezpośrednio wpływa na jakość dźwięku. Małe, pojedyncze utracone pakiety mają prawie żaden wpływ, podczas gdy straty z powrotem serii powodują całkowite wycięcie dźwięku. Pakiety są porzucane i nie docierające do ich zamierzonego miejsca docelowego powodują luki w nośniku. Ta sytuacja skutkuje pominiętymi sylabami i słowami, wraz z nieschwytnym wideo i udostępnianiem.

Współczynnik utraty pakietów większy niż 10% (0,1) prawdopodobnie ma negatywny wpływ na jakość. Ta metryka jest mierzona dla każdego strumienia participantDuration multimediów w okresie wywołania grupy lub callDuration w okresie wywołania P2P.
packetLossRateMax Ta wartość reprezentuje maksymalny współczynnik utraty pakietów (procent) dla każdego strumienia participantDuration multimediów w okresie wywołania grupy lub callDuration w okresie wywołania P2P. Wzrost liczby w warunkach sieciowych może powodować problemy w przepływie ruchu audio/wideo.
JitterBufferSizeAvg Średni rozmiar buforu roztrzasku w czasie trwania każdego strumienia multimediów. Bufor roztrzasku to udostępniony obszar danych, w którym pakiety głosowe można zbierać, przechowywać i wysyłać do procesora głosowego w równomiernie rozmieszczonych odstępach. Bufor roztrzasku służy do przeciwdziałania skutkom zakłócenia.

Bufory roztrzasku mogą być statyczne lub dynamiczne. Statyczne bufory roztrzasku są ustawione na stały rozmiar, podczas gdy dynamiczne bufory roztrzasku mogą dostosowywać rozmiar na podstawie warunków sieciowych. Celem buforu roztrzasku jest zapewnienie użytkownikowi płynnego i nieprzerwanego strumienia danych audio i wideo.

W zestawie SDK sieci Web ta wartość "JitterBufferSizeAvg" jest średnią wartością "jitterBufferDelay" podczas wywołania, parametr "jitterBufferDelay" to czas trwania próbki audio lub ramki wideo, która pozostaje w buforze jitter.

Zwykle, gdy wartość "JitterBufferSizeAvg" jest większa niż 200 ms, spowoduje to negatywny wpływ na jakość.
JitterBufferSizeMax Maksymalny rozmiar buforu roztrzasku mierzony w czasie trwania każdego strumienia multimediów.

Zwykle, gdy ta wartość jest większa niż 200 ms, spowoduje to negatywny wpływ na jakość.
HealedDataRatioAvg Średni procent utraconych lub uszkodzonych pakietów danych, które zostały pomyślnie zrekonstruowane lub odzyskane przez uzdrowiciela w czasie trwania strumienia audio. Współczynnik skorygowanych danych to miara skuteczności technik poprawek błędów stosowanych w systemach VoIP.

Jeśli ta wartość jest większa niż 0,1 (10%), uważamy strumień za złą jakość.
HealedDataRatioMax Maksymalny współczynnik uzdrowionych danych mierzony w czasie trwania każdego strumienia multimediów.

Jeśli ta wartość jest większa niż 0,1 (10%), uważamy strumień za złą jakość.
VideoFrameRateAvg Średnia liczba klatek wideo przesyłanych na sekundę podczas wywołania udostępniania wideo/ekranu. Szybkość klatek wideo może mieć wpływ na jakość i gładkość strumienia wideo, z wyższymi szybkościami klatek na sekundę, co zwykle skutkuje wygładzonym i bardziej płynnym ruchem. Standardowa szybkość klatek na sekundę dla wideo WebRTC wynosi zwykle 30 klatek na sekundę (fps), chociaż może się to różnić w zależności od konkretnej implementacji i warunków sieciowych.

Jakość strumienia jest uważana za słabą, gdy ta wartość jest mniejsza niż 7 dla strumienia wideo lub mniejsza niż 1 dla strumienia udostępniania ekranu.
RecvResolutionHeight Średni rozmiar pionowy przychodzącego strumienia wideo przesyłanego podczas wywołania udostępniania wideo/ekranu. Jest mierzona w pikselach i jest jednym z czynników, które określają ogólną rozdzielczość i jakość strumienia wideo. Używane rozwiązanie może zależeć od możliwości urządzeń i warunków sieciowych związanych z wywołaniem.

Jakość strumienia jest uważana za słabą, gdy ta wartość jest mniejsza niż 240 dla strumienia wideo lub mniejsza niż 768 dla strumienia udostępniania ekranu.
RecvFreezeDurationPerMinuteInMs Średni czas trwania zamrożenia w milisekundach na minutę dla przychodzącego strumienia wideo/screenharingu. Blokady są zwykle spowodowane złym stanem sieci i mogą obniżyć jakość strumienia.

Jakość strumienia jest uważana za słabą, gdy ta wartość jest większa niż 6000 ms dla strumienia wideo lub większa niż 25 000 ms dla strumienia udostępniania ekranu.

Wywoływanie schematu dziennika operacji klienta

Ważne

Funkcje opisane w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Dziennik operacji klienta wywołania zawiera informacje po stronie klienta dotyczące wywołujących punktów końcowych i uczestników biorących udział w wywołaniu. Te dzienniki są obecnie w wersji zapoznawczej i pokazują zdarzenia klienta, które wystąpiły w wywołaniu i jakie działania mógł wykonać klient podczas wywołania.

Ten dziennik zawiera szczegółowe informacje na temat akcji wykonywanych podczas wywołania i może służyć do wizualizowania i badania problemów z wywołaniami przy użyciu diagnostyki wywołań dla zasobu usług Azure Communication Services. Dowiedz się więcej o diagnostyce połączeń

Właściwości opis
CallClientTimeStamp Sygnatura czasowa dla czasu wystąpienia operacji w zestawie SDK w formacie UTC.
OperationName Nazwa operacji wyzwolonej na wywołującym zestawie SDK.
CallId Unikatowy identyfikator wywołania. Identyfikuje skorelowane zdarzenia ze wszystkich uczestników i punktów końcowych, które łączą się podczas jednego wywołania, i można ich użyć do łączenia danych z różnych dzienników. Jest podobny do identyfikatora correlationId w dzienniku podsumowania wywołań i wywołaj dziennik diagnostyczny.
ParticipantId Unikatowy identyfikator dla każdej nogi wywołania (w wywołaniach grupy) lub wywołania uczestnika (w wywołaniach komunikacji równorzędnej z elementem równorzędnym). Ten identyfikator jest głównym punktem korelacji między dziennikami CallSummary, CallDiagnostic, CallClientOperations i CallClientMediaStats.
OperationType Wywołaj operację klienta.
OperationId Unikatowy identyfikator GGUID identyfikujący operację zestawu SDK.
DurationMs Czas, który upłynął przez operację wywoływania zestawu SDK, aby zakończyć się niepowodzeniem lub powodzeniem.
ResultType Pole opisujące powodzenie lub niepowodzenie operacji.
ResultSignature Http, taki jak niepowodzenie lub kod powodzenia (200, 500).
SdkVersion Używana wersja zestawu SDK wywołującego.
UserAgent Używany jest standardowy ciąg agenta użytkownika na podstawie przeglądarki lub zestawu SDK wywołującego platformę.
ClientInstanceId Unikatowy identyfikator GGUID identyfikujący obiekt CallClient.
EndpointId Unikatowy identyfikator reprezentujący każdy punkt końcowy połączony z wywołaniem, gdzie endpointType definiuje typ punktu końcowego. Gdy wartość ma wartość null, połączona jednostka jest serwerem usług komunikacyjnych (endpointType = "Serwer").

Wartość endpointId może czasami być utrwalana dla tego samego użytkownika w wielu wywołaniach (correlationId) dla klientów natywnych. Liczba wartości endpointId określa liczbę dzienników podsumowania wywołań. Dla każdej wartości endpointId jest tworzony odrębny dziennik podsumowania.
OperationPayload Ładunek dynamiczny, który różni się w zależności od operacji, zapewniając bardziej szczegółowe informacje o operacji.

Wywołania P2P a wywołania grup

Istnieją dwa typy wywołań reprezentowane przez callType:

  • Wywołanie komunikacji równorzędnej z elementem równorzędnym (P2P): połączenie między tylko dwoma punktami końcowymi bez punktu końcowego serwera. Wywołania P2P są inicjowane jako wywołanie między tymi punktami końcowymi i nie są tworzone jako zdarzenie wywołania grupy przed połączeniem.

    Diagram that shows a P2P call across two endpoints.

  • Wywołanie grupy: każde wywołanie, które ma więcej niż dwa połączone punkty końcowe. Wywołania grup obejmują punkt końcowy serwera i połączenie między poszczególnymi punktami końcowymi i serwerem. Wywołania P2P, które dodają kolejny punkt końcowy podczas wywołania, przestaną być połączeniem P2P i stają się wywołaniem grupy. Oś czasu każdego punktu końcowego przyłączonego do wywołania można określić przy użyciu participantStartTime metryk i participantDuration .

    Diagram that shows a group call across multiple endpoints.

Struktura dziennika

Usługi Azure Communication Services tworzą cztery typy dzienników:

  • Dzienniki podsumowania wywołań: zawierają podstawowe informacje o wywołaniu, w tym wszystkie odpowiednie identyfikatory, sygnatury czasowe, punkty końcowe i informacje o zestawie SDK. Dla każdego uczestnika w ramach połączenia usługi Communication Services tworzą odrębny dziennik podsumowania wywołań.

    Jeśli ktoś ponownie dołączy do połączenia, uczestnik ma tę samą EndpointId wartość, ale inną ParticipantId wartość. Ten punkt końcowy może mieć dwa dzienniki podsumowania wywołań.

  • Wywoływanie dzienników diagnostycznych: zawiera informacje o strumieniu wraz z zestawem metryk wskazujących jakość pomiarów środowiska. Dla każdego EndpointId w ramach wywołania (w tym serwera) usługi Azure Communication Services tworzą odrębny dziennik diagnostyczny wywołań dla każdego strumienia multimediów (na przykład audio lub wideo) między punktami końcowymi.

  • Wywoływanie dzienników operacji klienta: zawierają szczegółowe zdarzenia klienta wywołania. Te zdarzenia dziennika są generowane dla każdego EndpointId wywołania, a liczba wygenerowanych dzienników zdarzeń będzie zależeć od operacji wykonywanych przez uczestnika podczas wywołania.

Przykład: wywołanie P2P

Na poniższym diagramie przedstawiono dwa punkty końcowe połączone bezpośrednio w wywołaniu P2P. W tym przykładzie usługi Communication Services tworzą dwa dzienniki podsumowania wywołań (po jednym dla każdej participantID wartości) i cztery dzienniki diagnostyczne wywołań (po jednym dla każdego strumienia multimediów).

Diagram that shows a P2P call within the same tenant.

Przykład: Wywołanie grupy

Na poniższym diagramie przedstawiono przykład wywołania grupy z trzema participantId wartościami (co oznacza trzech uczestników) i punktem końcowym serwera. Wiele wartości dla endpointId elementu może być potencjalnie wyświetlanych w wielu uczestnikach — na przykład podczas ponownego dołączania połączenia z tego samego urządzenia. Usługi komunikacyjne tworzą jeden dziennik podsumowania wywołań dla każdej participantId wartości. Tworzy cztery dzienniki diagnostyczne wywołań: jeden dla każdego strumienia multimediów na participantId.

W przypadku klientów usług Azure Communication Services (ACS) wywołanie dzienników operacji klienta jest takie same jak wywołania P2P. Dla każdego uczestnika korzystającego z zestawu SDK wywołującego będzie dostępna seria dzienników operacji klienta wywołań.

Diagram that shows a group call within the same tenant.

Przykład: wywołanie P2P między dzierżawami

Na poniższym diagramie przedstawiono dwóch uczestników w wielu dzierżawach połączonych bezpośrednio w wywołaniu P2P. W tym przykładzie usługi Communication Services tworzą jeden dziennik podsumowania wywołań (jeden dla każdego uczestnika) z zredagowaną wersją systemu operacyjnego i zestawu SDK. Usługi komunikacyjne tworzą również cztery dzienniki diagnostyczne wywołań (po jednym dla każdego strumienia multimediów). Każdy dziennik zawiera dane odnoszące się do strumienia wychodzącego .participantID

Diagram that shows a cross-tenant P2P call.

Przykład: wywołanie grupy między dzierżawami

Na poniższym diagramie przedstawiono przykład wywołania grupy z trzema participantId wartościami w wielu dzierżawach. Usługi komunikacyjne tworzą jeden dziennik podsumowania wywołań dla każdego uczestnika z zredagowaną wersją systemu operacyjnego i zestawu SDK. Usługi komunikacyjne tworzą również cztery dzienniki diagnostyczne wywołań, które odnoszą się do każdej participantId wartości (po jednym dla każdego strumienia multimediów).

Diagram that shows a cross-tenant group call.

Uwaga

Ta wersja obsługuje tylko wychodzące dzienniki diagnostyczne. Wersje systemu operacyjnego i zestawu SDK skojarzone z botem i uczestnikiem można zredagować, ponieważ usługi Communication Services traktują tożsamości uczestników i botów w taki sam sposób.

Przykładowe dane

Wywołanie P2P

Poniżej przedstawiono pola udostępnione dla wszystkich dzienników w wywołaniu P2P:

"time":                     "2021-07-19T18:46:50.188Z",
"resourceId":               "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId":            "8d1a8374-344d-4502-b54b-ba2d6daaf0ae",

Dzienniki podsumowania wywołań

Dzienniki podsumowania wywołań zawierają informacje o udostępnionej operacji i kategorii:

"operationName":            "CallSummary",
"operationVersion":         "1.0",
"category":                 "CallSummary",

Oto podsumowanie wywołań dla użytkownika VoIP 1:

"properties": {
    "identifier":               "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
    "callStartTime":            "2021-07-19T17:54:05.113Z",
    "callDuration":             6,
    "callType":                 "P2P",
    "teamsThreadId":            "null",
    "participantId":            "null",    
    "participantStartTime":     "2021-07-19T17:54:06.758Z",
    "participantDuration":      "5",
    "participantEndReason":     "0",
    "endpointId":               "570ea078-74e9-4430-9c67-464ba1fa5859",
    "endpointType":             "VoIP",
    "sdkVersion":               "1.0.1.0",
    "osVersion":                "Windows 10.0.17763 Arch: x64"
}

Oto podsumowanie wywołań dla użytkownika VoIP 2:

"properties": {
    "identifier":               "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
    "callStartTime":            "2021-07-19T17:54:05.335Z",
    "callDuration":             6,
    "callType":                 "P2P",
    "teamsThreadId":            "null",
    "participantId":            "null",
    "participantStartTime":     "2021-07-19T17:54:06.335Z",
    "participantDuration":      "5",
    "participantEndReason":     "0",
    "endpointId":               "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
    "endpointType":             "VoIP",
    "sdkVersion":               "1.1.0.0",
    "osVersion":                "null"
}

Oto dziennik podsumowania wywołań między dzierżawami dla użytkownika VoIP 1:

"properties": {
    "identifier":               "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
    "callStartTime":            "2022-08-14T06:18:27.010Z",
    "callDuration":             520,
    "callType":                 "P2P",
    "teamsThreadId":            "null",
    "participantId":            "null",
    "participantTenantId":      "02cbdb3c-155a-4b95-b829-6d56a45787ca",
    "participantStartTime":     "2022-08-14T06:18:27.010Z",
    "participantDuration":      "520",
    "participantEndReason":     "0",
    "endpointId":               "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
    "endpointType":             "VoIP",
    "sdkVersion":               "Redacted",
    "osVersion":                "Redacted"
}

Oto podsumowanie wywołań dla wywołania PSTN:

Uwaga

Dzienniki wywołań P2P lub grup mają wersje systemu operacyjnego i zestawu SDK, niezależnie od tego, czy jest to dzierżawa uczestnika, czy dzierżawa bota.

"properties": {
    "identifier": "b1999c3e-bbbb-4650-9b23-9999bdabab47",
    "callStartTime": "2022-08-07T13:53:12Z",
    "callDuration": 1470,
    "callType": "Group",
    "teamsThreadId": "19:36ec5177126fff000aaa521670c804a3@thread.v2",
    "participantId": " b25cf111-73df-4e0a-a888-640000abe34d",
    "participantStartTime": "2022-08-07T13:56:45Z",
    "participantDuration": 960,
    "participantEndReason": "0",
    "endpointId": "8731d003-6c1e-4808-8159-effff000aaa2",
    "endpointType": "PSTN",
    "sdkVersion": "Redacted",
    "osVersion": "Redacted"
}

Wywoływanie dzienników diagnostycznych

Wywołaj informacje o operacji udostępniania dzienników diagnostycznych:

"operationName":            "CallDiagnostics",
"operationVersion":         "1.0",
"category":                 "CallDiagnostics",

Oto dziennik diagnostyczny strumienia audio z punktu końcowego VoIP 1 do punktu końcowego VoIP 2:

"properties": {
    "identifier":           "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
    "participantId":        "null",
    "endpointId":           "570ea078-74e9-4430-9c67-464ba1fa5859",
    "endpointType":         "VoIP",
    "mediaType":            "Audio",
    "streamId":             "1000",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "82",
    "roundTripTimeMax":     "88",
    "jitterAvg":            "1",
    "jitterMax":            "1",
    "packetLossRateAvg":    "0",
    "packetLossRateMax":    "0"
}

Oto dziennik diagnostyczny strumienia audio z punktu końcowego VoIP 2 do punktu końcowego VoIP 1:

"properties": {
    "identifier":           "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
    "participantId":        "null",
    "endpointId":           "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
    "endpointType":         "VoIP",
    "mediaType":            "Audio",
    "streamId":             "1363841599",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "78",
    "roundTripTimeMax":     "84",
    "jitterAvg":            "1",
    "jitterMax":            "1",
    "packetLossRateAvg":    "0",
    "packetLossRateMax":    "0"
}

Oto dziennik diagnostyczny strumienia wideo z punktu końcowego VoIP 1 do punktu końcowego VoIP 2:

"properties": {
    "identifier":           "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
    "participantId":        "null",
    "endpointId":           "570ea078-74e9-4430-9c67-464ba1fa5859",
    "endpointType":         "VoIP",
    "mediaType":            "Video",
    "streamId":             "2804",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "103",
    "roundTripTimeMax":     "143",
    "jitterAvg":            "0",
    "jitterMax":            "4",
    "packetLossRateAvg":    "3.146336E-05",
    "packetLossRateMax":    "0.001769911"
}

Rozmowa grupowa

Dane dla wywołania grupy są generowane w trzech dziennikach podsumowania wywołań i sześciu dziennikach diagnostycznych wywołań. Oto pola udostępnione dla wszystkich dzienników w wywołaniu:

"time":                     "2021-07-05T06:30:06.402Z",
"resourceId":               "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId":            "341acde7-8aa5-445b-a3da-2ddadca47d22",

Dzienniki podsumowania wywołań

Dzienniki podsumowania wywołań zawierają informacje o udostępnionej operacji i kategorii:

"operationName":            "CallSummary",
"operationVersion":         "1.0",
"category":                 "CallSummary",

Oto podsumowanie wywołań dla punktu końcowego VoIP 1:

"properties": {
    "identifier":               "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
    "callStartTime":            "2021-07-05T06:16:40.240Z",
    "callDuration":             87,
    "callType":                 "Group",
    "teamsThreadId":            "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
    "participantId":            "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
    "participantStartTime":     "2021-07-05T06:16:44.235Z",
    "participantDuration":      "82",
    "participantEndReason":     "0",
    "endpointId":               "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
    "endpointType":             "VoIP",
    "sdkVersion":               "1.0.0.3",
    "osVersion":                "Darwin Kernel Version 18.7.0: Mon Nov 9 15:07:15 PST 2020; root:xnu-4903.272.3~3/RELEASE_ARM64_S5L8960X"
}

Oto podsumowanie wywołań dla punktu końcowego VoIP 3:

"properties": {
    "identifier":               "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
    "callStartTime":            "2021-07-05T06:16:40.240Z",
    "callDuration":             87,
    "callType":                 "Group",
    "teamsThreadId":            "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLTk2ZDUtYTZlM2I2ZjgxOTkw@thread.v2",
    "participantId":            "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
    "participantStartTime":     "2021-07-05T06:16:40.240Z",
    "participantDuration":      "87",
    "participantEndReason":     "0",
    "endpointId":               "5ebd55df-ffff-ffff-ab89-19ff584890b7",
    "endpointType":             "VoIP",
    "sdkVersion":               "1.0.0.3",
    "osVersion":                "Android 11.0; Manufacturer: Google; Product: redfin; Model: Pixel 5; Hardware: redfin"
}

Oto podsumowanie wywołań dla punktu końcowego PSTN 2:

"properties": {
    "identifier":               "null",
    "callStartTime":            "2021-07-05T06:16:40.240Z",
    "callDuration":             87,
    "callType":                 "Group",
    "teamsThreadId":            "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
    "participantId":            "515650f7-8204-4079-ac9d-d8f4bf07b04c",
    "participantStartTime":     "2021-07-05T06:17:10.447Z",
    "participantDuration":      "52",
    "participantEndReason":     "0",
    "endpointId":               "46387150-692a-47be-8c9d-1237efe6c48b",
    "endpointType":             "PSTN",
    "sdkVersion":               "null",
    "osVersion":                "null"
}

Oto dziennik podsumowania wywołań między dzierżawami:

"properties": {
    "identifier":               "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
    "callStartTime":            "2022-08-14T06:18:27.010Z",
    "callDuration":             912,
    "callType":                 "Group",
    "teamsThreadId":            "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
    "participantId":            "aa1dd7da-5922-4bb1-a4fa-e350a111fd9c",
    "participantTenantId":      "02cbdb3c-155a-4b95-b829-6d56a45787ca",
    "participantStartTime":     "2022-08-14T06:18:27.010Z",
    "participantDuration":      "902",
    "participantEndReason":     "0",
    "endpointId":               "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
    "endpointType":             "VoIP",
    "sdkVersion":               "Redacted",
    "osVersion":                "Redacted"
}

Oto dziennik podsumowania wywołań między dzierżawami z botem jako uczestnikiem:


"properties": {
    "identifier":             "b1902c3e-b9f7-4650-9b23-9999bdabab47",
    "callStartTime":          "2022-08-09T16:00:32Z",
    "callDuration":            1470,
    "callType":               "Group",
    "teamsThreadId":         "19:meeting_MmQwZDcwYTQtZ000HWE6NzI4LTg1YTAtNXXXXX99999ZZZZZ@thread.v2",
    "participantId":           "66e9d9a7-a434-4663-d91d-fb1ea73ff31e",
    "participantStartTime":    "2022-08-09T16:14:18Z",
    "participantDuration":      644,
    "participantEndReason":    "0",
    "endpointId":             "69680ec2-5ac0-4a3c-9574-eaaa77720b82",
    "endpointType":           "Bot",
    "sdkVersion":             "Redacted",
    "osVersion":              "Redacted"
}

Wywoływanie dzienników diagnostycznych

Wywołaj informacje o operacji udostępniania dzienników diagnostycznych:

"operationName":            "CallDiagnostics",
"operationVersion":         "1.0",
"category":                 "CallDiagnostics",

Oto dziennik diagnostyczny strumienia audio z punktu końcowego VoIP 1 do punktu końcowego serwera:

"properties": {
    "identifier":           "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
    "participantId":        "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
    "endpointId":           "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
    "endpointType":         "VoIP",
    "mediaType":            "Audio",
    "streamId":             "14884",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "46",
    "roundTripTimeMax":     "48",
    "jitterAvg":            "0",
    "jitterMax":            "1",
    "packetLossRateAvg":    "0",
    "packetLossRateMax":    "0"
}

Oto dziennik diagnostyczny strumienia audio z punktu końcowego serwera do punktu końcowego VoIP 1:

"properties": {
    "identifier":           null,
    "participantId":        "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
    "endpointId":           null,
    "endpointType":         "Server",
    "mediaType":            "Audio",
    "streamId":             "2001",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "42",
    "roundTripTimeMax":     "44",
    "jitterAvg":            "1",
    "jitterMax":            "1",
    "packetLossRateAvg":    "0",
    "packetLossRateMax":    "0"
}

Oto dziennik diagnostyczny strumienia audio z punktu końcowego VoIP 3 do punktu końcowego serwera:

"properties": {
    "identifier":           "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
    "participantId":        "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
    "endpointId":           "5ebd55df-ffff-ffff-ab89-19ff584890b7",
    "endpointType":         "VoIP",
    "mediaType":            "Audio",
    "streamId":             "13783",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "45",
    "roundTripTimeMax":     "46",
    "jitterAvg":            "1",
    "jitterMax":            "2",
    "packetLossRateAvg":    "0",
    "packetLossRateMax":    "0"
}

Oto dziennik diagnostyczny strumienia audio z punktu końcowego serwera do punktu końcowego VoIP 3:

"properties": {
    "identifier":           "null",
    "participantId":        "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
    "endpointId":           null,
    "endpointType":         "Server"    
    "mediaType":            "Audio",
    "streamId":             "1000",
    "transportType":        "UDP",
    "roundTripTimeAvg":     "45",
    "roundTripTimeMax":     "46",
    "jitterAvg":            "1",
    "jitterMax":            "4",
    "packetLossRateAvg":    "0",

Wywoływanie dzienników operacji klienta dla połączeń P2P i grup

W przypadku dziennika operacji klienta wywołania nie ma różnicy między scenariuszami P2P i wywołaniami grupowymi, a liczba dzienników zależy od operacji zestawu SDK i czasu trwania wywołania. Poniżej przedstawiono kilka ogólnych przykładów, które pokazują schemat tych dzienników.

Wywoływanie dziennika operacji klienta

Oto dziennik operacji klienta wywołania dla operacji "CreateView":

"properties": {
    "TenantId":               "4e7403f8-515a-4df5-8e13-59f0e2b76e3a",
    "TimeGenerated":          "2024-01-09T17:06:50.3Z",
    "CallClientTimeStamp":    "2024-01-09T15:07:56.066Z",
    "OperationName":          "CreateView" ,   
    "CallId":                 "92d800c4-abde-40be-91e9-3814ee786b19",
    "ParticipantId":          "2656fd6c-6d4a-451d-a1a5-ce1baefc4d5c",
    "OperationType":          "client-api-request",
    "OperationId":            "0d987336-37e0-4acc-aba3-e48741d88103",
    "DurationMs":             "577",
    "ResultType":             "Succeeded",
    "ResultSignature":        "200",
    "SdkVersion":             "1.19.2.2_beta",
    "UserAgent":              "azure-communication-services/1.3.1-beta.1 azsdk-js-communication-calling/1.19.2-beta.2 (javascript_calling_sdk;#clientTag:904f667c-5f25-4729-9ee8-6968b0eaa40b). Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "ClientInstanceId":       "d08a3d05-db90-415f-88a7-87ae74edc1dd",
    "OperationPayload":       "{"StreamType":"Video","StreamId":"2.0","Source":"remote","RemoteParticipantId":"remote"}",
    "Type":                   "ACSCallClientOperations"
}

Każdy uczestnik może mieć wiele różnych metryk dla wywołania. Następujące zapytanie można uruchomić w usłudze Log Analytics w witrynie Azure Portal, aby wyświetlić listę wszystkich możliwych operacji w dzienniku operacji klienta wywołania:

ACSCallClientOperations | distinct OperationName

Kody błędów

Właściwość participantEndReason zawiera wartość z zestawu kodów błędów wywoływania zestawu SDK. Możesz zapoznać się z tymi kodami, aby rozwiązać problemy podczas wywołania dla każdego punktu końcowego. Zobacz Rozwiązywanie problemów w usługach Azure Communication Services.

Następne kroki