Fix webhook endpoint not receiving data that is not JSON (#2390)
This PR makes sure webhook can take any type of input.
This commit is contained in:
commit
120e4994d4
2 changed files with 17 additions and 5 deletions
|
|
@ -276,15 +276,15 @@ async def webhook_run_flow(
|
||||||
# get all webhook components in the flow
|
# get all webhook components in the flow
|
||||||
webhook_components = get_all_webhook_components_in_flow(flow.data)
|
webhook_components = get_all_webhook_components_in_flow(flow.data)
|
||||||
tweaks = {}
|
tweaks = {}
|
||||||
data_dict = await request.json()
|
|
||||||
for component in webhook_components:
|
for component in webhook_components:
|
||||||
tweaks[component["id"]] = {"data": data.decode() if isinstance(data, bytes) else data}
|
tweaks[component["id"]] = {"data": data.decode() if isinstance(data, bytes) else data}
|
||||||
input_request = SimplifiedAPIRequest(
|
input_request = SimplifiedAPIRequest(
|
||||||
input_value=data_dict.get("input_value", ""),
|
input_value="",
|
||||||
input_type=data_dict.get("input_type", "chat"),
|
input_type="chat",
|
||||||
output_type=data_dict.get("output_type", "chat"),
|
output_type="chat",
|
||||||
tweaks=tweaks,
|
tweaks=tweaks,
|
||||||
session_id=data_dict.get("session_id"),
|
session_id=None,
|
||||||
)
|
)
|
||||||
logger.debug("Starting background task")
|
logger.debug("Starting background task")
|
||||||
background_tasks.add_task( # type: ignore
|
background_tasks.add_task( # type: ignore
|
||||||
|
|
|
||||||
|
|
@ -26,3 +26,15 @@ def test_webhook_endpoint(client, added_webhook_test):
|
||||||
response = client.post(endpoint, json=payload)
|
response = client.post(endpoint, json=payload)
|
||||||
assert response.status_code == 202
|
assert response.status_code == 202
|
||||||
assert not file_path.exists()
|
assert not file_path.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_webhook_with_random_payload(client, added_webhook_test):
|
||||||
|
endpoint_name = added_webhook_test["endpoint_name"]
|
||||||
|
endpoint = f"api/v1/webhook/{endpoint_name}"
|
||||||
|
# Just test that "Random Payload" returns 202
|
||||||
|
# returns 202
|
||||||
|
response = client.post(
|
||||||
|
endpoint,
|
||||||
|
json="Random Payload",
|
||||||
|
)
|
||||||
|
assert response.status_code == 202
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue