twilio.py 1.1 KB

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