当前位置: 首页 > 知识库问答 >
问题:

Twilio/Python/Flask:Twimlet实现的语音邮件超时?

萧韬
2023-03-14

我正在使用一个Python3Flask REST-ful应用程序来控制我的基于Twilio的电话服务。一切都很好,但我有一个问题一直找不到答案。

当我想将呼叫者重定向到语音信箱时,我从REST接口调用以下voice_mail函数,并通过twimlet管理语音信箱,如下所示...

def voice_mail():
    vmbase = 'http://twimlets.com/voicemail?Email=USER@DOMAIN.COM&Transcribe=False'
    vmurl = '... URL pointing to an mp3 with my voicemail greeting ...'
    return redirect(
        '{}&Message={}'.format(vmbase, vmurl),
        302
    )

这很好,但似乎没有任何方法来控制来电者的语音信箱消息可以持续多长时间。我想对持续时间设定一个上限。

是否可以通过此twimlet(或者其他twimlet)强制在可配置的时间之后切断语音邮件录音?

如果没有,那么基于Twimlet的语音邮件录制是否有默认的最长持续时间?

    null

谢谢你。

共有1个答案

宋朝
2023-03-14

鉴于语音邮件twimlet不允许指定录制时间限制,我可以通过以下方式在没有twimlet的情况下解决这个问题。通过flask_mail包发送电子邮件非常简单。

下面的代码片段展示了我是如何做到这一点的...

import phonenumbers
from flask import Flask, request, Response, url_for, send_file
from flask_mail import Mail, Message

app = Flask(__name__)

mail_settings = {
    'MAIL_SERVER'   : 'mailserver.example.com',
    'MAIL_PORT'     : 587,
    'MAIL_USE_TLS'  : False,
    'MAIL_USE_SSL'  : False,
    'MAIL_USERNAME' : 'USERNAME',
    'MAIL_PASSWORD' : 'PASSWORD'
}

app.config.update(mail_settings)
email = Mail(app)

# ... etc. ...

def voice_mail():
    vmurl = '... URL pointing to an mp3 with my voicemail greeting ...'
    resp = VoiceResponse()
    resp.play(vmurl, loop=1)
    resp.record(
        timeout=5,
        action=url_for('vmdone'),
        method='GET',
        maxLength=30, # maximum recording length
        playBeep=True
    )
    return Response(str(resp), 200, mimetype='application/xml')

@app.route('/vmdone', methods=['GET', 'POST'])
def vmdone():
    resp    = VoiceResponse()
    rcvurl  = request.args.get('RecordingUrl',      None)
    rcvtime = request.args.get('RecordingDuration', None)
    rcvfrom = request.args.get('From',              None)
    if not rcvurl or not rcvtime or not rcvfrom:
        resp.hangup()
        return Response(str(resp), 200, mimetype='application/xml')
    rcvurl  = '{}.mp3'.format(rcvurl)
    rcvfrom = phonenumbers.format_number(
        phonenumbers.parse(rcvfrom, None),
        phonenumbers.PhoneNumberFormat.NATIONAL
    )
    msg = Message(
        'Voicemail',
        sender='sender@example.com',
        recipients=['recipient@example.com']
    )
    msg.html = '''
<html>
<body>
<p>Voicemail from {0}</p>
<p>Duration: {1} sec</p>
<p>Message: <a href="{2}">{2}</a></p>
</body>
</html>
'''.format(rcvfrom, rcvtime, rcvurl)
    email.send(msg)
    return Response(str(resp), 200, mimetype='application/xml')

另外,如果有人能在语音邮件twimlet中添加一个参数来指定最大录制持续时间,那就更好了。它应该和使用该参数的值在record()谓词的参数中设置MaxLength一样简单。

 类似资料:
  • 我有一个固定电话要转接。 如果我打那个座机(不使用twilio),它会响20次才放弃。 在twilio中,我有一个非常简单的呼叫转发twiml bin,如下所示: ...当我拨打我的twilio号码时,呼叫会转发,但在放弃之前只响了6-7次。这是出乎意料的,因为timeout属性的默认值是30秒。 如果我显式设置timeout属性,如下所示: ...行为没有改变——电话在6-7响后仍然会放弃。 在

  • 在实际开发中,当你收到一个需求的时候,比如要做一个「收发邮件」的功能。 如果你完全没有印象,没有思路,可以直接 Google 搜索的。 因为我们不可能对每个知识点都了解,不了解不可耻,但要懂得怎么去找资料了解。 强调一下, 用 Google 搜索。 用 Google 搜索。 用 Google 搜索。 恕我直言,百度搜索是真的辣鸡。 那我们怎么去找资料呢? 首先我们可以直接 Google 「Pyth

  • 本文向大家介绍python实现QQ邮箱/163邮箱的邮件发送,包括了python实现QQ邮箱/163邮箱的邮件发送的使用技巧和注意事项,需要的朋友参考一下 QQ邮箱/163邮箱的邮件发送:py文件发送邮件内容相当于一个第三方的客户端,借助于QQ/163邮箱服务器来发送的邮件。 主要配置: 导入模块——import    smtplib 邮箱SMTP服务器的主机地址,HOST——将来使用这个服务器收

  • 本文向大家介绍Python如何实现文本转语音,包括了Python如何实现文本转语音的使用技巧和注意事项,需要的朋友参考一下 准备 我测试使用的Python版本为2.7.10,如果你的版本是Python3.5的话,这里就不太适合了。 使用Speech API 原理 我们的想法是借助微软的语音接口,所以我们肯定是要进行调用 相关的接口。所以我们需要安装pywin32来帮助我们完成这一个底层的交互。 示

  • 本文向大家介绍Python实现SMTP邮件发送,包括了Python实现SMTP邮件发送的使用技巧和注意事项,需要的朋友参考一下 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 SMTP

  • 我正在开发一个应用程序,希望在用户之间实现屏蔽数字。想法是。。。假设你想打电话给我。你不会通过仪表板和/或订单显示页面看到我的号码,而是会看到一个“呼叫”按钮。当你点击这个按钮时,手机会响。当你接电话时,twilio会尝试将你连接到我的号码,但是,你看到的号码将是twilio号码,而不是我的号码。我正在Rails中开发。我想我快到了,但还是有个错误。这是我的代码: 我在routes中添加了这条路线