2

当用户挂断或完成时,我试图从 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 twilio 文档http://www.twilio.com/docs/quickstart/python/rest/call-request您应该包含一个用于通知的 url。我的问题是 url 中这个文件的内容应该是什么,以及我如何才能收到关于呼叫已完成或拒绝等状态的返回。

4

3 回答 3

3

我在那里找到了答案:http: //www.twilio.com/docs/api/twiml/twilio_request

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

请求参数

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

按照链接http://www.twilio.com/docs/api/twiml/twilio_request#synchronous

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

于 2012-08-30T08:11:58.143 回答
1
status_callback (string) – A URL that Twilio will request when the call ends to notify your app.

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

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

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

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

于 2012-08-30T08:11:19.233 回答
0
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

在此处输入图像描述

于 2017-09-05T13:42:53.687 回答