微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在本地 pc python flask 中从 twilio API 调用后保存入站通话录音

如何解决如何在本地 pc python flask 中从 twilio API 调用后保存入站通话录音

我使用示例代码接收从一个号码到 twilio 号码的呼叫。 现在我需要将录音保存为 mp3。我不明白该怎么做。我试图调用各种参数但失败了。我是 twilio 的新手。

> `from flask import Flask
from twilio.twiml.voice_response import VoiceResponse

app = Flask(__name__)


@app.route("/record",methods=['GET','POST'])
def record():
    """Returns TwiML which prompts the caller to record a message"""
    # Start our TwiML response
    response = VoiceResponse()

    # Use <Say> to give the caller some instructions
    response.say('Hello. Please leave a message after the beep.')

    # Use <Record> to record the caller's message
    response.record()

    # End the call with <Hangup>
    response.hangup()

    return str(response)

def record(response):
    # function to save file to .wav format
    

if __name__ == "__main__":
    app.run(debug = True)

我按照链接操作,但无法理解如何将其与烧瓶链接以保存文件https://www.twilio.com/docs/voice/api/recording?code-sample=code-filter-recordings-with-range-match&code-language=Python&code-sdk-version=6.x

解决方法

这里是 Twilio 开发者布道者。

当您使用 <Record> 记录用户时,您可以提供一个 URL 作为 recordingStatusCallback attribute。然后,当录音准备好时,Twilio 将向该 URL 发出请求,并提供有关录音的详细信息。

因此,您可以将 record TwiML 更新为如下所示:

    # Use <Record> to record the caller's message
    response.record(
        recording_status_callback="/recording-complete",recording_status_callback_event="completed"
    )

然后您将需要一个 /recording-complete 的新路径,您可以在其中接收回调并下载文件。 how to download files in response to a webhook 上有一个很好的帖子,但它涵盖了彩信。但是,我们可以从那里学到什么来下载录音。

首先,安装并导入 requests library。同时从 Flask 导入 request

import requests
from flask import Flask,request

然后,创建 /recording-complete 端点。我们将从请求中读取记录 URL。你可以看到all the request parameters in the documentation。然后我们将使用录音 SID 作为文件名打开一个文件,使用请求下载录音并将录音内容写入文件。然后我们可以回复一个空的 <Response/>

@app.route("/recording-complete",methods=['GET','POST'])
def recording_complete():
    response = VoiceResponse()

    # The recording url will return a wav file by default,or an mp3 if you add .mp3
    recording_url = request.values['RecordingUrl'] + '.mp3'

    filename = request.values['RecordingSid'] + '.mp3'
    with open('{}/{}'.format("directory/to/download/to",filename),'wb') as f:
        f.write(requests.get(recording_url).content)

    return str(resp)

告诉我你是如何处理的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。