【问题标题】:Twilio for incoming calls how do I detect hang up from caller用于来电的 Twilio 如何检测来电者的挂断
【发布时间】:2023-03-28 13:56:01
【问题描述】:

我已经搜索了互联网,但我找不到这个。

我用 Python 和 Flask 创建了一个应用程序,它接受来电并重定向到我在 webhook 中定义的地址。 (与 ngrok)

@app.route("/incomingCall", methods=['GET', 'POST'])
def incomingCall():
    ......
    ....

@app.route("/gather", methods=['GET', 'POST'])
def gather():

@app.route("/status_callback", methods=['POST'])
def status_callback():
    print("-->/status_callback")
    resp = VoiceResponse()
    resp.redirect('/beginiing')
    return str(resp)

如果在通话过程中来电者过早挂断电话,我该如何检测到?现在我的应用在聚会期间挂起。

为了获得通话状态,我在初始化时添加了这个

strTwilio = sid + ":" + token
acTokenTwilio = b64encode(strTwilio.encode()).decode("ascii")

twilioHeaderAcc1 = {'Authorization': 'Basic %s' % acTokenTwilio, 'Content-Type':'application/x-www-form-urlencoded'}
payLoad = {"status_callback":myNgrokUrl, "status_callback_event":["completed"]}
twilioStatusCallbackUrl = "https://api.twilio.com/2010-04-01/Accounts/" + "AC......"  # AC... is my account SID
resp = s.post(twilioStatusCallbackUrl, data=json.dumps(payLoad), headers=twilioHeaderAcc1, timeout=15)

【问题讨论】:

    标签: twilio


    【解决方案1】:

    从 Twilio 控制台为您的应用程序正在使用的入站 Twilio 号码设置状态回调 URL。

    【讨论】:

    • 您能否更具体地说明一下地点和方式?一个例子会有所帮助。谢谢
    【解决方案2】:

    这里是 Twilio 开发者宣传员。

    要获得呼入电话更新的通知,包括电话完成时,您应该为您的号码设置状态回调 URL。您可以通过editing your number in the dashboard 执行此操作并在此处设置字段:

    你可以看到details that are sent to a StatusCallback URL here

    【讨论】:

    • 非常感谢,这很有帮助。我正在使用 python,它在初始化时一切都是自动化的,包括 ngrok webhook 地址。那么你能给我一个示例代码来说明我将如何做到这一点吗?假设呼叫状态的重定向 url 是 /call_status。在大多数情况下,我的代码在收集语音和播放 DTMF 或文本到语音方面工作得很好。但是,有时当我处于收集模式时,如果调用者挂断我的代码会挂起。所以我想要一个 http req 发送给我,指示呼叫者挂断。
    • 谢谢我试过了 --> HTTPO Post --> api.twilio.com/2010-04-01/Accounts/AC...... 其中 Post data={'status_callback': 'xxxxx.ngrok.io/status_callback', "status_callback_event":["completed"]} 我的 python 烧瓶中的 statusCode 为 200 我有一个条目 --> @app.route("/status_callback", methods=[' POST']) def status_callback(): resp = VoiceResponse() print("status_callback resp --> " + str(resp)) resp.redirect('/begining') return str(resp) 但是当触发来电时我没有看到任何点击此网址--> xxxxx.ngrok.io/status_callback
    • 有两件事。 Twilio API accepts application/x-www-form-urlencoded,而不是 JSON,因此您需要一个不同的 HTTP 请求,我也看不到您向该请求添加任何身份验证。第二件事,使用 TwiML 响应状态回调 webhook 不会做任何事情,因为状态回调与调用本身是异步的。
    • 对不起,我实际上有标题,以便更容易低估我在上面的原始帖子中添加了代码,请帮助我验证
    【解决方案3】:

    对于此处的上下文,用户正在通过传入的电话号码资源设置语音和状态回调 URL。为此,您需要将状态回调 URL 作为参数传递。请参阅下面的示例,了解如何使用 Python 帮助程序库完成此操作。

    incoming_phone_number = client \
        .incoming_phone_numbers('PNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
        .update(
                voice_url='https://xxxxxxx.ngrok.io/voice',
                status_callback='https://xxxxxxx.ngrok.io/status_callback' 
         )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多