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继承和抽象类的实现方法
Jan 14 Python
解析Python中的__getitem__专有方法
Jun 27 Python
使用Python对SQLite数据库操作
Apr 06 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python如何通过twisted搭建socket服务
Feb 03 Python
Python如何存储数据到json文件
Mar 09 Python
Python如何对XML 解析
Jun 28 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
教你用python实现一个无界面的小型图书管理系统
May 21 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
javascript 动态创建表格
2015/01/08 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python线程信号量semaphore使用解析
2019/11/30 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
体育馆的标语
2014/06/24 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
欢送会主持词
2015/07/01 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL