Twilio实践应用

    最近对Python的Twilio模块很感兴趣就看了亿会教程就懂了( ̄∀ ̄)

    Twilio是一个提供云通信服务的平台,它允许开发者通过简单的API集成语音、视频通话、短信、MMS和IP消息到他们的应用程序中。Python Twilio模块是官方提供的一个库,它允许Python开发者轻松地使用Twilio的API来发送和接收短信、进行电话呼叫等。

    最简单的用法就是

from twilio.rest import Client

 

# 你的Twilio账户SID和Auth Token

account_sid = 'your_account_sid'

auth_token = 'your_auth_token'

 

# 创建Twilio客户端

client = Client(account_sid, auth_token)

 

# 发送短信

message = client.calls.create(

    to="he's number", 

    from_="your's number", 

   )

 

print(message.sid)

    但是我觉得这还不够,于是我玩了一会Qt Designer,就搞出一个电话机界面,然后把打电话的逻辑和界面融在一起得到了以下代码

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QInputDialog, QMessageBox
from PyQt5 import QtCore, QtGui, QtWidgets
from twilio.rest import Client
class PhoneUi(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(351, 308)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.number = QtWidgets.QLabel(self.centralwidget)
        self.number.setGeometry(QtCore.QRect(10, 10, 171, 51))
        font = QtGui.QFont()
        font.setPointSize(21)
        self.number.setFont(font)
        self.number.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
        self.number.setObjectName("number")
        self.one = QtWidgets.QPushButton(self.centralwidget)
        self.one.setGeometry(QtCore.QRect(10, 70, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.one.setFont(font)
        self.one.setObjectName("one")
        self.two = QtWidgets.QPushButton(self.centralwidget)
        self.two.setGeometry(QtCore.QRect(70, 70, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.two.setFont(font)
        self.two.setObjectName("two")
        self.three = QtWidgets.QPushButton(self.centralwidget)
        self.three.setGeometry(QtCore.QRect(130, 70, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.three.setFont(font)
        self.three.setObjectName("three")
        self.four = QtWidgets.QPushButton(self.centralwidget)
        self.four.setGeometry(QtCore.QRect(10, 130, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.four.setFont(font)
        self.four.setObjectName("four")
        self.five = QtWidgets.QPushButton(self.centralwidget)
        self.five.setGeometry(QtCore.QRect(70, 130, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.five.setFont(font)
        self.five.setObjectName("five")
        self.six = QtWidgets.QPushButton(self.centralwidget)
        self.six.setGeometry(QtCore.QRect(130, 130, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.six.setFont(font)
        self.six.setObjectName("six")
        self.seven = QtWidgets.QPushButton(self.centralwidget)
        self.seven.setGeometry(QtCore.QRect(10, 190, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.seven.setFont(font)
        self.seven.setObjectName("seven")
        self.eight = QtWidgets.QPushButton(self.centralwidget)
        self.eight.setGeometry(QtCore.QRect(70, 190, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.eight.setFont(font)
        self.eight.setObjectName("eight")
        self.nine = QtWidgets.QPushButton(self.centralwidget)
        self.nine.setGeometry(QtCore.QRect(130, 190, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.nine.setFont(font)
        self.nine.setObjectName("nine")
        self.zero = QtWidgets.QPushButton(self.centralwidget)
        self.zero.setGeometry(QtCore.QRect(70, 250, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(39)
        self.zero.setFont(font)
        self.zero.setObjectName("zero")
        self.call = QtWidgets.QPushButton(self.centralwidget)
        self.call.setGeometry(QtCore.QRect(10, 250, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(23)
        self.call.setFont(font)
        self.call.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.call.setObjectName("call")
        self.backspace = QtWidgets.QPushButton(self.centralwidget)
        self.backspace.setGeometry(QtCore.QRect(130, 250, 50, 50))
        font = QtGui.QFont()
        font.setPointSize(23)
        self.backspace.setFont(font)
        self.backspace.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.backspace.setObjectName("backspace")
        self.history = QtWidgets.QListWidget(self.centralwidget)
        self.history.setGeometry(QtCore.QRect(190, 70, 151, 231))
        self.history.setObjectName("history")
        self.country = QtWidgets.QComboBox(self.centralwidget)
        self.country.setGeometry(QtCore.QRect(190, 30, 151, 22))
        self.country.setEditable(True)
        self.country.setObjectName("country")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "twilio网络电话"))
        self.number.setText(_translate("MainWindow", "电话号码"))
        self.one.setText(_translate("MainWindow", "1"))
        self.two.setText(_translate("MainWindow", "2"))
        self.three.setText(_translate("MainWindow", "3"))
        self.four.setText(_translate("MainWindow", "4"))
        self.five.setText(_translate("MainWindow", "5"))
        self.six.setText(_translate("MainWindow", "6"))
        self.seven.setText(_translate("MainWindow", "7"))
        self.eight.setText(_translate("MainWindow", "8"))
        self.nine.setText(_translate("MainWindow", "9"))
        self.zero.setText(_translate("MainWindow", "0"))
        self.call.setText(_translate("MainWindow", "CALL"))
        self.backspace.setText(_translate("MainWindow", "BACK"))
        self.country.addItems(
            ['美国 +1', '马来西亚 +60', '印度尼西亚 +62', '菲律宾 +63', '新加坡 +65', '泰国 +66', '文莱 +673',
             '日本 +81', '韩国 +82', '越南 +84', '朝鲜 +850', '中国香港 +852', '中国澳门 +853', '柬埔寨 +855',
             '老挝 +856', '中国 +86', '中国台湾 +886'])


class MainWindow(QMainWindow, PhoneUi):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.num = ''
        self.into()
        self.button_click()

    def button_click(self):
        self.one.clicked.connect(lambda: self.add_num('1'))
        self.two.clicked.connect(lambda: self.add_num('2'))
        self.three.clicked.connect(lambda: self.add_num('3'))
        self.four.clicked.connect(lambda: self.add_num('4'))
        self.five.clicked.connect(lambda: self.add_num('5'))
        self.six.clicked.connect(lambda: self.add_num('6'))
        self.seven.clicked.connect(lambda: self.add_num('7'))
        self.eight.clicked.connect(lambda: self.add_num('8'))
        self.nine.clicked.connect(lambda: self.add_num('9'))
        self.zero.clicked.connect(lambda: self.add_num('0'))

        self.backspace.clicked.connect(self.delete)
        self.call.clicked.connect(self.play_call)

    def add_num(self, num):
        self.engine.say(num)
        self.num += num
        self.number.setText(self.num)

    def delete(self):
        self.num = self.num[:-1]
        self.number.setText(self.num)
        print(self.num)

        if self.num == '':
            self.number.setText("电话号码")

    def play_call(self):
        country = self.country.currentText().split()[1]
        try:
            self.client.calls.create(
                from_=self.user,
                to=country + self.num,
                url="http://demo.twilio.com/docs/voice.xml"
            )
            self.history.addItem(country + self.num + ":ok")
        except:
            self.history.addItem(country + self.num + f":bad")

    def into(self):
        account, ok = QInputDialog.getText(self, "请输入account", "请输入account:", QtWidgets.QLineEdit.Normal, "")
        if ok:
            token_, ok = QInputDialog.getText(self, "请输入token", "token:", QtWidgets.QLineEdit.Normal, "")
            if ok:
                self.user, ok = QInputDialog.getText(self, "请输入你的电话号码", "请输入你的twilio号码\n前面带上'+'房租可能拨打失败:",
                                                     QtWidgets.QLineEdit.Normal, "")
                if ok:
                    try:
                        self.client = Client(account, token_)
                    except:
                        QMessageBox.critical(self, 'Error','创建推特客户端时出现异常',
                                             QMessageBox.Close)

                        raise SystemExit
                else:
                    self.into()
            else:
                self.into()
        else:
            self.into()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

有没有大佬帮忙试一下程序

  ヘ⌒ヽフ

( ・ω・) 谢谢~~

/ ~つと)

散会

 

 

 

 

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值