我允许我的网站接受使用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
});