From eaafc1b3af0e0ff98b9aa85d2e6c79d98c4ddd8f Mon Sep 17 00:00:00 2001 From: Ajay Raj Date: Wed, 24 Jul 2024 15:10:43 -0700 Subject: [PATCH] support additional headers in external actions requester (#661) * support additional headers in external actions requester * adds test for headers * assert headers dont get overwritten --- tests/streaming/action/test_external_actions_requester.py | 4 ++++ vocode/streaming/action/external_actions_requester.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tests/streaming/action/test_external_actions_requester.py b/tests/streaming/action/test_external_actions_requester.py index 626d5db93..86681928c 100644 --- a/tests/streaming/action/test_external_actions_requester.py +++ b/tests/streaming/action/test_external_actions_requester.py @@ -66,9 +66,13 @@ async def test_send_request_responses( JSON_SCHEMA, base64.b64encode(os.urandom(32)).decode(), additional_payload_values={"call_id": "call_id"}, + additional_headers={"x-vocode-test": "test"}, transport=httpx.AsyncHTTPTransport(retries=3, verify=True), ) + assert httpx_mock.get_request().headers["x-vocode-test"] == "test" + assert "x-vocode-signature" in httpx_mock.get_request().headers + assert response.success is expected_success diff --git a/vocode/streaming/action/external_actions_requester.py b/vocode/streaming/action/external_actions_requester.py index 658192e7b..76aecd9e5 100644 --- a/vocode/streaming/action/external_actions_requester.py +++ b/vocode/streaming/action/external_actions_requester.py @@ -52,6 +52,7 @@ async def send_request( payload: Dict[str, Any], signature_secret: str, additional_payload_values: Dict[str, Any] = {}, + additional_headers: Dict[str, str] = {}, transport: httpx.AsyncHTTPTransport = httpx.AsyncHTTPTransport(retries=2), ) -> ExternalActionResponse: encoded_payload = json.dumps({"payload": payload} | additional_payload_values).encode( @@ -62,6 +63,7 @@ async def send_request( "Accept": "application/json", "Content-Type": "application/json", "x-vocode-signature": self._encode_payload(encoded_payload, signature_secret), + **additional_headers, } async with httpx.AsyncClient(