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
Related
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.
I made a simple chatbot using the studio template and it works fine. However, it then loops after the last response. So let's say I give the user 2 choices, Y and N. After they say Y they get a response but if they message the bot again they get the initial message once again to loop the process. How do I stop this? In the docs I only found info on how to stop all incoming messages but this isn't what I want. I just want to end the convo for good as in my application it has a one time use intention. Thanks.
Twilio developer evangelist here.
There's not really a way to stop incoming texts. What you want to do in this case is stop responding to an incoming text after the initial flow through.
The way to do this would be to use Twilio Functions and function widgets to store the numbers that have successfully completed the questions (you could use any database for this, if you want to keep it within Twilio then Twilio Sync can help here). Then you can insert a function widget at the start of the flow that retrieves whether the number messaging has completed the questions and combine with a split widget to decide whether to send the first message or just complete the flow.
Let me know if that helps at all.
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.
I would like to design the SMS referral link for a lead alerts application. (So the pro would receive the SMS message on their device with a link to click through to the job request details.) I'd like to make it secure and scalable. The link below arrives in the SMS as a shortened URL. That much I understand.
Porch.com does something similar and I'd like to know what the strategy is behind each segment in the URL (or your best estimation). Can someone help me understand?
Here is an example: (Thanks Porch.com)
https://porch.com/pro/project/3fd55669-d7cf-4655-892e-252080c34a79?c=50145918&email=12345#yahoo.com&referrerSource=sms
Twilio developer evangelist here.
First of all, this isn't really a question for Stack Overflow. This is a place for asking questions about code that doesn't work in order to get it to work.
Having said that, the more I looked at the URL as I was commenting on this question, the more I feel I worked out. This is my idea of what the URL is saying.
Here's the URL again: https://porch.com/pro/project/3fd55669-d7cf-4655-892e-252080c34a79?c=50145918&email=12345#yahoo.com&referrerSource=sms
The random string in the URL, 3fd55669-d7cf-4655-892e-252080c34a79, looks like it is the identifier for the project itself. It's long and random, like a uuid, so it would be hard to guess, but can uniquely identify the project.
The email is presumably the email address of the pro that the SMS was sent to, so that the return on sending SMS projects to them can be measured.
The referrerSource is then used to measure how each of their referring sources is performing.
The only parameter that is impossible to really guess at is the c. Removing it (in fact, removing any or all of the query parameters) didn't change the result of loading the page. This implies that it is just another tracking parameter.
Hope that helps.
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