执行 python 程序以从 twilio 服务器获取呼叫者参加电话会议时出错
Posted
技术标签:
【中文标题】执行 python 程序以从 twilio 服务器获取呼叫者参加电话会议时出错【英文标题】:Getting error while executing python program to get a caller to conference call from twilio server 【发布时间】:2018-04-26 12:32:22 【问题描述】:我写了一个关于 [Ph Num 1 Twilio Server Ph Num2 ] 的 python 程序 [- 从我的 ph 号码 (Num 1) 向 twilio 服务器发送包含另一个电话号码 (Num 2) 的消息 - twilio 接听电话号码 (Num2) 并给我回电 (Num1)(说你即将开会)和 - twilio 呼叫 Num 2 并与我会面 (Num1)
这是我的程序:
from flask import Flask, request
from twilio import twiml
from twilio.rest import Client
app = Flask(__name__)
account = "AC7d2a***************"
token = "f83b27**************"
client = Client(account, token)
@app.route("/sms", methods=['GET', 'POST'])
def sms():
number=request.form["From"]
call= client.calls.create(from_="+1857*******",to=number,url="https://handler.twilio.com/twiml/EHb330731ab2c9a35fcdc620bef1b88536")
return str(resp)
if __name__=="__main__":
app.run()
url="https://handler.twilio.com/twiml/EHb330731ab2c9a35fcdc620bef1b88536 包含
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>You are about to enter a conference</Say>
<Dial><Conference>number</Conference></Dial>
</Response>
我也做了 Ngrok,并在 twilio 号码的语音和消息 URL 中添加了我的 Ngrok 链接
我尝试了很多更改并收到各种错误,而不是在发送消息后给我打电话的 twilio 号码(带有 Ph 号码 (Num2) 到会议)
执行上述代码时最近出现的错误是 错误:
[2017-11-13 09:46:41,570] ERROR in app: Exception on /sms [POST]
Traceback (most recent call last):
File "/home/arif/my_app/local/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/home/arif/my_app/local/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/arif/my_app/local/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/arif/my_app/local/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/arif/my_app/local/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "conf.py", line 17, in sms
return str(resp)
NameError: global name 'resp' is not defined
127.0.0.1 - - [13/Nov/2017 09:46:41] "POST /sms HTTP/1.1" 500 -
我的程序是否得到了我期望的结果?谁能帮我问题出在哪里?
【问题讨论】:
【参考方案1】:这里是 Twilio 开发者宣传员。
这里有几个问题。首先,您的 webhook 响应中出现错误。您可以在堆栈跟踪的底部看到错误:
File "conf.py", line 17, in sms
return str(resp)
NameError: global name 'resp' is not defined
127.0.0.1 - - [13/Nov/2017 09:46:41] "POST /sms HTTP/1.1" 500 -
它说resp
没有定义。
您可以看到,在您的方法中,您从未定义 resp
,但您尝试返回它的 str
版本:
def sms():
number=request.form["From"]
call= client.calls.create(from_="+1857*******",to=number,url="https://handler.twilio.com/twiml/EHb330731ab2c9a35fcdc620bef1b88536")
return str(resp)
在这种情况下,您可以只向 Twilio 返回一个空字符串。
def sms():
number=request.form["From"]
call= client.calls.create(from_="+1857*******",to=number,url="https://handler.twilio.com/twiml/EHb330731ab2c9a35fcdc620bef1b88536")
return ('', 204)
一旦解决了这个问题,您会发现您只打了一个电话,即回拨给您自己。要与您要呼叫的号码开会,您需要生成两个呼叫。您说您要发送的消息的正文将是您要拨入会议的另一个号码,所以这应该可以:
def sms():
my_number=request.form["From"]
other_number=request.form["Body"]
twilio_number="+1857*******"
conference_url="https://handler.twilio.com/twiml/EHb330731ab2c9a35fcdc620bef1b88536"
client.calls.create(from_=twilio_number,to=my_number,url=conference_url)
client.calls.create(from_=twilio_number,to=other_number,url=conference_url)
return ('', 204)
如果有帮助,请告诉我。
【讨论】:
以上是关于执行 python 程序以从 twilio 服务器获取呼叫者参加电话会议时出错的主要内容,如果未能解决你的问题,请参考以下文章
Heroku 需要 40 分钟来执行来自 Twilio 的发布请求
Python利用Twilio(国际)以及腾讯云服务做一些事情
在 Raspberry Pi 上从 python 脚本为 Twilio 服务运行终端命令时出错