Voip callerid handling - voip

I am faced with the following problem. I get calls from my customers thou a voip line. And then i need to ask them who they are and look them up. All of this takes the most time in the phone call so i want to speed that up abit.
Basicly i want something that catches the caller id and sends it to a (web) server. Idealy i would put that at the phone server but that part is outsourced. So my question comes down to: Is there an easy way to do this? I can write my own software but i would like something of a voip client that does this for me since i would like the quick solution.
I searched the internet for a view hours but i am not that familiure with voip technologie so any help would be useful.

I don't know of any softphones could do it although I do have a hazy memory of another stackoverflow question where someone asked about sending a HTTP request triggered by an incoming SIP call. Unfortunately I can't find the question sorry.
Apart from softphones I do know of at least three ways you could do it on a server and there are probably more.
First there's my own software (doable with a free accounts and open source), sipsorcery.com, where you could receive the SIP call from your provider and in your Ruby dialplan send an HTTP request to your web server to get whatever info you wanted.
Secondly there's tropo.com who also have highly extensible dialplan type functionality and in lots of different languages. Their dialplans support sending HTTP requests.
Finally there's anveo.com who have HTTP tools available in their graphical call flow builder.

Open source softphones should be extendable, I know twinkle can be configured with scripts, should be well suited for your personal needs.
If this is something you want to centralize, create a SIP proxy to intercept all calls and do what it needs to. Sailfin is a robust development environment for something like this if you like Java.

Related

How to integrate Node.js Server in My cocod2d-x (C++) Game

I am new in Multiplayer Game Development, I have already developed a offline game and now I want to make it a multiplayer, so with help of my friend we create a server side script in node.js, but I don't know how to integrate this in my c++ project,
I've googled but, can't find anything helpful.
anybody can suggest any tutorial.
Thanks
You've asked a big open-ended question. As Allern suggests there are a lot of things that you can do with networked programs that can extend it well beyond that of a single user game. For instance in my current game there is an access to a version welcome page in html. There are file downloads for campaign/user maps and there are connections to Firebase for leaderboards and other networked resources like ads.
However, I suspect you are referring to the communications between a number of separate user machines all synchronized to keep them coordinated. For this you will need to write some serialization code to transmit to and receive packets from the central server. Typically a serialization package like flatbuffers will be needed to move information from your data structures to a packet and the reverse.
You might also require communication/network software to asynchronously send and receive those packets (this may be included in whatever game engine you might be using). Boost.asio might help otherwise. There are numerous other networking packages and libraries all the way down to the bare-bones unix/POSIX calls (or Windows OS calls).
You will also need software on the server side to log users in, deal with players disconnecting and doing the main work of passing the game packets around. This software may also implement the logic of your game (game rules) and might do saves on the data if you want users to be able to play the game in multiple sessions (like a big dungeon crawl). There might be packages out there that do most of the server side stuff. If so, please post what you find out.
Cocos2dx does have some networking software built in but it isn't very functional as far as I'm concerned. It does have facilities to display web pages and download files fairly easy but the async communication seems a little weak. You can try the Network module in the API Docs which may have what you are looking for.
Since the type of game and how you want to implement your player interaction will dictate how the software is to be built I'm afraid this answer is a little vague. Good luck. Share your insights.
you can use public tools , as a sample is websocket,it can support C++ and javasc

VoIP Integration in App & Web

