gpt4 book ai didi

python - 如何使用 Python 从出站 Twilio 调用中检索信息?

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:49 26 4
gpt4 key购买 nike

我是 Twilio 的新手,我正在尝试弄清楚如何从我使用 Python 3 成功进行的出站调用中检索数据。我希望能够检索诸如接收者按下了什么按钮之类的信息。

在稍微阅读了 Twilio 文档(然后有点迷茫)之后,我想我了解了 Twilio 的工作原理以及为什么我无法从电话中检索数据。我认为 Python 程序只是建立了从 Twilio 到电话号码的连接。收件人可以调用任何号码,我可以使用标签获取一些信息。但是我如何将这些信息定向到我的 Python 程序呢?我的想法是让 Twilio(以某种方式)将信息发送回我的 Python 程序,然后我可以采取行动(比如更新数据库)。

我猜测 Twilio 会将数据扔到其他地方,然后我的 Python 程序可以去那里检索,但我不知道在哪里可以学习该技能。我有 Python 3 的基本基础,但对 Web 开发了解不多。只是一些基本的 HTML5 和 CSS3。

最佳答案

此处为 Twilio 开发人员布道师。

您可能已经看到了这个 documentation on gathering user input via keypad in Python在呼入电话中。

当您接到呼入电话时,Twilio 会发出 webhook 请求以了解下一步要做什么,然后您会使用 TwiML 进行响应,例如 <Gather>。当你想获取信息时。

当您拨出电话时,您 initiate the call with the REST API然后当调用接通时,Twilio 会向您的 URL 发出 webhook 请求。然后您可以使用 TwiML 进行响应以告诉 Twilio 要做什么,并且您可以使用 <Gather> 进行响应。也在这个阶段。

让我们从 outbound call as shown in this documentation 收集输入.

首先,您购买一个 Twilio 电话号码并使用 Ngrok 配置它URL:这是一个方便的工具,可以通过公共(public) URL 打开您的本地服务器到网络。当你打出电话时,你将这个 URL 传递给它:your-ngrok-url.ngrok.io/voice .

from twilio.rest import Client
account_sid = 'your-account-sid'
auth_token = 'your-auth-token'
client = Client(account_sid, auth_token)

call = client.calls.create(
url='https://your-ngrok-url.ngrok.io/voice',
to='phone-number-to-call',
from_='your-twilio-number'
)

client.calls.create 中的 URL返回 TwiML,其中包含有关用户接听电话时应该发生什么的说明。让我们创建一个 Flask 应用程序,其中包含在用户接听电话时运行的代码。

from flask import Flask, request
from twilio.twiml.voice_response import VoiceResponse, Gather

app = Flask(__name__)

@app.route("/voice", methods=['GET', 'POST'])
def voice():
# Start a TwiML response
resp = VoiceResponse()

您将使用 TwiML Gather 通过键盘接收用户输入用于在通话过程中收集数字或转录语音的动词。 Action attribute将绝对或相对 URL 作为值,一旦调用者完成输入数字(或达到超时),Twilio 就会向其发出 HTTP 请求。该请求包括用户数据和 Twilio 的标准请求参数。

如果您从调用者那里收集数字,Twilio 会包含 Digits包含调用者输入的数字的参数。

    gather = Gather(num_digits=1, action='/gather')
gather.say('For sales, press 1. For support, press 2.')
resp.append(gather)

如果收件人没有选择一个选项,让我们将他们循环回到开头,以便他们可以再次听到指示。

    resp.redirect('/voice')
return str(resp)

但是,如果他们确实选择了一个选项并在键盘中键入了一个数字,Twilio 将使用他们键入的数字将 POST 请求发送回托管您的 TwiML 的 URL。这就是你如何通过按下按钮从接收者那里获得用户输入并将其定向回你的 Python 程序:使用 request.values['Digits'] .基于该值(在 choice 变量中,您可以相应地更新数据库或其他内容,如下面的条件所示。

@app.route('/gather', methods=['GET', 'POST'])
def gather():
"""Processes results from the <Gather> prompt in /voice"""
# Start TwiML response
resp = VoiceResponse()

# If Twilio's request to our app included already gathered digits,
# process them
if 'Digits' in request.values:
# Get which digit the caller chose
choice = request.values['Digits']

# <Say> a different message depending on the caller's choice
if choice == '1':
resp.say('You selected sales. Good for you!')
return str(resp)
elif choice == '2':
resp.say('You need support. We will help!')
return str(resp)
else:
# If the caller didn't choose 1 or 2, apologize and ask them again
resp.say("Sorry, I don't understand that choice.")

# If the user didn't choose 1 or 2 (or anything), send them back to /voice
resp.redirect('/voice')

return str(resp)

希望这对您有所帮助!

关于python - 如何使用 Python 从出站 Twilio 调用中检索信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57454344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com