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