Update: Scheduled hardware upgrade
TringMe servers was down for about 15 mins earlier today as a result of planned hardware upgrades. TringMe is up and running now.
At this point, we are running into a strange issues with the Gtalk based telephony service with “tringme@gmail.com” ID. Our engineers are working on restoring this service at the earliest. Any inconvenience is highly regretted. As a workaround, you can add “tringmegtalk@gmail.com” as your friend in Gtalk and use that to make and receive calls as usual.
We will update the blog as soon as we have more updates regarding “tringme@gmail.com” id.
Thanks.
TringMe team.
TringMe for Enterprises
Few enterprises and websites have shown keen interest in having TringMe services with slightly different needs. While we cannot cater to different needs at this moment, we have been discussing about possible generic solutions for business users. I am happy to announce that we have added two new features to TringMe for enterprise use – one of those will also be available to individual users from their profile.
- Private SIP Server – TringMe now offers enterprises to register their own SIP server where TringMe can route calls and voicemails for a set of users. Enterprise can have their internal dialing plan for further routing of the calls and voicemails. This feature will give enterprises ultimate control at the same time flexibility of the TringMe platform. Enterprises can even develop application based on SIP to offer some innovative solutions to their users.
- REST style API to delivering voicemails. Instead of delivering voicemails to current TringMe destinations, user can provide a callback URL that will be invoked by TringMe to deliver voicemails. We plan to upgrade website in coming weeks to enable individual beta users to try out this feature.
Would you like to integrate TringMe with your website or business? We would like to hear from you.
It’s Tringging…
TringMe was covered by TechCrunch and we’ve been busy as ever since then :). We sincerely thank TechCrunch to review TringMe. We would also like to take this opportunity to thank all those who have given us their comments and feedback.
TringMe user base is increasing steadily since launch. We received close to 1800 signup requests on day-1 and have continued to receive hundreds of invite requests everyday thereafter. Our platform is coping up well with continuously increasing user base without any drop in Quality of Service (QoS) and that is definitely in line with our expectation since scalability was one of the core underpinnings of the design.
The platform on which we build TringMe was the core focus from the day we started. Once we nailed down on TringMe idea, we started looking for a suitable platform to create TringMe. Due to my experience in designing products in communication and VoIP domain, designing call processing termination on phone or Gtalk was not a technical challenge in itself. This more so since I had some existing software which we would quickly adapt to these needs. The key component needed was flash server (RTMP server). The key requirements were:
- Scalability: Can handle thousands of simultaneous call in real-time without affecting QoS
- Efficient and minimum resource usage: CPU and memory are at premium here. We required it to use minimal CPU and memory, as a good share of CPU time and memory is also required by other applications like call processing, voice transcoding, other signal processing etc.
- Integration: Integrate with call processing and other real-times applications
- Coding and Database: Interface with C/C++ and php modules. Interface with database
- Stability: High availability
Basically, I was looking for a high performance flash server with minimum resource usage and optionally also offers other telecom platform features. We evaluated few servers and as expected, my runtime and performance requirements were high to be met by any of them. It is important to stress that I am not making any comparison; merely assessing the suitability of our requirements with existing solutions. Adobe FMS is an excellent and feature rich solution but at the same time huge, resource hungry (see their system requirements), and very expensive. It also has connection and bandwidth cap for most editions. Beside these, interfacing it with call processing and other software modules (written in C/C++) was not simple enough. Hence, I was doubtful in making it a suitable platform for real-time applications like TringMe. Another very good solution is Red5, but that too is resource hungry and far from TringMe’s performance and other requirements. Eventually we decided to write our own, starting from scratch, which turned out to be the right decision.
TringMe’s platform has become one of our biggest assets. It is fast, small, scalable and extremely powerful. Memory usage is at minimum. Intelligent memory and resource allocation strategies resulted in almost no dynamic memory allocation once server is fully up and the maximum resource usage is configurable. The run time memory usage is just a few KBs per connection and IMHO, extremely good from any standard. Below is output of size that can give some idea on compactness of the server
text data bss dec hex filename
72734 7196 2020 81950 1401e tringme
Design also focused on keeping CPU usage to minimum. The buffer copy is often the largest source of CPU utilization in protocol state machines. We carefully designed and coded to use zero-copy for most parts. With all such optimization, our flash server remains light weighted even in highly loaded conditions.
While the core part of the server is RTMP protocol state machine, lot more required to make it as a platform, for example, framework for communicating with external application and modules, emails, database, buffer and memory management etc. The most complex of all is Signal Processing Unit (SPU) & Voice Engine.
Voice engine enables TringMe to use various audio formats used in telephony (gsm, g711, ilbc, and very soon speex) and jitter correction. TringMe’s platform chooses the appropriate audio codec format for the end nodes and uses voice engine for transcoding between the formats.
SPU performs many other complex functions required to interoperate with various telephony providers. For example, with one provider we had to implement complex logic of combined Human Speech Detection, DTMF detection, Ring Detection to reliably detect if phone was picked up before delivering the voicemails. There are may more functionalities in SPU that will enable upcoming features on TringMe, off course we will hold the details for now
Be assured, we are adding so many features, and I am happy to see that TringMe users are continuously feeding us with suggestions & feature requests. We continue to evaluate these suggestions to better understand the needs of the community … stay tuned on TringMe.
What differentiates TringMe?
Some of you asked us - what differentiates TringMe in the web-based telephony arena where there are already a few players. Let me explain:
At a high level, existing web-based telephony services can be categorized as following:
- Services that act as middleman-connecting caller’s phone to callee’s phone. Most companies (e.g. jajah, jaxtr, click2voice etc.) fall into this with varying feature-sets.
- Services that require user to install a plugin of some sorts or a program and then the user can use the service to place calls. A few companies (e.g. Gizmocall) fall into this category.
- Services that do not require user to install anything and provide pure web based telephony experience. As far as we know, TringMe is the only one in this category so far and that is one of the key differentiators, we believe.
There is much more from TringMe. TringMe’s flash-based telephony platform is quite flexible and powerful. Although, we launched by introducing a web-based telephony widget, there are more applications planned based on our platform. We are already working with few companies and individuals to create more applications based on this platform and you will see few more applications very soon.