繁体   English   中英

在twilio Rest API上使用Status_Callback

[英]Using Status_Callback on twilio Rest API

我试图在用户挂断或完成时从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

从twilio文档http://www.twilio.com/docs/quickstart/python/rest/call-request可以包含一个用于通知的URL。 我的问题是该文件在url中的内容应该是什么,以及我如何在呼叫已完成或被拒绝等状态下收到回报。

我在那找到了答案: 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方法。

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.

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

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM