diff --git a/sdk/communication/azure-communication-callautomation/assets.json b/sdk/communication/azure-communication-callautomation/assets.json index f0befc41fe2e..5e9d43fab9d6 100644 --- a/sdk/communication/azure-communication-callautomation/assets.json +++ b/sdk/communication/azure-communication-callautomation/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "python", "TagPrefix": "python/communication/azure-communication-callautomation", - "Tag": "python/communication/azure-communication-callautomation_135357fbdb" + "Tag": "python/communication/azure-communication-callautomation_6fe3b5881c" } diff --git a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_shared/policy.py b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_shared/policy.py +++ b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case.py b/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case.py index af4949a70030..67a522642874 100644 --- a/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case.py +++ b/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case.py @@ -128,16 +128,16 @@ def _message_awaiter(self, unique_id) -> None: unique_id = self._unique_key_gen(caller, receiver) key = self._event_key_gen("IncomingCall") print("EventRegistration(IncomingCall):" + key) - self.event_store[key] = mapper - self.event_to_save[key] = mapper + self.event_store.setdefault(key, []).append(mapper) + self.event_to_save.setdefault(key, []).append(mapper) else: if isinstance(mapper, list): mapper = mapper[0] if mapper["type"]: key = self._event_key_gen(mapper["type"].split(".")[-1]) print("EventRegistration:" + key) - self.event_store[key] = mapper - self.event_to_save[key] = mapper + self.event_store.setdefault(key, []).append(mapper) + self.event_to_save.setdefault(key, []).append(mapper) service_bus_receiver.complete_message(msg) time.sleep(1) return @@ -148,7 +148,10 @@ def _prepare_events_recording(self) -> None: file_path = self._get_test_event_file_name() try: with open(file_path, "r") as json_file: - self.event_store = json.load(json_file) + loaded_events = json.load(json_file) + self.event_store = { + key: value if isinstance(value, list) else [value] for key, value in loaded_events.items() + } except IOError as e: raise SystemExit(f"File write operation failed: {e}") @@ -168,8 +171,11 @@ def check_for_event(self, event_type: str, call_connection_id: str, wait_time: t key = self._event_key_gen(event_type) time_out_time = datetime.now() + wait_time while datetime.now() < time_out_time: - popped_event = self.event_store.pop(key, None) - if popped_event is not None: + events = self.event_store.get(key) + if events: + popped_event = events.pop(0) + if not events: + self.event_store.pop(key, None) print(f"Matching Event Found [{key}]") return popped_event time.sleep(1) @@ -318,8 +324,10 @@ def terminate_call(self, unique_id) -> None: pass def redact_by_key(self, data: Dict[str, Dict[str, any]], keys_to_redact: List[str]) -> Dict[str, Dict[str, any]]: - for _, inner_dict in data.items(): - for key in keys_to_redact: - if key in inner_dict: - inner_dict[key] = "REDACTED" + for _, value in data.items(): + events = value if isinstance(value, list) else [value] + for inner_dict in events: + for key in keys_to_redact: + if key in inner_dict: + inner_dict[key] = "REDACTED" return data diff --git a/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case_async.py b/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case_async.py index c2e32362135b..2243cd3f5766 100644 --- a/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case_async.py +++ b/sdk/communication/azure-communication-callautomation/tests/callautomation_test_case_async.py @@ -154,16 +154,16 @@ def _message_awaiter(self, unique_id) -> None: unique_id = self._unique_key_gen(caller, receiver) key = self._event_key_gen("IncomingCall") print("EventRegistration(IncomingCall):" + key) - self.event_store[key] = mapper - self.event_to_save[key] = mapper + self.event_store.setdefault(key, []).append(mapper) + self.event_to_save.setdefault(key, []).append(mapper) else: if isinstance(mapper, list): mapper = mapper[0] if mapper["type"]: key = self._event_key_gen(mapper["type"].split(".")[-1]) print("EventRegistration:" + key) - self.event_store[key] = mapper - self.event_to_save[key] = mapper + self.event_store.setdefault(key, []).append(mapper) + self.event_to_save.setdefault(key, []).append(mapper) service_bus_receiver.complete_message(msg) time.sleep(1) return @@ -174,7 +174,10 @@ def _prepare_events_recording(self) -> None: if not is_live(): file_path = self._get_test_event_file_name() with open(file_path, "r") as json_file: - self.event_store = json.load(json_file) + loaded_events = json.load(json_file) + self.event_store = { + key: value if isinstance(value, list) else [value] for key, value in loaded_events.items() + } except Exception as e: # Don't fail test setup for file I/O issues print(f"Warning: Event loading failed: {e}") @@ -197,8 +200,11 @@ def check_for_event(self, event_type: str, call_connection_id: str, wait_time: t key = self._event_key_gen(event_type) time_out_time = datetime.now() + wait_time while datetime.now() < time_out_time: - popped_event = self.event_store.pop(key, None) - if popped_event is not None: + events = self.event_store.get(key) + if events: + popped_event = events.pop(0) + if not events: + self.event_store.pop(key, None) print(f"Matching Event Found [{key}]") return popped_event time.sleep(1) @@ -349,8 +355,10 @@ async def terminate_call(self, unique_id) -> None: pass def redact_by_key(self, data: Dict[str, Dict[str, any]], keys_to_redact: List[str]) -> Dict[str, Dict[str, any]]: - for _, inner_dict in data.items(): - for key in keys_to_redact: - if key in inner_dict: - inner_dict[key] = "REDACTED" + for _, value in data.items(): + events = value if isinstance(value, list) else [value] + for inner_dict in events: + for key in keys_to_redact: + if key in inner_dict: + inner_dict[key] = "REDACTED" return data diff --git a/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client.pyTestCallAutomationClientAutomatedLiveTesttest_create_VOIP_call_and_connect_call_then_hangup.event.json b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client.pyTestCallAutomationClientAutomatedLiveTesttest_create_VOIP_call_and_connect_call_then_hangup.event.json new file mode 100644 index 000000000000..e38d223faefe --- /dev/null +++ b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client.pyTestCallAutomationClientAutomatedLiveTesttest_create_VOIP_call_and_connect_call_then_hangup.event.json @@ -0,0 +1 @@ +{"IncomingCall": [{"to": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e"}}, "from": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d"}}, "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "callerDisplayName": "REDACTED", "incomingCallContext": "REDACTED", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405"}], "CallConnected": [{"id": "8c28bcd2-28bd-4f79-8f63-e568799d9534", "source": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:02:00.1738872+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7"}, {"id": "131212e5-49e0-4dfa-92c6-b5a920215794", "source": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-7400-423c-938e-55c024d7f07f", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:02:04.3207832+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f"}], "ParticipantsUpdated": [{"id": "3af6e672-95a9-4c50-af5b-4e874b5b24a8", "source": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 1, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:02:00.278608+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7"}, {"id": "16d27faa-543e-4d6b-8bee-cc7e8a9e0b7e", "source": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 2, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-7400-423c-938e-55c024d7f07f", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:02:04.3168271+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f"}, {"id": "5ead2177-f6e4-4918-88db-bed9e3d4afb4", "source": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f320-e858-8b3a0d001d5d"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-f411-e858-8b3a0d001d5e"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 3, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-7400-423c-938e-55c024d7f07f", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:02:04.4023692+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-7400-423c-938e-55c024d7f07f"}], "CallDisconnected": [{"id": "e6589f64-d73f-46b6-ad98-ecad1dc497bf", "source": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "type": "Microsoft.Communication.CallDisconnected", "data": {"resultInformation": {"code": 200, "subCode": 7000, "message": "Call was ended by Azure Communication Service Call Automation API or a server bot. DiagCode: 0#7000.@"}, "version": "2026-03-12", "callConnectionId": "14006580-99df-4c2e-9b8f-8a27d2d8e2b7", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDEtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi95b2YxdUpaNy0wMll5alBSdXB0VzZ3P2k9MTAtMTI4LTk2LTE1MCZlPTYzOTE3MTYwMDIxMTY0MzgyNw==", "correlationId": "556fd844-6c9c-4110-9082-b2b3b22df405", "publicEventType": "Microsoft.Communication.CallDisconnected"}, "time": "2026-06-17T16:02:06.9079717+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-99df-4c2e-9b8f-8a27d2d8e2b7"}]} \ No newline at end of file diff --git a/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client_async.pyTestCallAutomationClientAutomatedLiveTestAsynctest_create_VOIP_call_connect_call_hangup_async.event.json b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client_async.pyTestCallAutomationClientAutomatedLiveTestAsynctest_create_VOIP_call_connect_call_hangup_async.event.json new file mode 100644 index 000000000000..b7dfc1cac7fb --- /dev/null +++ b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_callautomation_client_async.pyTestCallAutomationClientAutomatedLiveTestAsynctest_create_VOIP_call_connect_call_hangup_async.event.json @@ -0,0 +1 @@ +{"IncomingCall": [{"to": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58"}}, "from": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57"}}, "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "callerDisplayName": "REDACTED", "incomingCallContext": "REDACTED", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60"}], "CallConnected": [{"id": "f1df5e99-5ef9-4c1a-b86c-8c309f013eb9", "source": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-e14e-4333-9780-9c42149a28f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:01:44.664175+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5"}, {"id": "3011eb61-7b75-40e6-a508-c037cff379fe", "source": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-e05e-4d2a-a575-3b3ba10b55f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:01:48.9412064+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5"}], "ParticipantsUpdated": [{"id": "4f6061c7-b5b9-4d4d-b6fb-30bb4aae8cb9", "source": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 1, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-e14e-4333-9780-9c42149a28f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:01:44.711631+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5"}, {"id": "80ad2225-c1b2-4b0d-9ac2-1e01d8dce328", "source": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 2, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-e05e-4d2a-a575-3b3ba10b55f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:01:48.9333479+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5"}, {"id": "01e2ba6d-614d-4886-88a1-b17800d1ff25", "source": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a47f-e858-8b3a0d001d58"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-7632-a3ab-e858-8b3a0d001d57"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 3, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "14006580-e05e-4d2a-a575-3b3ba10b55f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:01:49.1411955+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e05e-4d2a-a575-3b3ba10b55f5"}], "CallDisconnected": [{"id": "b8343d10-5a2b-4619-af00-9c0c29db8c87", "source": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5", "type": "Microsoft.Communication.CallDisconnected", "data": {"resultInformation": {"code": 200, "subCode": 7000, "message": "Call was ended by Azure Communication Service Call Automation API or a server bot. DiagCode: 0#7000.@"}, "version": "2026-03-12", "callConnectionId": "14006580-e14e-4333-9780-9c42149a28f5", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDQtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9KUUhJWkhFTncwS3p6TzlhdmJEOGJBP2k9MTAtMTI4LTYxLTE1MSZlPTYzOTE2NzM4NDg5MTkzNjc4NQ==", "correlationId": "bea29ff0-c992-4448-b275-8d02479f7a60", "publicEventType": "Microsoft.Communication.CallDisconnected"}, "time": "2026-06-17T16:01:51.4259023+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/14006580-e14e-4333-9780-9c42149a28f5"}]} \ No newline at end of file diff --git a/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_hold_unhold_participant_in_a_call.event.json b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_hold_unhold_participant_in_a_call.event.json new file mode 100644 index 000000000000..cb803b0905f3 --- /dev/null +++ b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_hold_unhold_participant_in_a_call.event.json @@ -0,0 +1 @@ +{"IncomingCall": [{"to": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144"}}, "from": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143"}}, "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "callerDisplayName": "REDACTED", "incomingCallContext": "REDACTED", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f"}], "CallConnected": [{"id": "043d8cff-7bf2-4e34-ab2e-4552cbb5de76", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:10:59.4952862+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}], "ParticipantsUpdated": [{"id": "fb3d92a2-f758-4bf1-8cc3-b94532f7102d", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 1, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:10:59.5886299+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}, {"id": "af92aa1d-a1ed-4de3-a4b5-ca05cc8bf536", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 3, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:11:01.7946521+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}, {"id": "010fafc8-efaf-4c93-8292-1856683bbec3", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144"}}, "isMuted": false, "isOnHold": true}], "sequenceNumber": 5, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:11:04.7591525+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}, {"id": "320f4a1a-5554-4699-8dd0-79428802b235", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2eb3-1514-3c8ded7c7143"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763b-2ef2-1514-3c8ded7c7144"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 6, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:11:07.0992514+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}], "CallDisconnected": [{"id": "c5c343af-9efd-4589-889b-b55c6f51f3b8", "source": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3", "type": "Microsoft.Communication.CallDisconnected", "data": {"resultInformation": {"code": 200, "subCode": 7000, "message": "Call was ended by Azure Communication Service Call Automation API or a server bot. DiagCode: 0#7000.@"}, "version": "2026-03-12", "callConnectionId": "3d006680-6cba-4edc-9bba-79393814a4a3", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDItcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi9UUWVEZmFsZ09rMmxVMnBpcWpaWHdnP2k9MTAtMTI4LTc1LTE5OCZlPTYzOTE3MjM4MzU3MzkwMDc2Ng==", "correlationId": "a5d99d7d-317d-44cd-868d-57d138d4ce6f", "publicEventType": "Microsoft.Communication.CallDisconnected"}, "time": "2026-06-17T16:11:09.2950199+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-6cba-4edc-9bba-79393814a4a3"}]} \ No newline at end of file diff --git a/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_mute_participant_in_a_call.event.json b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_mute_participant_in_a_call.event.json new file mode 100644 index 000000000000..5be74bab4afd --- /dev/null +++ b/sdk/communication/azure-communication-callautomation/tests/events/test_e2e_media_client_async.pyTestMediaAutomatedLiveTestAsynctest_add_and_mute_participant_in_a_call.event.json @@ -0,0 +1 @@ +{"IncomingCall": [{"to": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138"}}, "from": {"kind": "communicationUser", "rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137"}}, "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "callerDisplayName": "REDACTED", "incomingCallContext": "REDACTED", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156"}], "CallConnected": [{"id": "6baaf3b5-9158-444d-8e1a-15e69138bf32", "source": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81", "type": "Microsoft.Communication.CallConnected", "data": {"resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-bcc7-4827-8daa-2a955f196f81", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156", "publicEventType": "Microsoft.Communication.CallConnected"}, "time": "2026-06-17T16:10:44.2048154+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81"}], "ParticipantsUpdated": [{"id": "9194da24-4d7e-46e1-bb19-8c27fe9791b1", "source": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 1, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-bcc7-4827-8daa-2a955f196f81", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:10:44.3133566+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81"}, {"id": "43a1536d-2495-403f-b319-67c0c57ec01b", "source": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138"}}, "isMuted": false, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 3, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-bcc7-4827-8daa-2a955f196f81", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:10:47.7163421+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81"}, {"id": "a433cd0e-f6e3-40c5-8311-cd9f6139f912", "source": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81", "type": "Microsoft.Communication.ParticipantsUpdated", "data": {"participants": [{"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-ea0b-1514-3c8ded7c7138"}}, "isMuted": true, "isOnHold": false}, {"identifier": {"rawId": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137", "kind": "communicationUser", "communicationUser": {"id": "8:acs:6d889502-3d7a-41a8-befa-d21fd80e8767_0000002f-763a-e9c2-1514-3c8ded7c7137"}}, "isMuted": false, "isOnHold": false}], "sequenceNumber": 4, "resultInformation": {"code": 200, "subCode": 0, "message": ""}, "version": "2026-03-12", "callConnectionId": "3d006680-bcc7-4827-8daa-2a955f196f81", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156", "publicEventType": "Microsoft.Communication.ParticipantsUpdated"}, "time": "2026-06-17T16:10:49.7408482+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81"}], "CallDisconnected": [{"id": "0737d48b-4a1a-4fe1-a16a-29c4d7d0130c", "source": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81", "type": "Microsoft.Communication.CallDisconnected", "data": {"resultInformation": {"code": 200, "subCode": 7000, "message": "Call was ended by Azure Communication Service Call Automation API or a server bot. DiagCode: 0#7000.@"}, "version": "2026-03-12", "callConnectionId": "3d006680-bcc7-4827-8daa-2a955f196f81", "serverCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzY2UtMDUtcHJvZC1ha3MuY29udi5za3lwZS5jb20vY29udi94ZHFBNmhyREprYU1feDNfa2s5dm9BP2k9MTAtMTI4LTEyLTEyOSZlPTYzOTE2NzM4MTE0MTYyMjczNg==", "correlationId": "a6e73ca3-9d23-4113-9af1-e8e2e265a156", "publicEventType": "Microsoft.Communication.CallDisconnected"}, "time": "2026-06-17T16:10:51.9666667+00:00", "specversion": "1.0", "datacontenttype": "application/json", "subject": "calling/callConnections/3d006680-bcc7-4827-8daa-2a955f196f81"}]} \ No newline at end of file diff --git a/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client.py b/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client.py index 42d72db07030..bbcc3d813215 100644 --- a/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client.py +++ b/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client.py @@ -77,10 +77,6 @@ def test_add_participant_then_cancel_request(self): self.terminate_call(unique_id) return - @pytest.mark.skip( - reason="""Playback fails for same event type triggered and test recording code - takes the event type has the dictionary it fails to recording call connected event for the connect api""" - ) @recorded_by_proxy def test_create_VOIP_call_and_connect_call_then_hangup(self): # try to establish the call diff --git a/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client_async.py b/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client_async.py index 14ae99fb8b5d..bf7e26a68294 100644 --- a/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client_async.py +++ b/sdk/communication/azure-communication-callautomation/tests/test_e2e_callautomation_client_async.py @@ -67,10 +67,6 @@ async def test_add_participant_then_cancel_request_async(self): await self.terminate_call(call_connection_id) - @pytest.mark.skip( - reason="""Playback fails for same event type triggered and test recording code - takes the event type has the dictionary it fails to recording call connected event for the connect api""" - ) @recorded_by_proxy_async async def test_create_VOIP_call_connect_call_hangup_async(self): # try to establish the call diff --git a/sdk/communication/azure-communication-callautomation/tests/test_e2e_media_client_async.py b/sdk/communication/azure-communication-callautomation/tests/test_e2e_media_client_async.py index c170b18cffcc..2e16c698d973 100644 --- a/sdk/communication/azure-communication-callautomation/tests/test_e2e_media_client_async.py +++ b/sdk/communication/azure-communication-callautomation/tests/test_e2e_media_client_async.py @@ -72,9 +72,6 @@ async def test_play_media_in_a_call(self): await self.terminate_call(unique_id) # Do not return anything from this test method - @pytest.mark.skip( - reason="Known issues - Bug 3949487: [GA4] [Python] [SDK] [Async] Get Participant fails with authentication error HMAC-SHA256, Bug 4182867: [SDK] Hmac Validation with ':' (GetParticipant) mismatch" - ) @recorded_by_proxy_async async def test_add_and_mute_participant_in_a_call(self): caller = await self.identity_client.create_user() @@ -117,9 +114,6 @@ async def test_add_and_mute_participant_in_a_call(self): await self.terminate_call(unique_id) - @pytest.mark.skip( - reason="Known issues - Bug 3949487: [GA4] [Python] [SDK] [Async] Get Participant fails with authentication error HMAC-SHA256, Bug 4182867: [SDK] Hmac Validation with ':' (GetParticipant) mismatch" - ) @recorded_by_proxy_async async def test_add_and_hold_unhold_participant_in_a_call(self): caller = await self.identity_client.create_user() diff --git a/sdk/communication/azure-communication-chat/azure/communication/chat/_shared/policy.py b/sdk/communication/azure-communication-chat/azure/communication/chat/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-chat/azure/communication/chat/_shared/policy.py +++ b/sdk/communication/azure-communication-chat/azure/communication/chat/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-email/azure/communication/email/_shared/policy.py b/sdk/communication/azure-communication-email/azure/communication/email/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-email/azure/communication/email/_shared/policy.py +++ b/sdk/communication/azure-communication-email/azure/communication/email/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-identity/azure/communication/identity/_shared/policy.py b/sdk/communication/azure-communication-identity/azure/communication/identity/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-identity/azure/communication/identity/_shared/policy.py +++ b/sdk/communication/azure-communication-identity/azure/communication/identity/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-jobrouter/azure/communication/jobrouter/_shared/policy.py b/sdk/communication/azure-communication-jobrouter/azure/communication/jobrouter/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-jobrouter/azure/communication/jobrouter/_shared/policy.py +++ b/sdk/communication/azure-communication-jobrouter/azure/communication/jobrouter/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-messages/azure/communication/messages/_shared/policy.py b/sdk/communication/azure-communication-messages/azure/communication/messages/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-messages/azure/communication/messages/_shared/policy.py +++ b/sdk/communication/azure-communication-messages/azure/communication/messages/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-phonenumbers/azure/communication/phonenumbers/_shared/policy.py b/sdk/communication/azure-communication-phonenumbers/azure/communication/phonenumbers/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-phonenumbers/azure/communication/phonenumbers/_shared/policy.py +++ b/sdk/communication/azure-communication-phonenumbers/azure/communication/phonenumbers/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-rooms/azure/communication/rooms/_shared/policy.py b/sdk/communication/azure-communication-rooms/azure/communication/rooms/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-rooms/azure/communication/rooms/_shared/policy.py +++ b/sdk/communication/azure-communication-rooms/azure/communication/rooms/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url) diff --git a/sdk/communication/azure-communication-sms/azure/communication/sms/_shared/policy.py b/sdk/communication/azure-communication-sms/azure/communication/sms/_shared/policy.py index 6eae18574193..102db9736d76 100644 --- a/sdk/communication/azure-communication-sms/azure/communication/sms/_shared/policy.py +++ b/sdk/communication/azure-communication-sms/azure/communication/sms/_shared/policy.py @@ -63,33 +63,6 @@ def _sign_request(self, request: PipelineRequest) -> None: if parsed_url.query: query_url += "?" + parsed_url.query - # Need URL() to get a correct encoded key value, from "%3A" to ":", when transport is in type AioHttpTransport. - # There's a similar scenario in azure-storage-blob and azure-appconfiguration, the check logic is from there. - try: - from yarl import URL - from azure.core.pipeline.transport import ( # pylint:disable=non-abstract-transport-import - AioHttpTransport, - ) - - if ( - isinstance(request.context.transport, AioHttpTransport) - or isinstance( - getattr(request.context.transport, "_transport", None), - AioHttpTransport, - ) - or isinstance( - getattr( - getattr(request.context.transport, "_transport", None), - "_transport", - None, - ), - AioHttpTransport, - ) - ): - query_url = str(URL(query_url)) - except (ImportError, TypeError): - pass - if self._decode_url: query_url = unquote(query_url)