Twilio round robin not stopping when someone answers - twilio

Can you tell me if it is possible to forward an incoming call to a list of multiple numbers, so when one timeouts another starts?
What I am trying to do is basically this:
<Dial timeout="10">+123</Dial>
<Dial timeout="10">+124</Dial>
<Dial timeout="10">+124</Dial>
Now Dial 1 for +123 times out, but Dial 2 for +124 get's answered, so I do NOT want to start Dial 3 but it calls 3 after 2 answered. How would I achieve that? I'm basically trying to make it so multiple numbers are being called but in a sequence and the sequence stops if one answers. If you have an alternative to just using simple I'm open for that too.
Thank you.

Twilio developer evangelist here.
The way to do this without continuing to call once someone answers is by separating the <Dial>s into different webhooks. You'd do so by providing an action attribute to the <Dial> which is a URL that will be called when the <Dial> is completed.
That way you can use the DialCallStatus parameter that is sent to the action URL to see whether the phone was answered or not. If it was answered, then you can just return <Hangup/> if it wasn't answered, you can <Dial> the next number in your list.
You can also use the FindMe Twimlet for this purpose or this code written for Twilio Functions.
Let me know if this helps at all.

Related

Twilio <Gather> enhanced attribute

I used widget in my project to receive the person answers on a phone call and based on the respond it proceeds to the next step. The responds are limited to 'yes' and 'no'.
I noticed most of the time, the 'timeout' situation happens in step which prevents the flow to go to the next step which is 'split based on'. It means it does not receive the answer no matter how the person says the word. I looked for the possible solution and I came across the premium speech model by adding the enhanced attribute. I'm not sure know if it is the solution or there is a better way to overcome this issue. any suggestion in this matter would be much appreciated since I couldn't find anything helpful through my google search.
For Studio, place the Text to speech in the Gather Input on Call Widget rather than a Say Widget, that will accomplish what #jack has mentioned in Studio (allow you to barge into the conversation for speech or DTMF collection). Studio doesn't currently support Enhanced Gather.
You can look at the Studio Execution logs, to see what the Gather Widget received as Input (SpeechResult) or the Split Based on Widget, to see what it received and what it is comparing to based on your logic. Sometimes, Yes or No may end in a period for example, but you are looking for Yes or No (.)
Widget Library
Understanding Twilio Studio Flow
make sure <Say> or <Play> are nested in the tag like this
<Response>
<Gather>
<Say>Please say Yes Or No</Say>
</Gather>
</Response>
not like this
<Response>
<Gather>
</Gather>
<Say>Please say Yes Or No</Say>
</Response>
If you can share some images or code, it would be helpful.

Twilio Voicemail (forwading to cell phone)

I am currently building a call forwarding system with Twilio. I am routing calls to my cell phone. The problem I am having is with the voicemail. My regular cell phones voicemail will pickup sometimes where I want to play a custom message of the business they are calling.
I understand you can use the dial time out. But, I've found that in cases where two calls are coming in on top of each other or in other instances it will still end up going to the regular cell phones voicemail.
My question is, is there any other way around this? I could press a button when I answer like 1 or something if that would work. But, I'm just not seeing a way of doing this. Ideally I would want a 100% success rate with forwarding to the proper voicemail.
Thanks in advance.
You want human detection, you can find more details at the link below, but you use the Dial verb with Number Noun URL parameter (Whisper) and Say/Gather verbs to announce yourself to the dialed party and have them enter any key to answer the call. If they don't enter a key, you know it was the voicemail that answered and direct the inbound call accordingly.
Alternatives to AMD

Twilio Merge Child Recordings

I am trying to build an API which can Onhold both inbound and outbound calls, what I basically do is, update the CallResource and forward it to a Play command when I want to hold on and connect to the agent if I want to resume the call.
This works good, I am able to hold on/ resume call successfully.
I have seen some questions and answers regarding this, Twilio support suggests to use Conference option for that, isn't there may be a new solution (or other solution) for this.
What I want is actually merge child call recordings, isn't there an option for this?
Thanks.
Twilio developer evangelist here.
There is no way to concatenate call recordings within Twilio, what I would recommend is to download the files and concatenate them with something like ffmpeg. You should be able to script this too.

Twilio API call retrying limit

I was trying to implement voice call using Twilio API(Using node twilio wrapper) in which it would require to retry x number of times if call not answered. It seems that if i ignore call from Twilio, it keeps trying automatically. So, is there any way i can set the retying limit to particular number of times?
Thanks in advance.
Twilio evangelist here.
As far as I know we do not have any auto-retry behavior built into Twilio, so its odd that you are seeing this behavior. I'd suggest sending an email over to help [at] twilio.com with some example CallSids. Our awesome support team can work directly with you to help figure out whats going on.
Hope that helps.

Anonymous CallerId and (Un)conditional Forwarding with Twilio

When forwarding calls to a twilio number using unconditional forwarding from a mobile phone like this:
*21*0031123456789#
I never get information about the original caller id, or better, I get +266696687 which is the equivalent for ANONYMOUS.
This is a sample of the request parameters that twilio sends
/twilioml?AccountSid=AC9xxxxxxxxxxxxxxxxxx&ToZip=&FromState=&Called=%2B31123456789&FromCountry=LS&CallerCountry=LS&CalledZip=&Direction=inbound&FromCity=&CalledCountry=NL&CallerState=&CallSid=CAxxxxxxxxxxxxxxxxxxxx&CalledState=&From=%2B266696687&CallerZip=&FromZip=&ApplicationSid=APxxxxxxxxxxxxxxxxx&CallStatus=ringing&ToCity=&ToState=&To=%2B31123456789&ToCountry=NL&CallerCity=&ApiVersion=2010-04-01&Caller=%2B266696687&CalledCity=
If I try a conditional call forwarding like this one for example:
*61*0031123456789#
/twilioml?AccountSid=AC9xxxxxxxx&ToZip=&FromState=&Called=%2B31123456789&FromCountry=NL&CallerCountry=NL&CalledZip=&Direction=inbound&FromCity=&CalledCountry=NL&CallerState=&CallSid=CAxxxxxxxxxxxxxxx&CalledState=&From=%2B315555555&CallerZip=&FromZip=&ApplicationSid=APxxxxxxxxxxxxxxxxxx&CallStatus=ringing&ToCity=&ToState=&To=%2B31123456789&ToCountry=NL&CallerCity=&ApiVersion=2010-04-01&Caller=%2B315555555&CalledCity=
In this case, assuming that my number is +315555555, the caller id information is my own number and not the original number that called my phone
I'm trying this from Vodafone Netherlands but I haven't tried with another operator yet.
Is there anyway to make this work? Is it a Vodafone (Netherlands) issue or something at the Twilio side because otherwise I'm afraid this is a major setback to our solution.
Thanks in advance
Can you try this example: https://www.twilio.com/labs/twimlets/forward ?
If that also fails, there's something wrong with the entire process, potentially related to your phone number or carrier.
If it does work, there's probably an error in your TwiML. Would you be able to share the underlying code? Or at least whatever is generated?
Either way, we should be a little closer to the underlying problem. :)
According to Twilio it's an operator issue

Resources