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中的JSON模块
Apr 08 Python
详解Python中find()方法的使用
May 18 Python
python二分查找算法的递归实现方法
May 12 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
Django进阶之CSRF的解决
Aug 01 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 Python
Python使用openpyxl模块处理Excel文件
Jun 05 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
JS中的多态实例详解
2017/10/15 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
vue实现分页组件
2020/06/16 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
python 排序算法总结及实例详解
2016/09/28 Python
python中logging包的使用总结
2018/02/28 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python与pycharm有何区别
2020/07/01 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
综合实践活动总结
2014/05/05 职场文书
啤酒节策划方案
2014/05/28 职场文书
入股协议书范本
2014/11/01 职场文书
校园新闻稿范文
2015/07/18 职场文书
python实现简单聊天功能
2021/07/07 Python
Redis keys命令的具体使用
2022/06/05 Redis