入站呼叫发送未预期的挂断信号

时间:2016-09-26 11:02:46

标签: twilio

我正在尝试制作5组40到50秒的入站呼叫者录音。

我有以下TwiML,它是为响应入站呼叫而设置的:

<Response>
    <Say>Recording $n</Say>
    <Record action="/twilio/answer/$n" finishOnKey="123456789#*" maxLength="50" playBeep="true" timeout="5" trim="trim-silence" />
</Response>

其中$ n是数字1 - 5.

在超时或按钮按下后,邮件将被发送到烧瓶中的以下视图:

@app.route('/twilio/answer/<int:question_id>', methods=['POST'])
def answer(question_id):
    """Receives the question and ensures it is the correct length."""
    length = int(request.values.get("RecordingDuration", 0))
    if length >= MIN_LENGTH:
        url = request.values.get("RecordingUrl", None)
        save_url(url)
        response = redirect_to_question(question_id + 1)
        return str(response)
    else:
        # Replay question
        response = twiml.Response()
        message = """The recording must be at least %s seconds long.""" % MIN_LENGTH
        return redirect_to_question(question_id, say=message)

呼叫按预期工作一半的时间。另一半,来电者似乎发送了“挂机”。

POST/twilio/answer/

Request
URL
https://example.com/twilio/answer/1

Parameters
CALLED  +441234567890
DIGITS  hangup

我绝对不会挂断电话。

当录制持续时间为31秒时,始终会发送挂断信号。 如果第一个录制/视图成功,则所有其他录制/视图也将成功。

我通过我的手机(Android)以及Skype体验过这一点。

我正在使用带有gunicorn的烧瓶:

gunicorn voice:app  -b 127.0.0.1:8000  --timeout 120  --graceful-timeout     120  --workers 3 --worker-class gevent  --log-file - --log-level debug

我使用nginx作为反向代理:

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;

ssl_certificate somewhere/fullchain.pem;
ssl_certificate_key somewhere/privkey.pem;
ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers         HIGH:!aNULL:!MD5;

access_log  /var/log/nginx/access.log;
error_log  /var/log/nginx/error.log;

location / {
    proxy_pass         http://127.0.0.1:8000;
    proxy_redirect     http://127.0.0.1:8000 https://example.com;

    proxy_set_header   Host                 $host;
    proxy_set_header   X-Real-IP            $remote_addr;
    proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto    $scheme;
    proxy_read_timeout 120s;
}
}

在我看来,这是Twilio的问题。

有吗:

  1. 有什么方法可以解决这个问题?
  2. 一种忽略挂断信号并继续的方法?

1 个答案:

答案 0 :(得分:1)

事实证明,如果30秒内没有音频,则电话号码由运营商提供。

使用其他提供程序修复问题。等待Twilio支持告诉我如何找到没有此功能的号码。