mirror of
https://github.com/langgenius/dify.git
synced 2026-05-02 08:28:03 +08:00
feat: introduce payload field to plugin trigger processing
This commit is contained in:
@ -26,7 +26,7 @@ from core.trigger.entities.entities import (
|
||||
TriggerCreationMethod,
|
||||
TriggerProviderEntity,
|
||||
TriggerProviderIdentity,
|
||||
Unsubscription,
|
||||
UnsubscribeResult,
|
||||
)
|
||||
from core.trigger.errors import TriggerProviderCredentialValidationError
|
||||
from models.provider_ids import TriggerProviderID
|
||||
@ -190,7 +190,7 @@ class PluginTriggerProviderController:
|
||||
|
||||
:return: List of supported credential types
|
||||
"""
|
||||
types = []
|
||||
types: list[CredentialType] = []
|
||||
subscription_constructor = self.entity.subscription_constructor
|
||||
if subscription_constructor and subscription_constructor.oauth_schema:
|
||||
types.append(CredentialType.OAUTH2)
|
||||
@ -208,7 +208,7 @@ class PluginTriggerProviderController:
|
||||
subscription_constructor = self.entity.subscription_constructor
|
||||
if not subscription_constructor:
|
||||
return []
|
||||
credential_type = CredentialType.of(credential_type) if isinstance(credential_type, str) else credential_type
|
||||
credential_type = CredentialType.of(credential_type)
|
||||
if credential_type == CredentialType.OAUTH2:
|
||||
return (
|
||||
subscription_constructor.oauth_schema.credentials_schema.copy()
|
||||
@ -304,6 +304,7 @@ class PluginTriggerProviderController:
|
||||
credential_type: CredentialType,
|
||||
subscription: Subscription,
|
||||
request: Request,
|
||||
payload: Mapping[str, Any],
|
||||
) -> TriggerInvokeEventResponse:
|
||||
"""
|
||||
Execute a trigger through plugin runtime
|
||||
@ -314,6 +315,7 @@ class PluginTriggerProviderController:
|
||||
:param credentials: Provider credentials
|
||||
:param credential_type: Credential type
|
||||
:param request: Request
|
||||
:param payload: Payload
|
||||
:return: Trigger execution result
|
||||
"""
|
||||
manager = PluginTriggerManager()
|
||||
@ -329,6 +331,7 @@ class PluginTriggerProviderController:
|
||||
request=request,
|
||||
parameters=parameters,
|
||||
subscription=subscription,
|
||||
payload=payload,
|
||||
)
|
||||
|
||||
def subscribe_trigger(
|
||||
@ -366,7 +369,7 @@ class PluginTriggerProviderController:
|
||||
|
||||
def unsubscribe_trigger(
|
||||
self, user_id: str, subscription: Subscription, credentials: Mapping[str, str], credential_type: CredentialType
|
||||
) -> Unsubscription:
|
||||
) -> UnsubscribeResult:
|
||||
"""
|
||||
Unsubscribe from a trigger through plugin runtime
|
||||
|
||||
@ -374,7 +377,7 @@ class PluginTriggerProviderController:
|
||||
:param subscription: Subscription metadata
|
||||
:param credentials: Provider credentials
|
||||
:param credential_type: Credential type
|
||||
:return: Unsubscription result
|
||||
:return: Unsubscribe result
|
||||
"""
|
||||
manager = PluginTriggerManager()
|
||||
provider_id: TriggerProviderID = self.get_provider_id()
|
||||
@ -388,7 +391,7 @@ class PluginTriggerProviderController:
|
||||
credential_type=credential_type,
|
||||
)
|
||||
|
||||
return Unsubscription.model_validate(response.subscription)
|
||||
return UnsubscribeResult.model_validate(response.subscription)
|
||||
|
||||
def refresh_trigger(
|
||||
self, subscription: Subscription, credentials: Mapping[str, str], credential_type: CredentialType
|
||||
|
||||
@ -18,9 +18,9 @@ from core.plugin.impl.trigger import PluginTriggerManager
|
||||
from core.trigger.entities.entities import (
|
||||
EventEntity,
|
||||
Subscription,
|
||||
Unsubscription,
|
||||
UnsubscribeResult,
|
||||
)
|
||||
from core.trigger.errors import TriggerPluginInvokeError
|
||||
from core.trigger.errors import EventIgnoreError, TriggerPluginInvokeError
|
||||
from core.trigger.provider import PluginTriggerProviderController
|
||||
from models.provider_ids import TriggerProviderID
|
||||
|
||||
@ -56,7 +56,7 @@ class TriggerManager:
|
||||
manager = PluginTriggerManager()
|
||||
provider_entities = manager.fetch_trigger_providers(tenant_id)
|
||||
|
||||
controllers = []
|
||||
controllers: list[PluginTriggerProviderController] = []
|
||||
for provider in provider_entities:
|
||||
try:
|
||||
controller = PluginTriggerProviderController(
|
||||
@ -158,6 +158,7 @@ class TriggerManager:
|
||||
credential_type: CredentialType,
|
||||
subscription: Subscription,
|
||||
request: Request,
|
||||
payload: Mapping[str, Any],
|
||||
) -> TriggerInvokeEventResponse:
|
||||
"""
|
||||
Execute a trigger
|
||||
@ -171,6 +172,7 @@ class TriggerManager:
|
||||
:param credential_type: Credential type
|
||||
:param subscription: Subscription
|
||||
:param request: Request
|
||||
:param payload: Payload
|
||||
:return: Trigger execution result
|
||||
"""
|
||||
provider: PluginTriggerProviderController = cls.get_trigger_provider(
|
||||
@ -185,10 +187,11 @@ class TriggerManager:
|
||||
credential_type=credential_type,
|
||||
subscription=subscription,
|
||||
request=request,
|
||||
payload=payload,
|
||||
)
|
||||
except EventIgnoreError as e:
|
||||
return TriggerInvokeEventResponse(variables={}, cancelled=True)
|
||||
except PluginInvokeError as e:
|
||||
if e.get_error_type() == "EventIgnoreError":
|
||||
return TriggerInvokeEventResponse(variables={}, cancelled=True)
|
||||
logger.exception("Failed to invoke trigger event")
|
||||
raise TriggerPluginInvokeError(
|
||||
description=e.to_user_friendly_error(plugin_name=provider.entity.identity.name)
|
||||
@ -237,7 +240,7 @@ class TriggerManager:
|
||||
subscription: Subscription,
|
||||
credentials: Mapping[str, str],
|
||||
credential_type: CredentialType,
|
||||
) -> Unsubscription:
|
||||
) -> UnsubscribeResult:
|
||||
"""
|
||||
Unsubscribe from a trigger
|
||||
|
||||
@ -283,7 +286,3 @@ class TriggerManager:
|
||||
return cls.get_trigger_provider(tenant_id=tenant_id, provider_id=provider_id).refresh_trigger(
|
||||
subscription=subscription, credentials=credentials, credential_type=credential_type
|
||||
)
|
||||
|
||||
|
||||
# Export
|
||||
__all__ = ["TriggerManager"]
|
||||
|
||||
Reference in New Issue
Block a user