Protocol to Hang up from browser on any softphone - asterisk

I am using self developed CTI system and trying to integrate with softphone.
Currently I have integrated with AGEphone (https://www.ageet.com/home-en) however, the quality of the sound is pretty bad. The only reason why I am using AGEphone is it has protocol to hang up the call.
So I was wondering if there are any other softphone which has protocols to hang up from browser feature.
Doesn't matter if the software is free or paid.
Any recommendation would be appreciated.

You can hangup any call using asterisk AMI or ARI interface. No need special software for that.

Related

What are the deployment differences between Hosted vs Internal PBX?

I'm trying to get a non-sales biased answer between deployment needs for hosted vs inhouse (FreePBX with SIP Trunking) PBX. We will only have about 20 handsets in the office, and probably a max of 5 concurrent calls (talkpaths/channels) so it seems like a hosted PBX is a viable option.
With a hosted solution is it merely a matter of plugging in the SIP phones to the network, configuring the phones and PBX and its ready to go? If not, does it require an edge device (SBC) also? Or, can a SMB router provide handle the NAT and security needed for SIP/RTP? I've been led to believe that if we run our own PBX then a SBC is necessary under all circumstances for security and quality while others say it isn't for the small traffic volume we will have.
Aside from the ability to customize the PBX beyond what a hosted solution provides and the ability to scale to more traffic, is there any practical reason to operate our own PBX if we're looking for a quick deployment route? Is the call quality and reliability typically distinctly better using a SIP Trunk as opposed to a hosted solution?
We've read and been told conflicting things regarding what need to do to deploy a hosted PBX vs our own so we're hoping someone with experience can bring clarity to what the typical process to deploy a hosted PBX involves in terms of the hardware (handsets) and local network (router and/or SBC to handle the NAT).
You don't need SBC, you are too small. NAT should be handled by PBX either hosted or your own.
So forget about all fancy words, like SBC and etc, you don't need it for 20 extension, all what you need is PBX.
If you choose hosted, then all what you need is just plug in phones, configure them and they should work. Off cause there might pop-up some network related issues, but generally all should work without any issue.
If you have resources and knowledge(or willingness to learn) regarding FreePBX, then you might choose your own PBX, if not - use hosted PBX, there is dozens options. I don't think there is a big reason to have own PBX instead of hosted, personally I will prefer my own FreePBX running on digitalocean and it will cost me 5-20$ per month, but if you don't have knowledge and willingness to deal with it, maybe hosted PBX is best option for you. Keep in mind that there is dozens hosted PBX and they differs a lot. Some providers might be better then others and some might be not reliable.
Off cause you need to think about security if you don't have any knowledge what you are doing and you don't have any person who can help you with securing your PBX, then there is only one option - using hosted PBX, but again it will not eliminate all risks. If you will decide to go with stupidly simple password, then there is nobody to blame, only you.
If you decide to go with your own PBX then FreePBX is only one option I believe.
If you have no dedicated admin, go hosted version.
Only go local version if you have bad internet connection and need in multiple calls inside company.

Looking for a good method to transfer critical real time data over internet

I am searching for a good method to transfer data over internet, and I work in C++/windows environment. The data is binary, a compressed blob of an extracted image. Input and requirements are as follows:
6kB/packet # 10 packets/sec (60kBytes per second)
Reliable data transfer
I am new to network programming and so far I could figure out that one of the following methods will be suitable.
Sockets
MSMQ (MS Message Queuing)
The Client runs on a browser (Shows realtime images on browser). While server runs native C++ code. Please let me know if there are any other methods for achieving the same? Which one should I go for and why?
If the server determines the pace at which images are sent, which is what it looks like, a server push style solution would make sense. What most browsers (and even non-browsers) are settling for these days are WebSockets.
The main advantage WebSockets have over most proprietary protocols, apart from becoming a widely adopted standard, is that they run on top of HTTP and can thus permeate (most) proxies and firewalls etc.
On the server side, you could potentially integrate node.js, which allows you to easily implement WebSockets, and comes with a lot of other libraries. It's written in C++, and extensible via C++ and JavaScript, which node.js hosts a VM for. node.js's main feature is being asynchronous at every level, making that style of programming the default.
But of course there are other ways to implement WebSockets on the server side, maybe node.js is more than you need. I have implemented a C++ extension for node.js on Windows and use socket.io to do WebSockets and non-WebSocket transports for older browsers, and that has worked out fine for me.
But that was textual data. In your binary data case, socket.io wouldn't do it, so you could check out other libraries that do binary over WebSockets.
Is there any specific reason why you cannot run a server on your windows machine? 60kb/seconds, looks like some kind of an embedded device?
Based on our description, you ned to show image information, in realtime on a browser. You can possibly use HTTP. but its stateless, meaning once the information is transferred, you lose the connection. You client needs to poll the C++/Windows machine. If you are prety confident the information generated is periodic, you can use this approach. This requires a server, so only if a yes to my first question
A chat protocol. Something like a Jabber client running on your client, and a Jabber server on your C++/Windows machine. Chat protocols allow almost realtime
While it may seem to make sense, I wouldn't use MSMQ in this scenario. You may not run into a problem now, but MSMQ messages are limited in size and you may eventually hit a wall because of this.
I would use TCP for this application, TCP is built with reliability in mind and you can simply feed data through a socket. You may have to figure out a very simple protocol yourself but it should be the best choice.
Unless you are using an embedded device that understands MSMQ out of the box, your best bet to use MSMQ would be to use a proxy and you are then still forced to play with TCP and possibly HTTP.
I do home automation that includes security cameras on my personal time and I use the .net micro framework and even if it did have MSMQ capabilities I still wouldn't use it.
I recommend that you look into MJPEG (Motion JPEG) which sounds exactly like what you would like to do.
http://www.codeproject.com/Articles/371955/Motion-JPEG-Streaming-Server

Internet connectivity for a playn multiplayer action game

The short story: me and friend are making a multiplayer action game and we thought playn would be great for this. Android, java and HTML5 support is the most important ones but we don't want to cut out the others if not necessary.
The problem is now when we want to implement the networking part of it. We have implemented our own capable server and thought we would use long polling http requests for communication. We estimate now we need some way to have one thread running for the communication that use messages and two multithread safe queues. One queue for incoming messages that the update() part can consume from and one queue for outgoing messages to the server.
Is there any way to implement this without losing platform support? Or any other idea how we can implement this?
PlayN currently has no cross-platform support for persistent socket connections to a server. You will need to implement your own cross-platform abstraction. You can use WebSockets for the HTML5 backend, and you can look for a WebSockets library for Android and whatever other platforms you intend to support.
You can also use the Nexus library, which is designed to work with PlayN and provide client/server communication. However, it raises the level of abstraction substantially beyond passing simple messages between the client and server, so it might be easier to just implement your own simple WebSockets based communication than to learn how Nexus works.

IVR - Tells you your cellphone credit

I was tasked with developing an application that would be able to tell someone their cellphone credit balance via some IVR system. I dont know where to begin. Does anyone have a knowledge of GSM who could be able to give me some directions for this project.
You should look into Asterisk AGI scripts. They allow you to do more than Asterisk API. I currently have lots of AGI scripts in Perl but it says that Java is also supported. Maybe this link will help you. Basically you will create some extended Java app which will return you current Balance. Asterisk IVR would read this value from AGI and then play it.
Asterisk may be a good solution for your problem. Asterisk provide the API Asterisk Gateway Interface(AGI), that allows you to control the call flow using an external programming language, including Java.
Some of the libraries/frameworks that implement AGI in Java are: astivetoolkit.org and asterisk-java.org.
Good luck.

desktop sharing using XMPP protocole

Is it possible to use XMPP for a desktop sharing application ? is there any inconvenience ?
Technically, I guess it is possible to send the right information across. XMPP is called extensible because in a way it is. Basically XMPP allows you to send arbitrary XML to a receiver without the server needing to be configured to "accept that data". Only your clients need to be aware of it. It is not technically necessary to make/use an official extension.
What you would do would be to encapsulate VNC or RDP packets into the XML payload of the xmpp messages. Probably encoding it in a CDATA section (most efficient). The main problem that you might have is latency caused by the messaging to be routed via the server.
#dtb empathy/vino can do it on Linux with Telepathy
Yes, there is such application: http://sourceforge.net/projects/remotevnc/
There is no official protocol extension (XEP) for desktop sharing over XMPP,
and I'm not aware of any application offering desktop sharing over XMPP.
Yes it is! XMPP is an easy and extensible protocol, there are plenty of libraries to work with.
Major considerations would be:
Port and firewalls. Are any of the PC's locked down?
Application permission. Do you need to run the client app with elevated privs to access functionality, like remote control and device accesibility?
Multi-user. XMPP has group chat functionality, will that be used?
Robust. You can send offline messages.
If you don't need remote-control functionality, but just an app to share a whiteboard, text editor or such, then it should work fine.
For sharing command-line of the Linux operating system trough xmpp you can use:
pigterm.sf.net
It also supports encryption.

Resources