I have my VIOP call in action and the suddenly I get GSM call or something else so I need to put VOIP call on hold.
I found this https://www.twilio.com/blog/2009/09/call-queueing-putting-callers-on-hold-calll-redirect-new-url-new-feature.html
So now I thinks that I need to use twiml to place caller on hold
<Response>
<Say> Thank you for calling, a representative will be with you shortly</Say>
<Play loop="100">mymp3link</Play>
</Response>
And afterwards taking caller off hold with:
POST https://api.twilio.com/2008-08-01/Account/{YourAccountSid}/Calls/{WaitingCallersCallSid}
CurrentUrl=http://www.example.com/dial-representitive
But the main question is if this requests could help with my issue?
And if it can help how can I use my Android client to send this twiml request?? (with twilio library or with common HTTP request??)
P.S. Seems need Twilio evangelist here.
Twilio Documentarian here - will help if I can :)
For the initial use case you are describing (you are on a VoIP call with another party, and then receive a call that requires you to put the call on hold), I will suggest a path of least resistance, and we can iterate from there.
In the TwiML to initiate the call from the Android client, rather than using <Dial> to dial a number, consider creating a two-person <Conference>. Then if your Android client needs to jump off the conference call, they can simply rejoin the same conference call in progress once their non-VoIP call has ended.
Related
I am working with linphone call feature using Asterisk server. I have set call limit to one(1) in asterisk server for every sip users. So it will permit only 1 outgoing call and 1 incoming call at a time. Now I want to know if other user calls to user which is already busy with other call then how can I realize that, the end user is busy? Is there any way to get that using linphone lib? Or is there any way to get Asterisk HangupCauseCode using linphonelib?
I have checked with LinphoneCall.getReason() while CallEnd state but it returns null.
You should write your dialplan and save somewhere DIALSTATUS variable after dial attempt.
In Android, they have this new API called InCallService where you can get call events and for each call object you can do some action. I'm looking for equivalent in iOS. In iOS, I wanted to do the achieve the same thing specifically for outgoing call also. In iOS there is CXCallObserverDelegate protocol but in this case I can only get UUID of the call that's all I can get. I'm not able to do any additional action for the call. I wanted to execute DTMF tone once the call is active but it is not possible. In CallKit there is cxaction called CXPlayDTMFCallAction but this only applies for VOIP application and what I need is to execute the dtmf for gsm calls. Does anybody have any solution for here?
Twilio's document is not clear on following questions:
for one audio call, are the CallSids the same in: outgoing side's connection.parameters, incoming side's connection.parameters, the TwML app's initial request, and TwML app's statusEventCallback requests? do I have to use the Rest API to find out the "root" CallSid for the purpose of tracking a single call?
Will I receive the CallSid parameter in statusEventCallback requests?
Is there a way to pass contextual info as parameters from outgoing side to incoming side only throw TCDevice.connect?
How to extend the timeLimit to a one-to-one call? I saw examples to do conference call. Is it the same? will participants of the current call notice anything, or it's very smooth?
thanks!
We have tested Twilio client on both iPhone and Android and it works very well. Now the question is whether we should keep the socket alive in the background all the time or wait until our server sends some hints to the client that someone is calling it and then initialize Twilio client Device with capability token. The former works but may consume a lot of power. The latter may not work if Twilio calls before client initialize the device and the incoming event will not fire.
Twilio evangelist here.
I think a lot of this depends on if you are only making outbound calls from the app, or if you also want to accept inbound calls in the app.
If its the former, then I think its OK to lazily create the device only when the user initiates their outbound call and then destroy the device once the all is complete.
If its the latter, then you'll need to create the token earlier and possibly also consider that, by default, the token will expire in 1 hour and will need to be reset.
Hope that helps.
i have tried many things but not getting how to do conferencing in android.
i can receive incoming call and make another outgoing call...but not able to combine those calls as "menu option merge do"...
if i can take object reference of phone or call class(internal class of android) i can use conference method available theres
AFAIK, there is no API for this in the Android SDK, sorry.