diff --git a/sdk/communication/azure-communication-callautomation/api.md b/sdk/communication/azure-communication-callautomation/api.md index 0829a7c75f2c..bf69b3fff7d2 100644 --- a/sdk/communication/azure-communication-callautomation/api.md +++ b/sdk/communication/azure-communication-callautomation/api.md @@ -430,6 +430,7 @@ namespace azure.communication.callautomation self, target_participant: CommunicationIdentifier, *, + operation_callback_url: Optional[str] = ..., operation_context: Optional[str] = ..., **kwargs ) -> None: ... @@ -1511,6 +1512,7 @@ namespace azure.communication.callautomation.aio self, target_participant: CommunicationIdentifier, *, + operation_callback_url: Optional[str] = ..., operation_context: Optional[str] = ..., **kwargs ) -> None: ... diff --git a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_call_connection_client.py b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_call_connection_client.py index 076c2f41920a..ed799728323f 100644 --- a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_call_connection_client.py +++ b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/_call_connection_client.py @@ -822,6 +822,7 @@ def start_continuous_dtmf_recognition( target_participant: "CommunicationIdentifier", *, operation_context: Optional[str] = None, + operation_callback_url: Optional[str] = None, **kwargs, ) -> None: """Start continuous Dtmf recognition by subscribing to tones. @@ -830,6 +831,11 @@ def start_continuous_dtmf_recognition( :type target_participant: ~azure.communication.callautomation.CommunicationIdentifier :keyword operation_context: The value to identify context of the operation. :paramtype operation_context: str + :keyword operation_callback_url: Set a callback URL that overrides the default callback URL set + by CreateCall/AnswerCall for this operation. + This setup is per-action. If this is not set, the default callback URL set by + CreateCall/AnswerCall will be used. + :paramtype operation_callback_url: str or None :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: @@ -837,6 +843,7 @@ def start_continuous_dtmf_recognition( continuous_dtmf_recognition_request = ContinuousDtmfRecognitionRequest( target_participant=serialize_identifier(target_participant), operation_context=operation_context, + operation_callback_uri=operation_callback_url, ) self._call_media_client.start_continuous_dtmf_recognition( self._call_connection_id, continuous_dtmf_recognition_request, **kwargs diff --git a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/aio/_call_connection_client_async.py b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/aio/_call_connection_client_async.py index 0c7db6a4661b..d06e2ed88e88 100644 --- a/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/aio/_call_connection_client_async.py +++ b/sdk/communication/azure-communication-callautomation/azure/communication/callautomation/aio/_call_connection_client_async.py @@ -823,6 +823,7 @@ async def start_continuous_dtmf_recognition( target_participant: "CommunicationIdentifier", *, operation_context: Optional[str] = None, + operation_callback_url: Optional[str] = None, **kwargs, ) -> None: """Start continuous Dtmf recognition by subscribing to tones. @@ -831,12 +832,19 @@ async def start_continuous_dtmf_recognition( :type target_participant: ~azure.communication.callautomation.CommunicationIdentifier :keyword operation_context: Value that can be used to track this call and its associated events. :paramtype operation_context: str + :keyword operation_callback_url: Set a callback URL that overrides the default callback URL set + by CreateCall/AnswerCall for this operation. + This setup is per-action. If this is not set, the default callback URL set by + CreateCall/AnswerCall will be used. + :paramtype operation_callback_url: str or None :return: None :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ continuous_dtmf_recognition_request = ContinuousDtmfRecognitionRequest( - target_participant=serialize_identifier(target_participant), operation_context=operation_context + target_participant=serialize_identifier(target_participant), + operation_context=operation_context, + operation_callback_uri=operation_callback_url, ) await self._call_media_client.start_continuous_dtmf_recognition( self._call_connection_id, continuous_dtmf_recognition_request, **kwargs diff --git a/sdk/communication/azure-communication-callautomation/tests/test_call_media_client.py b/sdk/communication/azure-communication-callautomation/tests/test_call_media_client.py index da8b144107ef..27289289047f 100644 --- a/sdk/communication/azure-communication-callautomation/tests/test_call_media_client.py +++ b/sdk/communication/azure-communication-callautomation/tests/test_call_media_client.py @@ -523,10 +523,16 @@ def test_cancel(self): def test_start_continuous_dtmf_recognition(self): mock_start_continuous_dtmf_recognition = Mock() self.call_media_operations.start_continuous_dtmf_recognition = mock_start_continuous_dtmf_recognition - self.call_connection_client.start_continuous_dtmf_recognition(target_participant=self.target_user) + self.call_connection_client.start_continuous_dtmf_recognition( + target_participant=self.target_user, + operation_context=self.operation_context, + operation_callback_url=self.operation_callback_url, + ) expected_continuous_dtmf_recognition_request = ContinuousDtmfRecognitionRequest( - target_participant=serialize_identifier(self.target_user) + target_participant=serialize_identifier(self.target_user), + operation_context=self.operation_context, + operation_callback_uri=self.operation_callback_url, ) mock_start_continuous_dtmf_recognition.assert_called_once() @@ -542,6 +548,10 @@ def test_start_continuous_dtmf_recognition(self): expected_continuous_dtmf_recognition_request.operation_context, actual_start_continuous_dtmf_recognition.operation_context, ) + self.assertEqual( + expected_continuous_dtmf_recognition_request.operation_callback_uri, + actual_start_continuous_dtmf_recognition.operation_callback_uri, + ) def test_stop_continuous_dtmf_recognition(self): mock_stop_continuous_dtmf_recognition = Mock() diff --git a/sdk/communication/azure-communication-callautomation/tests/test_call_media_client_async.py b/sdk/communication/azure-communication-callautomation/tests/test_call_media_client_async.py index 06728de5c50e..ba0c2773eb32 100644 --- a/sdk/communication/azure-communication-callautomation/tests/test_call_media_client_async.py +++ b/sdk/communication/azure-communication-callautomation/tests/test_call_media_client_async.py @@ -551,10 +551,16 @@ async def test_cancel(self): async def test_start_continuous_dtmf_recognition(self): mock_start_continuous_dtmf_recognition = AsyncMock() self.call_media_operations.start_continuous_dtmf_recognition = mock_start_continuous_dtmf_recognition - await self.call_connection_client.start_continuous_dtmf_recognition(target_participant=self.target_user) + await self.call_connection_client.start_continuous_dtmf_recognition( + target_participant=self.target_user, + operation_context=self.operation_context, + operation_callback_url=self.operation_callback_url, + ) expected_continuous_dtmf_recognition_request = ContinuousDtmfRecognitionRequest( - target_participant=serialize_identifier(self.target_user) + target_participant=serialize_identifier(self.target_user), + operation_context=self.operation_context, + operation_callback_uri=self.operation_callback_url, ) mock_start_continuous_dtmf_recognition.assert_awaited_once() @@ -570,6 +576,10 @@ async def test_start_continuous_dtmf_recognition(self): expected_continuous_dtmf_recognition_request.operation_context, actual_start_continuous_dtmf_recognition.operation_context, ) + self.assertEqual( + expected_continuous_dtmf_recognition_request.operation_callback_uri, + actual_start_continuous_dtmf_recognition.operation_callback_uri, + ) async def test_stop_continuous_dtmf_recognition(self): mock_stop_continuous_dtmf_recognition = AsyncMock()