twilio python自动拨打电话,播放自定义mp3音频的方法


Posted in Python onAugust 08, 2019

有个小项目,需求是某事件发生时,给客户打电话,提醒客户。需要事先录制好一段音频,客户接通电话后,自动播放。

这里用到了twilio:https://www.twilio.com ,分享下。

1. 注册twilio账号

2. 买一个电话号码

twilio python自动拨打电话,播放自定义mp3音频的方法

3. 安装twilio

pip install twilio

4. trigger代码(给某个电话发送短信,或者打电话):

from twilio.rest import Client
# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'XXX'
auth_token = 'XXX'
 
 
def sendCall(mobile):
 client = Client(account_sid, auth_token)
 url='你需要自己写一个url, 后面我会分享自己的django代码'
 
 call = client.calls.create(
  url=url,
  to='+86{}'.format(mobile),
  from_='你买的电话号码'
 )
 
 
def sendSMS(phone,content):
 client = Client(account_sid, auth_token)
 message = client.messages \
  .create(
  body=content,
  from_='你买的电话号码',
  to='+86{}'.format(phone)
 )
 
 
if __name__ == '__main__':
 sendCall("186xxxxxx")

5. 在django项目中准备一个路由,处理twilio发来的post请求,返回一段xml

url.py:

url(r'^notify/call/$',csrf_exempt(NotifyCall.as_view()), name='call'),
 view.py:

class NotifyCall(APIView):
 def post(self, request):
  temp = """<?xml version="1.0" encoding="UTF-8"?>
  <Response>
   <Play>一个公网可以访问的mp3文件路径,比如我用的自己的腾讯云服务器上的某个文件</Play>
   <Hangup/>
  </Response>
  """
  return HttpResponse(temp)

6. 理想情况下,就能完成打电话了。但是有个问题,当我接起来电话后,有差不多4~5秒的mute call时间。

分析log可以看到:

twilio python自动拨打电话,播放自定义mp3音频的方法

看来是因为twilio服务器在国外,从腾讯云获取文件花费时间太长。

于是:

7. 上传mp3到国外某个公共网站,让twilio从那里提取文件

twilio python自动拨打电话,播放自定义mp3音频的方法

1秒内就获取到了:

twilio python自动拨打电话,播放自定义mp3音频的方法

以上这篇twilio python自动拨打电话,播放自定义mp3音频的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python聚类算法之DBSACN实例分析
Nov 20 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
python之yield和Generator深入解析
Sep 18 Python
Python3 翻转二叉树的实现
Sep 30 Python
Django异步任务线程池实现原理
Dec 17 Python
Django 实现对已存在的model进行更改
Mar 28 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 #Python
Pycharm远程调试原理及具体配置详解
Aug 08 #Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 #Python
python多线程与多进程及其区别详解
Aug 08 #Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 #Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 #Python
Django 实现前端图片压缩功能的方法
Aug 07 #Python
You might like
第八节--访问方式
2006/11/16 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python网络编程学习笔记(一)
2014/06/09 Python
Python实现的Excel文件读写类
2015/07/30 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
python中map()函数的使用方法示例
2017/09/29 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
python实现多层感知器
2019/01/18 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Python 获取项目根路径的代码
2019/09/27 Python
tensorflow常用函数API介绍
2020/04/19 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
反邪教标语
2014/06/23 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2016年教师节感言
2015/12/09 职场文书
高三化学教学反思
2016/02/22 职场文书
python非标准时间的转换
2021/07/25 Python
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server
Java实现注册登录跳转
2022/06/16 Java/Android