Source code for langchain_community.utilities.twilio
"""Util that calls Twilio."""fromtypingimportAny,Dict,Optionalfromlangchain_core.utilsimportget_from_dict_or_envfrompydanticimportBaseModel,ConfigDict,model_validator
[docs]classTwilioAPIWrapper(BaseModel):"""Messaging Client using Twilio. To use, you should have the ``twilio`` python package installed, and the environment variables ``TWILIO_ACCOUNT_SID``, ``TWILIO_AUTH_TOKEN``, and ``TWILIO_FROM_NUMBER``, or pass `account_sid`, `auth_token`, and `from_number` as named parameters to the constructor. Example: .. 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=None#: :meta private:account_sid:Optional[str]=None"""Twilio account string identifier."""auth_token:Optional[str]=None"""Twilio auth token."""from_number:Optional[str]=None"""A Twilio phone number in [E.164](https://www.twilio.com/docs/glossary/what-e164) format, an [alphanumeric sender ID](https://www.twilio.com/docs/sms/send-messages#use-an-alphanumeric-sender-id), or a [Channel Endpoint address](https://www.twilio.com/docs/sms/channels#channel-addresses) that is enabled for the type of message you want to send. Phone numbers or [short codes](https://www.twilio.com/docs/sms/api/short-code) purchased from Twilio also work here. You cannot, for example, spoof messages from a private cell phone number. If you are using `messaging_service_sid`, this parameter must be empty. """model_config=ConfigDict(arbitrary_types_allowed=False,extra="forbid",)@model_validator(mode="before")@classmethoddefvalidate_environment(cls,values:Dict)->Any:"""Validate that api key and python package exists in environment."""try:fromtwilio.restimportClientexceptImportError:raiseImportError("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)returnvalues
[docs]defrun(self,body:str,to:str)->str:"""Run body through Twilio and respond with message sid. Args: body: The text of the message you want to send. Can be up to 1,600 characters in length. to: The destination phone number in [E.164](https://www.twilio.com/docs/glossary/what-e164) format for SMS/MMS or [Channel user address](https://www.twilio.com/docs/sms/channels#channel-addresses) for other 3rd-party channels. """message=self.client.messages.create(to,from_=self.from_number,body=body)returnmessage.sid