使用Twilio将POST参数发送到Voice URL以接听来电

时间:2014-05-06 15:36:42

标签: javascript twilio

我允许我的网站接受使用python和javascript的来电。我想确保接听电话的人的Twimio正确记录了他们的用户名。在他们的docs中发布时,您需要创建一个能力令牌来接受来电:

capability.allow_client_outgoing(application_sid)
capability.allow_client_incoming("jenny")

网站上最多可以有20个不同的用户可以接听来电,因此我希望更换"jenny"字符串以允许根据登录的用户设置动态用户名。

我使用Django作为我的框架,并通过一个请求来自request.user.username的用户名的视图生成令牌

def token(request):                                                                            

    capability = TwilioCapability(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
    capability.allow_client_outgoing(APP_ID)                                                                    
    capability.allow_client_incoming(request.user.username)     

    token = capability.generate()                                                                                            
    data =  json.dumps({'token': token})                                                                                                                         

    return HttpResponse(data, content_type='application/json')         

我的Twilio语音网址定向到此功能。如果它没有看到phone_number参数,那么它可以假设它是来电。我想以某种方式发送' call_rep'通过这篇文章的参数,它将匹配用户名以允许来电与正确的用户信息:

@twilio_view                                                             
def make_call(request):                                                  
    resp = Response()                                                                                                      

    if 'phone_number' in request.POST:                                   
        phone_number = request.POST['phone_number']                                                                                                  
        resp.say("Making the call now")                                  
        resp.dial(number=phone_number, callerId=TWILIO_PHONE_NUMBER)     

    else:                                                                

        resp.say("Incoming call")                                                                                        
        with resp.dial(callerId=TWILIO_PHONE_NUMBER) as r:               
            r.client(request.POST['call_rep'])                                                         

    return resp    

我的JavaScript中是否存在我需要将call_rep的用户名放入?

Twilio.Device.setup(token);

Twilio.Device.ready(function (device) {           
});                                               

Twilio.Device.error(function (error) {            
        console.log(error);                       
    $("#log").text("Error: " + error.message);    
});                                               

Twilio.Device.offline(function(device) {          
    // Called on network connection lost.         
});                                               

Twilio.Device.connect(function (conn) {           
    console.log("Successfully established call"); 
});                                               

Twilio.Device.disconnect(function (conn) {        
    // Called for all disconnections              
    console.log('DISCONNECT: ' + conn.status);    
});                                               

/* Listen for incoming connections */             

Twilio.Device.incoming(function (conn) {          
        connection = conn 
        connection.accept()
});

对于传出呼叫,我可以传递额外的参数没有问题。如何处理来电?

Twilio.Device.connect({                       
    call_rep: '{{ request.user.username }}',  
    phone_number: phone_number                
});  

0 个答案:

没有答案