I have a very general question on how to implement VoIP for our current mobile & Web App. (we have an Android+iOS App and a Web Application based on AngularJS/NodeJS).
What we want to achieve
In the first step we want to achieve inter Application Voice and Video Calls. Later on we might expand into outbound calls into the normal telephone network. But this post is mainly for getting info on how to implement only our first step.
general thoughts
We had some experiences with Asterisk before which turned out to be far from easy. So for this project we wanted to get some feedback before actually implementing anything.
thoughts on technology
At first I thought it might be a good idea to use WebRTC, but since it's only supported on Chrome, FF and Opera for the moment and pretty much is unsupported for native mobile Apps we think that WebRTC is probably out of the picture for now. (or do you think otherwise?)
After searching the web a bit more we found this: http://www.webrtc.org/native-code
Has anyone experience with this libs? It seems to us, that this could be the best solution for a modern voip solution (and also would allow us to skip the asterisk server)
The second idea would be to setup an Asterisk Server for ourselves. Every time a user logs into the App we would connect him as a SIP Client to the asterisk. If one user calls the other one we think we should be able to make the call for example with the node package Asterisk Manager API (https://github.com/pipobscure/NodeJS-AsteriskManager).
The third idea would be to use a SIP Provider, but at the moment I'm not sure if that's really the best idea.
Since we're no VoIP experts, are there any other possibilities for VoIP integration into our apps?
Any thoughts on that subject would be very appreciated! Thank you!
The main factor is the network configuration that you app will be working with. Given you're using mobile clients and web apps it's almost certain that you're using the internet and also likely that you'll have 3G and 4G mobile networks in the mix (3G/4G cause a lot more problems for VoIP than WiFi).
Given the above assumption holds the biggest challenge your app will have is establishing media (audio and/or video) connections between mobile clients which are behind different NATs and in a lot of cases multiple NATs. There is almost no chance you'd be able to get by without a server here. The server will be needed to act as a relay point for the media streams for the mobile clients. You will use the RTP protocol for the media and working out how to get it reliably from client A to client B is your biggest obstacle. The signalling side - whether it be SIP, web sockets or something else - will be secondary (note both SIP and WebRTC use RTP to carry the media).
If I were in your shoes the steps I'd take would be:
Install and try out some softphones (blink, bria, zoiper et al) on your own mobile devices, find a SIP provider that supports video calls and get some experience with calls. It may not be the experience you anticipated...
Once you are comfortable with the softphone experience you would then need to make two decisions:
Whether to deploy your own server or use an existing provider,
Whether to write your own client, find an existing one or something in between.
I can answer the deploy your own server question. You don't want to do that unless the VoIP part of your app is going to be something you charge for and make a good margin off. Running a VoIP server and all the security and network considerations that go along with it is a full time job. It may start out being easy but once a few customers start connecting and the fraudsters come along it will take on a life of its own. In the decade I've been messing around with SIP I'd estimate 75% of providers have gone out of business and it was their full time job.
Besides all that I'd be surprised if there wasn't a SIP provider that suited your needs. These days there are highly sophisticated services available that led you control every aspect of your call flow with your own code (anveo, tropo, twilio) right down to free services (sip2sip, sipbroker) that may be all you need to get started.
For the client software there are various SIP SDK's you'll be able to leverage (pjsip).

Is it possible to send skype chat messages from a linux server without X?

I'm willing to send skype messages (each to a single user) from a linux server without GUI using PHP or node.js. It seems like a lot of information online is out of date since SkypeKit is no longer working for Skype and projects like this are broken.
According to the docs here Skype URIs are now the preferred way to send chat messages programmatically, but that same page states a copy of Skype must be running on the same server. However I don't have X server installed so I can't install normal Skype client.
So is it possible to send messages without Skype, or is it possible to install Skype and use on a server with command line only, or I must run another dedicated server with GUI to do this?
You want to send messages from your backend. Your linked reference (and proposed URI solution) is for frontends. This does not fit.
Meanwhile there does not seem to exist a server API for Skype.
I cannot think of any fancy solution to your problem. You could try to set up a Jabber server (which provides an API) with a Skype bridge, but I am not sure if this try will succeed. Skype was always buttoned up concerning their protocol and usage by other clients. I doubt this has gotten any better since the acquisition by Microsoft. This acquisition might have also lead to changes in the protocol, which will run all previous bridge solutions useless. (Maybe instead an MSN bridge works...)
To sum it up: I hardly believe you will be able to create any solution at all, and if there even exists one, the necessary work will likely outrun the result you want to achieve.
Unfortunately Skype doesn't support running headless, one option is to run a virtual X server (like xvfb) on that host, and run skype under it.

VOIP: How to Create a Web app to make Call like skype or msn? [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
This is a very newbie question.
I want to know how to create a web app to make a telephone call, most likely using VOIP protocol.
What programming languages, both client and server side, do I have to learn?
The primary question you need to answer to get started is are you looking for a computer to computer call or do you want your app to call a telephone number?
Since you specify that you want your "web app to make a call," I suspect you're looking for a way to place automated calls to a user's telephone. If that's the case, you've got a few options.
Install a VoIP server like Asterisk or Freeswitch and write code to have your web app interact with it. For Asterisk, the Adhearsion project can help by allowing you to write Asterisk integrations in Ruby. http://adhearsion.com/
Or you can use a cloud telephony service like Cloudvox or Tropo http://tropo.com (disclosure, I work for Voxeo, the company behind Tropo). These services allow you to use web programming languages and web services to talk to the phone system. You don't need to know anything about Voip to make it happen. A sample Tropo script...
<?php
answer();
say('Yes, it really is this easy.');
hangup();
?>
A side benefit to the cloud services is many of them allow your app to run over other communications channels (Tropo does IM and SMS, too).
The third option is to look into VoiceXML, a W3C standard for creating voice apps. Voxeo provides detailed docs and VoiceXML tutorials at http://vxml.org/. With a VoiceXML (sometimes called VXML) application, you can install a VoiceXML server and the associated VoIP bits or you can use a VoiceXML hosting provider. Voxeo provides both a downloadable server and hosting (both are free for developers), or a search for VoiceXML hosting will reveal a large number of options.
The answer to your question really depends on what you want to do with it. Here are 2 examples of how I have gone about it:
I developed the software for Go2Call.Com (now owned by Deltathree), and it was used for PC-to-Phone calling. In Go2Call's case, it was a Java applet for the dialer frontend that called a Windows DLL written in C++. From there, it spoke a proprietary protocol to talk to the servers which in turn sent the call to regular landlines.
A few years later, I wrote a web-based (ActiveX control) that would allow PC-to-PC or PC-to-Phone calling, and it used the standard H.323 protocol.
I would recommend starting out by figuring out what your end goal is and then looking up the necessary protocols and technologies to accomplish it.
For PC-to-PC, you can do whatever you want if both people use your software. In that case, you can figure out how VOIP works (including compression codecs, etc.) and implement it however you want.
For PC-to-Phone or when you want to call someone else's software, I'd recommend SIP since it's probably the most popular protocol. H.323 is still prevalent, but SIP seems to be taking over.
Sorry this doesn't probably tell you everything, but there's a lot to it. Hopefully, this will get you started in the right direction.
Update: Since you mentioned PC-to-PC, Packetizer has a list of standards and quite a bit of info I used way back when I did a lot of VoIP programming.
As far as books go, the books I've seen so far aren't programming-related but more about using VoIP software and installing VoIP networks.
Gizmo5 has a Flash softphone that runs in the browser: GizmoCall
On the server side, you'd probably link it up with an SIP solution in any language. Asterisk comes to mind, although it may be a bit overkill depending on whether you really wanted a full-blown SIP solution or not.
You may wish to purchase a component which allows you to add SIP functionality to your webpage, (most of these ones are ActiveX based):
http://www.conaito.com/
http://www.vaxvoip.com/
http://www.pcbest.net/
As for the language you have to learn, well what languages have you learned already? Which languages have you developed web apps with? This determines your choice of language. Using components like those listed above take some of the legwork out, but still will require probably vbscript or javascript coding client side, and those that are activeX will only work on Internet Explorer webbrowsers.
If you have no experience then you need to look seriously at what you are trying to do, why, how much time and effort you can and are willing to put in.

What protocol should I use for fast command/response interactions?

I need to set up a protocol for fast command/response interactions. My instinct tells me to just knock together a simple protocol with CRLF separated ascii strings like how SMTP or POP3 works, and tunnel it through SSH/SSL if I need it to be secured.
While I could just do this, I'd prefer to build on an existing technology so people could use a friendly library rather than the socket library interface the OS gives them.
I need...
Commands and responses passing structured data back and forth. (XML, S expressions, don't care.)
The ability for the server to make unscheduled notifications to the client without being polled.
Any ideas please?
If you just want request/reply, HTTP is very simple. It's already a request/response protocol. The client and server side are widely implemented in most languages. Scaling it up is well understood.
The easiest way to use it is to send commands to the server as POST requests and for the server to send back the reply in the body of the response. You could also extend HTTP with your own verbs, but that would make it more work to take advantage of caching proxies and other infrastructure that understands HTTP.
If you want async notifications, then look at pub/sub protocols (Spread, XMPP, AMQP, JMS implementations or commercial pub/sub message brokers like TibcoRV, Tibco EMS or Websphere MQ). The protocol or implementation to pick depends on the reliability, latency and throughput needs of the system you're building. For example, is it ok for notifications to be dropped when the network is congested? What happens to notifications when a client is off-line -- do they get discarded or queued up for when the client reconnects.
AMQP sounds promising. Alternatively, I think XMPP supports much of what you want, though with quite a bit of overhead.
That said, depending on what you're trying to accomplish, a simple ad hoc protocol might be easier.
How about something like SNMP? I'm not sure if it fits exactly with the model your app uses, but it supports both async notify and pull (i.e., TRAP and GET).
That's a great question with a huge number of variables to consider, and the question only mentioned a few them: packet format, asynchronous vs. synchronized messaging, and security. There are many, many others one could think about. I suggest going through a description of the 7-layer protocol stack (OSI/ISO) and asking yourself what you need at those layers, and whether you want to build that layer or get it from somewhere else. (You seem mostly interested in layer 6 and 7, but also mentioned bits of lower layers.)
Think also about whether this is in a safety-critical application or part of a system with formal V&V. Really good, trustworthy communication systems are not easy to design; also an "underpowered" protocol can put a lot of coding burden on application to do error-recovery.
Finally, I would suggest looking at how other applications similar to yours do the job (check open source, read books, etc.) Also useful is the U.S. Patent Office database, etc; one can get great ideas just from reading the description of the communication problem they were trying to solve.

Resources