Spaces:
Running
Running
import json | |
from langflow.custom import Component | |
from langflow.io import MultilineInput, Output | |
from langflow.schema import Data | |
class WebhookComponent(Component): | |
display_name = "Webhook" | |
description = "Defines a webhook input for the flow." | |
name = "Webhook" | |
icon = "webhook" | |
inputs = [ | |
MultilineInput( | |
name="data", | |
display_name="Payload", | |
info="Receives a payload from external systems via HTTP POST.", | |
) | |
] | |
outputs = [ | |
Output(display_name="Data", name="output_data", method="build_data"), | |
] | |
def build_data(self) -> Data: | |
message: str | Data = "" | |
if not self.data: | |
self.status = "No data provided." | |
return Data(data={}) | |
try: | |
body = json.loads(self.data or "{}") | |
except json.JSONDecodeError: | |
body = {"payload": self.data} | |
message = f"Invalid JSON payload. Please check the format.\n\n{self.data}" | |
data = Data(data=body) | |
if not message: | |
message = data | |
self.status = message | |
return data | |