twilio.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from typing import Any
  2. from twilio.base.exceptions import TwilioRestException
  3. from twilio.rest import Client
  4. from core.tools.entities.values import ToolLabelEnum
  5. from core.tools.errors import ToolProviderCredentialValidationError
  6. from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
  7. class TwilioProvider(BuiltinToolProviderController):
  8. def _validate_credentials(self, credentials: dict[str, Any]) -> None:
  9. try:
  10. # Extract credentials
  11. account_sid = credentials["account_sid"]
  12. auth_token = credentials["auth_token"]
  13. from_number = credentials["from_number"]
  14. # Initialize twilio client
  15. client = Client(account_sid, auth_token)
  16. # fetch account
  17. client.api.accounts(account_sid).fetch()
  18. except TwilioRestException as e:
  19. raise ToolProviderCredentialValidationError(f"Twilio API error: {e.msg}") from e
  20. except KeyError as e:
  21. raise ToolProviderCredentialValidationError(f"Missing required credential: {e}") from e
  22. except Exception as e:
  23. raise ToolProviderCredentialValidationError(str(e))
  24. def _get_tool_labels(self) -> list[ToolLabelEnum]:
  25. return [
  26. ToolLabelEnum.SOCIAL
  27. ]