Python 在twilio Rest API上使用状态回调

Python 在twilio Rest API上使用状态回调,python,rest,twilio,Python,Rest,Twilio,我试图在用户挂断或完成时从twilio获得通知。我已经获得了呼叫用户的代码,但无法在呼叫完成时获得通知 from twilio.rest import TwilioRestClient def call(): account_sid = '************************' auth_token = '***********************' client = TwilioRestClient(account_sid, auth_token)

我试图在用户挂断或完成时从twilio获得通知。我已经获得了呼叫用户的代码,但无法在呼叫完成时获得通知

from twilio.rest import TwilioRestClient

def call():
    account_sid = '************************'
    auth_token = '***********************'

    client = TwilioRestClient(account_sid, auth_token)

    call = client.calls.create(to='+254723453841',
                       from_='+1 214-390-9422',
                       url='https://dl.dropbox.com/u/*******/acceptanceOfTerms.xml',
                       if_machine='Hangup', timeout=20,  status_callback='https://dl.dropbox.com/u/*******/response.xml' )


     print call.sid

     print 'The Sid is '+ call.sid+' and the call status is '+call.status
Frrm您应该包括一个通知url的twilio文档。我的问题是url中该文件的内容应该是什么,以及如何接收呼叫已完成或已拒绝等状态的返回

status_callback (string) – A URL that Twilio will request when the call ends to notify your app.
除了“请求”它之外,他们不会说它通过URL发送什么,所以您必须反复尝试才能找到答案。它将发回您发送给它们以打开呼叫的相同参数

给它一个回调url——一个点击你控制下的服务器的url——看看会发生什么。希望它能传递一些参数(通过GET或POST)来标识哪个调用已经结束。您可能还必须嗅探远程ip地址,以确认它来自正确的人

status_method (string) – The HTTP method Twilio should use when requesting the above URL.
有了这个,你可以判断是“获取”还是“发布”

除了“请求”它之外,他们不会说它通过URL发送什么,所以您必须反复尝试才能找到答案。它将发回您发送给它们以打开呼叫的相同参数

给它一个回调url——一个点击你控制下的服务器的url——看看会发生什么。希望它能传递一些参数(通过GET或POST)来标识哪个调用已经结束。您可能还必须嗅探远程ip地址,以确认它来自正确的人

status_method (string) – The HTTP method Twilio should use when requesting the above URL.

有了这个,你大概可以告诉它是“获取”还是“发布”。

我在那里找到了答案:

在收到呼叫、从应用程序请求TwiML、进行处理并最终结束呼叫后,Twilio将向为被调用的Twilio号码(如果有)配置的StatusCallback URL发出异步HTTP请求。通过为您的Twilio号码提供StatusCallback URL并捕获此请求,您可以确定通话何时结束并接收有关通话的信息

请求参数

Twilio在对StatusCallback URL的异步请求中传递给应用程序的参数包括在同步TwiML请求中传递的所有参数

跟随链接


当Twilio收到您的Twilio号码之一的呼叫时,它会向为该号码配置的语音URL发出同步HTTP请求,并期望收到TwiML的响应。Twilio将以下参数与其请求一起作为POST参数或URL查询参数发送,具体取决于您配置的HTTP方法。

我在那里找到了答案:

import configobj
from twilio.rest import TwilioRestClient
import time

 def call_to(url, to):

    cfg = configobj.ConfigObj("config.ini")
    sid = cfg["twilio"]["sid"]
    auth_token = cfg["twilio"]["auth_token"]
    twilio_number = cfg["twilio"]["twilio_number"]

    client = TwilioRestClient(sid, auth_token)

    call = client.calls.create(
        to=to,
        from_=twilio_number,
        url=url
    )

    for i in range(0,10):
        print i
        time.sleep(5)
        sid=call.sid
        callinfo = client.calls.get(sid)
        print callinfo.status
在收到呼叫、从应用程序请求TwiML、进行处理并最终结束呼叫后,Twilio将向为被调用的Twilio号码(如果有)配置的StatusCallback URL发出异步HTTP请求。通过为您的Twilio号码提供StatusCallback URL并捕获此请求,您可以确定通话何时结束并接收有关通话的信息

请求参数

Twilio在对StatusCallback URL的异步请求中传递给应用程序的参数包括在同步TwiML请求中传递的所有参数

跟随链接

当Twilio收到您的Twilio号码之一的呼叫时,它会向为该号码配置的语音URL发出同步HTTP请求,并期望收到TwiML的响应。Twilio将以下参数与其请求一起作为POST参数或URL查询参数发送,具体取决于您配置的HTTP方法

import configobj
from twilio.rest import TwilioRestClient
import time

 def call_to(url, to):

    cfg = configobj.ConfigObj("config.ini")
    sid = cfg["twilio"]["sid"]
    auth_token = cfg["twilio"]["auth_token"]
    twilio_number = cfg["twilio"]["twilio_number"]

    client = TwilioRestClient(sid, auth_token)

    call = client.calls.create(
        to=to,
        from_=twilio_number,
        url=url
    )

    for i in range(0,10):
        print i
        time.sleep(5)
        sid=call.sid
        callinfo = client.calls.get(sid)
        print callinfo.status


很可能Twilio实际上正在请求状态回调URL。然而,由于它是一个静态XML文档,所以您无法判断Twilio是否这样做了。Twilio不会在StatusCallback URL上执行任何Twiml-它只是在那里为您提供有关调用的详细信息,并告诉您状态是什么。Ok。所以它修改了一个退出的XML文件,添加了一些细节,对吗?有没有一种方法可以让我请求一个触发器来指示某个条件已经满足?在这种情况下,呼叫已完成?如果您指定StatusCallback,我们所做的就是向您的应用程序发出HTTP请求,告诉您呼叫的状态(“已完成”、“失败”、“无应答”等)。我们不会修改您的任何XML。由您决定如何处理此HTTP请求。很可能Twilio实际上正在请求状态回调URL。然而,由于它是一个静态XML文档,所以您无法判断Twilio是否这样做了。Twilio不会在StatusCallback URL上执行任何Twiml-它只是在那里为您提供有关调用的详细信息,并告诉您状态是什么。Ok。所以它修改了一个退出的XML文件,添加了一些细节,对吗?有没有一种方法可以让我请求一个触发器来指示某个条件已经满足?在这种情况下,呼叫已完成?如果您指定StatusCallback,我们所做的就是向您的应用程序发出HTTP请求,告诉您呼叫的状态(“已完成”、“失败”、“无应答”等)。我们不会修改您的任何XML。由您决定如何处理此HTTP请求。