|
@@ -1,5 +1,8 @@
|
|
|
from typing import Any
|
|
|
|
|
|
+from twilio.base.exceptions import TwilioRestException
|
|
|
+from twilio.rest import Client
|
|
|
+
|
|
|
from core.tools.errors import ToolProviderCredentialValidationError
|
|
|
from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController
|
|
|
|
|
@@ -7,19 +10,20 @@ from core.tools.provider.builtin_tool_provider import BuiltinToolProviderControl
|
|
|
class TwilioProvider(BuiltinToolProviderController):
|
|
|
def _validate_credentials(self, credentials: dict[str, Any]) -> None:
|
|
|
try:
|
|
|
- """
|
|
|
- SendMessageTool().fork_tool_runtime(
|
|
|
- meta={
|
|
|
- "credentials": credentials,
|
|
|
- }
|
|
|
- ).invoke(
|
|
|
- user_id="",
|
|
|
- tool_parameters={
|
|
|
- "message": "Credential validation message",
|
|
|
- "to_number": "+14846624384",
|
|
|
- },
|
|
|
- )
|
|
|
- """
|
|
|
- pass
|
|
|
+ # Extract credentials
|
|
|
+ account_sid = credentials["account_sid"]
|
|
|
+ auth_token = credentials["auth_token"]
|
|
|
+ from_number = credentials["from_number"]
|
|
|
+
|
|
|
+ # Initialize twilio client
|
|
|
+ client = Client(account_sid, auth_token)
|
|
|
+
|
|
|
+ # fetch account
|
|
|
+ client.api.accounts(account_sid).fetch()
|
|
|
+
|
|
|
+ except TwilioRestException as e:
|
|
|
+ raise ToolProviderCredentialValidationError(f"Twilio API error: {e.msg}") from e
|
|
|
+ except KeyError as e:
|
|
|
+ raise ToolProviderCredentialValidationError(f"Missing required credential: {e}") from e
|
|
|
except Exception as e:
|
|
|
- raise ToolProviderCredentialValidationError(str(e))
|
|
|
+ raise ToolProviderCredentialValidationError(str(e))
|