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 | |