I installed Kamailio, am able to add users and make calls, but I need to use it for my android push to talk client app i.e. upon calling another user(s) (using the same app), instead of ringing their app/phone it should directly transmit voice of the caller while the other user(s) is muted and to respond other user presses a toggle button to speak to the caller.
Is there a module that does this, would I have to implement my own or would I have to modify the source code to achieve this?
Thanks.
Kamailio is a SIP signaling server, usually acting as a proxy, it does not process media (audio) at all. Sending/receiving the media in a call is a matter of end points. Therefore the PTT functionality has to be implemented by client applications or a dedicated PTT server has to be placed in the network.
Related
We are building an Alexa skill that connects to a custom mobile application. As part of the skill we'd like to have a fallback intent that simply connects the user to an operator. The operator is using a custom mobile application (that we have already built).
Ideal order of operations:
Alexa converses with the user and cannot determine an intent
Alexa falls back to the fallback intent and says "Hold on, I am connecting you to an operator"
Alexa plays music and sends message to our existing system indicating that an operator should drop in on the smart speaker (in our case, we will be using an echo dot to start with).
Operator drops in on echo dot, at which point we terminate the hold music.
The operator can now manually determine the intent where Alexa was unable to.
I've been trying to figure out how to program this. Specifically:
Is there any way to programmatically drop in on a device (using a deviceId)?
In general, how does one push notifications to the Alexa enabled device. For example in #4, we would need to enable a drop in intercom type functionality but also ensure that the music is terminated at that point.
Thanks in advance.
I'm integration bluetooth support in my Android app for VOIP calling scenarios. Goal: display caller ID on bluetooth device, allow accept/reject of incoming/active calls through the BT peripheral. Without any work, everything works as expected when calling with the native dialer on Android but I can't find the appropriate APIs to implement the same behavior in our app - are these not exposed?
If a VOIP call is initiated through our app, we start the bluetooth SCO connection and listen for any media /state changes. Pressing the 'answer/reject' button results in a DISCONNECTED state change event (could use this to reject the call but that's not reliable as the same event is received if the BT device is disconnected). I haven't found any leads on displaying the appropriate caller ID (a custom string that I want to provide) or answering calls. Anyone been on this path and have some pointers?
Thanks!
I am trying to make an app for making calls from app to app and app to phone. I want to know what is ,
-the process to connect the call from my app to the server and server to the client app (app-server-app)while both are having active internet connections
-the process to connect the app to the server and the server places the call to a PSTN or ISDN (app-server-phone) where one phone is having an active internet connection and the other one is not having an internet connection, but is connected to a GSM or other telephone network.
Being an android developer, I am not well versed with web side programming. I have only made API calls in my previous apps. Please enlighten me on what is required to make calls from WEB SERVER TO TELEPHONE, and make VOIP CALLS.
I have already researched some sdks for the same, namely
-TWILIO
-ASTERISK
-ZOIPER
-LINPHONE
and gone through
App to app Call with Sinch
but this is only for making calls from app to app, I need to put a server inbetween and make the calls via server and record the duration and other data,and also make voice calls from server to telephone.
Any type or criticisms and suggestions are welcome.
you should have a PBX(Server), the app connect to PBX and make call, the PBX will route calls to another app or PSTN base on the dial plan(inbound and outbound rule), you also need to configure a VoIP provier or SIP Trunk in your PBX in order to make calls to PSTN or receive calls from PSTN.
You might be best off using twilio's sip trunk, and creating a custom asterisk script. Asterisk is a pbx, which will let you use voip phones, and soft phones that will run on computers.
You can still use twilio's API to add and remove numbers, and some other stuff.
I am working on an android app in which I want to implement voice changing functionality during a call. I have googled a lot and I found that it is only possible using VOIP.
I have a few questions about that task:
Although I found that it is only possible using VOIP, but still let me ask my doubt, can we change the pitch of voice during a call in Rooted or Non-rooted mobile, programmatically.
If this implemented using VOIP, then what I come to know is that we have to maintain a asterisk server for this. Then does the voice changing process happen on asterisk server or at mobile side and how?
You can do this on the server side with Asterisk. I do not know how you want your app to be structured, but if you go the Asterisk way, the app will become like a conference call. Like so:
You call a number (Asterisk server).
Asterisk server dials desired number.
Your voice packets are transformed on the server and sent on to the receiver.
If your telecom laws do not support it, the number that flashes on the receiver's phone will have to be the Asterisk server/exchanges.
Ok, I watched the Google I/O from 2011 presentation on NFC on peer to peer.
The demo was done on Gingerbread and using the application Sticky Notes found
Now in this demo, both device the onNewIntent() was called at the same time so both devices are trying to share information to one another.
On ICS and above, you have Android Beam..
With Android Beam, you have to touch to trigger the onNewIntent() event that will send the NDef message across.
Now the problem with this is that now to trigger the onNewIntent() on both devices, both user on each device has to "Touch To Beam" at the same time.
Is there a way that when you Touch To Beam on one device, both can have the onNewIntent() to be called?
I am trying to develop an app that will exchange data to each other but for it to work in a nice friendly fashion I need the devices to share the data at the same time once the Touch To Beam has been initiated on one device. I do hope this is possible.
Edit: It looks like this might not be possible to do :(
As far as I can tell, the feature you want is not available over NFC itself. The touch-to-beam/SNEP/NPP transfer is one direction only on Android. The user that clicks his screen will push an NDEF message to the other phone.
What I believe they've done in the video is set up a bluetooth connection with the NDEF message to make the transfer (as you saw in the stickynotes demo). Unfortunately there is no nice API for this.
However, the EasyNFC project promises to be able to allow you to create a bluetooth connection and socket between two phones/applications. Check it out here
I had a try and didn't really like the Touch-to-Beam UI that was still required in the set up of the bluetooth connection. It also didnt really suit my needs, as I wanted to transfer phone to computer and didn't really want to implement NFC P2P and a bluetooth connection.
Did you try this:
Use the Touch to Beam on phone-1 to "PUSH" the data, while on the other (phone-2), use the NDEF_DISCOVERED/TECH_DISCOVERED intent to trigger/start the data capture/reception. I vaguely remember one of the above intents were triggered when a PUSH is done. Although, every transmission requires a "Touch" to start the beaming.
When you think in general, Android should not allow the NFC data transfer in both direction at the same time. Lets think of a scenario where I want to send a thing to my friend with NFC. What is actively open on my friend's phone is not important. I should send this thing even the same app is not open on the receiver side. There may be another app in my friends phone that tries to send another thing to me. When we touch our phones, Android Beam (TM) appears and he data is sent from the phone that is touched.
In you case I think you should disable Android Beam (TM) by setting setNdefPushMessage(null) and do sending both ways using the old way.
https://developer.android.com/preview/api-overview.html
I think it will be available in L!!!
NFC enhancements
Your app can invoke the Android Beam on the user’s device to share data by calling android.nfc.NfcAdapter.invokeBeam(). This avoids the need for the user to manually tap the device against another NFC-capable device to complete the data transfer.