Source code for langchain_community.utilities.twilio

"""调用Twilio的工具。"""
from typing import Any, Dict, Optional

from langchain_core.pydantic_v1 import BaseModel, Extra, root_validator
from langchain_core.utils import get_from_dict_or_env


[docs]class TwilioAPIWrapper(BaseModel): """使用Twilio的消息客户端。 要使用,您应该已经安装了``twilio`` python包,并设置了环境变量``TWILIO_ACCOUNT_SID``、``TWILIO_AUTH_TOKEN``和``TWILIO_FROM_NUMBER``,或者将`account_sid`、`auth_token`和`from_number`作为命名参数传递给构造函数。 示例: .. code-block:: python from langchain_community.utilities.twilio import TwilioAPIWrapper twilio = TwilioAPIWrapper( account_sid="ACxxx", auth_token="xxx", from_number="+10123456789" ) twilio.run('test', '+12484345508') """ client: Any #: :meta private: account_sid: Optional[str] = None """Twilio帐户字符串标识符。""" auth_token: Optional[str] = None """Twilio身份验证令牌。""" from_number: Optional[str] = None """一个符合[E.164](https://www.twilio.com/docs/glossary/what-e164)格式的Twilio电话号码,一个[字母数字发送者ID](https://www.twilio.com/docs/sms/send-messages#use-an-alphanumeric-sender-id),或者一个已启用用于发送消息类型的[通道端点地址](https://www.twilio.com/docs/sms/channels#channel-addresses)。在这里也可以使用从Twilio购买的电话号码或[短码](https://www.twilio.com/docs/sms/api/short-code)。例如,您不能伪造来自私人手机号码的消息。如果您正在使用`messaging_service_sid`,则此参数必须为空。""" # noqa: E501 class Config: """此pydantic对象的配置。""" extra = Extra.forbid arbitrary_types_allowed = False @root_validator() def validate_environment(cls, values: Dict) -> Dict: """验证环境中是否存在API密钥和Python包。""" try: from twilio.rest import Client except ImportError: raise ImportError( "Could not import twilio python package. " "Please install it with `pip install twilio`." ) account_sid = get_from_dict_or_env(values, "account_sid", "TWILIO_ACCOUNT_SID") auth_token = get_from_dict_or_env(values, "auth_token", "TWILIO_AUTH_TOKEN") values["from_number"] = get_from_dict_or_env( values, "from_number", "TWILIO_FROM_NUMBER" ) values["client"] = Client(account_sid, auth_token) return values
[docs] def run(self, body: str, to: str) -> str: """通过Twilio运行正文并回复消息SID。 参数: body:您想要发送的消息文本。长度最多可达1,600个字符。 to:目标电话号码,格式为 [E.164](https://www.twilio.com/docs/glossary/what-e164),用于 短信/彩信,或 [通道用户地址](https://www.twilio.com/docs/sms/channels#channel-addresses) 用于其他第三方通道。 """ # noqa: E501 message = self.client.messages.create(to, from_=self.from_number, body=body) return message.sid