Project Icon

twilio-python

Twilio Python SDK 简化通信服务集成与开发

twilio-python 是 Twilio 官方的 Python SDK,用于集成 Twilio 通信服务。该库支持多个 Python 版本,提供同步和异步 API 调用,支持 TwiML 生成,并附带详细文档和示例。开发者可通过此库轻松实现短信、语音通话等功能,简化 Twilio 服务的使用过程。

twilio-python

测试 PyPI PyPI 在TwilioQuest中学习开源贡献

文档

Twilio API的文档可以在这里找到。

Python库文档可以在这里找到。

版本

twilio-python使用语义化版本控制的修改版本来进行所有更改。查看此文档了解详情。

支持的Python版本

该库支持以下Python实现:

  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10
  • Python 3.11

安装

使用pip(Python的包管理器)从PyPi安装。

pip3 install twilio

如果在Windows上pip安装失败,请检查目录的路径长度。如果超过260个字符,请启用长路径或选择其他较短的位置。

没有安装pip?尝试通过在命令行运行以下命令来安装它:

curl https://bootstrap.pypa.io/get-pip.py | python

或者,你可以下载源代码(ZIP),然后运行:

python3 setup.py install

提示 如果命令行给你一个权限拒绝的错误消息,尝试使用sudo运行上述命令(例如,sudo pip3 install twilio)。

测试你的安装

尝试给自己发送一条短信。将以下代码示例保存到你的电脑上的文本编辑器中。确保用你的Twilio账户中的值更新account_sidauth_tokenfrom_电话号码。to电话号码将是你自己的手机号码。

from twilio.rest import Client

# 你的账户SID和认证令牌,来自console.twilio.com
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token  = "your_auth_token"

client = Client(account_sid, auth_token)

message = client.messages.create(
    to="+15558675309",
    from_="+15017250604",
    body="Hello from Python!")

print(message.sid)

将文件保存为send_sms.py。在终端中,cd到包含你刚保存的文件的目录,然后运行:

python3 send_sms.py

稍作延迟后,你将在手机上收到短信。

警告 在本地测试时硬编码你的凭证是可以的,但在提交任何代码或部署到生产环境之前,你应该使用环境变量来保密。查看如何设置环境变量以获取更多信息。

使用辅助库

API凭证

Twilio客户端需要你的Twilio凭证。你可以直接将这些凭证传递给构造函数(见下面的代码)或通过环境变量传递。

使用账户SID和认证令牌进行身份验证:

from twilio.rest import Client

account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token  = "your_auth_token"
client = Client(account_sid, auth_token)

使用API密钥和API密钥进行身份验证:

from twilio.rest import Client

api_key = "XXXXXXXXXXXXXXXXX"
api_secret = "YYYYYYYYYYYYYYYYYY"
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
client = Client(api_key, api_secret, account_sid)

或者,不带这些参数的Client构造函数将在当前环境中查找TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN变量。

我们建议将你的凭证存储为环境变量。为什么?你永远不用担心不小心提交你的凭证并将它们发布到某个公共场所。

from twilio.rest import Client
client = Client()

指定地区和/或边缘

要利用Twilio的全球基础设施,为客户端指定目标地区和/或边缘:

from twilio.rest import Client

client = Client(region='au1', edge='sydney')

不带这些参数的Client构造函数也会在当前环境中查找TWILIO_REGIONTWILIO_EDGE变量。

另外,你也可以在构造Twilio客户端后指定边缘和/或地区:

from twilio.rest import Client
client = Client()
client.region = 'au1'
client.edge = 'sydney'

这将导致hostnameapi.twilio.com转变为api.sydney.au1.twilio.com

拨打电话

from twilio.rest import Client

account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token  = "your_auth_token"
client = Client(account_sid, auth_token)

call = client.calls.create(to="9991231234",
                           from_="9991231234",
                           url="http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient")
print(call.sid)

获取现有通话的数据

from twilio.rest import Client

account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token  = "your_auth_token"
client = Client(account_sid, auth_token)

call = client.calls.get("CA42ed11f93dc08b952027ffbc406d0868")
print(call.to)

遍历记录

库会自动为您处理分页。集合,如callsmessages,有liststream方法,这些方法在底层进行分页。使用liststream时,您可以指定要接收的记录数量(limit)和每次获取页面的最大大小(page_size)。然后库会为您处理这个任务。

list方法会急切地获取所有记录并将它们作为列表返回,而stream方法返回一个迭代器,在您遍历集合时懒加载记录页面。您也可以使用page方法手动分页。

使用list方法

from twilio.rest import Client

account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token = "your_auth_token"
client = Client(account_sid, auth_token)

for sms in client.messages.list():
  print(sms.to)

异步API请求

默认情况下,Twilio客户端会向Twilio API发送同步请求。为了允许异步、非阻塞请求,我们包含了一个可选的异步HTTP客户端。当与客户端和相应的*_async方法一起使用时,对Twilio API的请求将异步执行。

from twilio.http.async_http_client import AsyncTwilioHttpClient
from twilio.rest import Client

async def main():
    account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    auth_token  = "your_auth_token"
    http_client = AsyncTwilioHttpClient()
    client = Client(account_sid, auth_token, http_client=http_client)

    message = await client.messages.create_async(to="+12316851234", from_="+15555555555",
                                                 body="Hello there!")

asyncio.run(main())

启用调试日志

将API请求和响应数据记录到控制台:

import logging

client = Client(account_sid, auth_token)
logging.basicConfig()
client.http_client.logger.setLevel(logging.INFO)

将API请求和响应数据记录到文件:

import logging

client = Client(account_sid, auth_token)
logging.basicConfig(filename='./log.txt')
client.http_client.logger.setLevel(logging.INFO)

处理异常

twilio-python的8.x版本导出了一个异常类,以帮助您处理特定于Twilio方法的异常。要使用它,请导入TwilioRestException并按如下方式捕获异常:

from twilio.rest import Client
from twilio.base.exceptions import TwilioRestException

account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
auth_token  = "your_auth_token"
client = Client(account_sid, auth_token)

try:
  message = client.messages.create(to="+12316851234", from_="+15555555555",
                                   body="Hello there!")
except TwilioRestException as e:
  print(e)

生成TwiML

要控制电话呼叫,您的应用程序需要输出TwiML

使用twilio.twiml.Response可以轻松创建这样的响应。

from twilio.twiml.voice_response import VoiceResponse

r = VoiceResponse()
r.say("Welcome to twilio!")
print(str(r))
<?xml version="1.0" encoding="utf-8"?>
<Response><Say>Welcome to twilio!</Say></Response>

其他高级示例

Docker镜像

本仓库中的Dockerfile及其相应的twilio/twilio-python Docker镜像目前仅供Twilio用于测试目的。

获取帮助

如果您在安装或使用库时需要帮助,请先查看Twilio支持帮助中心,如果您没有找到问题的答案,请提交支持票据

如果您发现库中的错误或想要添加新功能,请随时对此仓库开启issue或提交pull request!

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号