I'm following the Dynamic Call Center with Python and Django to build a simple Django call center. I'm handling outgoing and incoming calls like so:
@csrf_exempt
def CallTaskRouter(request):
response = VoiceResponse()
if 'phoneNumber' in request.POST:
dial = response.dial(caller_id=TWILIO_NUMBER, answer_on_bridge='true')
dial.number(request.POST['phoneNumber'],
status_callback_event='initiated ringing answered completed',
status_callback='https://my-url/status',
status_callback_method='GET')
else:
response = VoiceResponse()
gather = response.gather(numDigits=1, action='https://my-url/support/enqueue', method="POST")
gather.say("To speak to support, press one.", language='en-US')
gather.say("To speak to sales, press two.", language='en-US')
response.append(gather)
return HttpResponse(
str(response), content_type='application/xml; charset=utf-8'
)
I'd like to notify user when the customer's phone is "ringing" and I'd like to start the call time counter once the call is answered. I use js to setup "device" and initiate the call like so:
device = new Twilio.Device(data.token, {
codecPreferences: ['opus', 'pcmu'],
fakeLocalDTMF: true,
enableRingingState: true,
});
function callCustomer(phoneNumber) {
numberToCall = phoneNumber;
var params = { phoneNumber: phoneNumber};
newConnection = device.connect(params);
newConnection.on('ringing', function(){
initiateCallTime();
console.log('Ringing')
});
};
Even though I followed all the inquiries in documentation (answer_on_bridge='true', enableRingingState: true) the connection is starting with "open" state (I used connection.status() function to find out) and doesn't go thought the expected status value ("pending", "connecting", "ringing"...)
Am I missing anything? please help
If you are using a trial account for Twilio voice, you can NOT use "ringing" functionality. See here.
I created an issue for it here.