如何解决如何在本地 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 举报,一经查实,本站将立刻删除。