Blog

How to Quickly Deploy Restcomm on Google Cloud

restcomm-on-google-cloud

Those who are familiar with Restcomm already know that getting started in the cloud can be done in a matter of minutes thanks to Restcomm on Amazon Cloud. That said, Amazon is not the only Cloud Service Provider out there. That is why we shall be looking at other ways to deploy Restcomm on the cloud. The tutorial below will show you how to proceed and get started running Restcomm on Google Cloud aka Compute Engine.

 

Requirements

  • Basic Knowledge of Telscale Restcomm or Mobicents Restcomm
  • Google Cloud Compute Engine as explained HERE
  • Java JDK 7 or higher as explained HERE
  • Install screen (yum install screen)
  • Minimum compute engine “Machine-type” g1-small (1 vCPU, 1.7 GB memory) On a production server, increase the machine type to account for higher traffic.

Read more HERE

 

 

How I Became a Rockstar at TADHack (Part 1)

I walked in the 2015 TADHack London hackathon with the only goal in mind to create something using a Voxbone (the company I work for) product and Telestax’s Restcomm AMI. I ended up winning a prize and became a “telco dev rockstar” for a day, all thanks to these two main technologies I used for this hack.

This 4-to-5 parts series will cover how I built this hack with close-ups on each technology and API I used. I’ll try to keep it short!

 

Smart Dispatch

The idea behind the hack was to build an intelligent click-to-call for webpages (embeddable with a small script) that directs the call to the appropriate sales agent based on context. When the call is over, the information (context) gathered from the call is forwarded to the agent’s email/sms along with a link to the voice recording of the call. I called it Smart Dispatch.

How did I get information about the caller? In order to place the call, the client has to log in with LinkedIn and the information on profile is used as the context and sent over the email and sms when the call is over.

How is the call properly dispatched? I created a management platform for the companies embedding the click to call to link their agents to a particular segment pulled from LinkedIn. For example, if the user calling in has ‘Spanish’ as a language (on its LinkedIn profile), then the agent linked to the ‘Spanish’ segment will receive the call. This can be done for country, industry, or even particular companies (for account managers that want to receive calls only from their customers.)

Please find below the video presentation

Here’s a link to my slides:

 

Here’s a link to a demo of SmartDispatch (coming soon)

 

Below I break down the app with the different technologies I used as an overview. Tutorials for each of them will follow in the next parts.


Want to learn more about Restcomm ?

Submit this form to receive more information about Restcomm.




  1. Creating the click-to-call with the Voxbone WebRTC-SIP SDK

Voxbone is a SIP trunk provider and sells DIDs (phone numbers) from all over the world. They provide a WebRTC-to-SIP service by sending a WebRTC browser-initated call to a SIP trunk (through one of their phone numbers). The interesting part here is that the Restcomm platform works by receiving SIP call invites so this was the perfect match!

To get this working:

- I used a free iNum from Voxbone and linked it to a SIP URI for testing (later to be replaced by the Restcomm URI).

- Downloaded the Voxbone WebRTC Node.js library and remodeled it as an embeddable script.

- Placed a call!

More info on how to get started with the Voxbone WebRTC-SIP SDK here.

 

  1. Gathering information with the Linkedin API and passing the context in the call

The Voxbone WebRTC-SIP SDK has a very useful SIP header called ‘X-Voxbone-Context’ which is passed along in the SIP invite. I used this to place any JSON object I wanted. In this case: information pull from the user’s LinkedIn profile.

When the user logged in, I placed all the useful info from his profile in a JSON object and put it in the context header to be passed along with the call.

More info on how to get started with LinkedIn authentication here (I used OAuth Passport for Node.js)

click2call

 

  1. Figuring out who to send the call to with the management tool

In order to get the dispatching dynamic, I created a management tool for the agents to be configured to a particular segment. From this management tool, I created a small API for the click to call to pull this information from. Now, every time someone logs in via LinkedIn on the click2call, I know which segment he’s in and can know dynamically who to call.

 

dashboard

I also use this platform/API to configure the agent’s phone number and email address to send the info at the end of the call.

 

  1. Forwarding and recording the call with Restcomm

Half of the application is done. I have all the info I need, and know which agent to send the call to. Now I need to send the call to Restcomm to forward it to the agent’s SIP client and record the call.

Since this is a hack, I made the dynamic dispatch on my end before reaching Restcomm. Ideally, I would use Restcomm as the dispatcher based on this info I sent it.

The great thing was that Restcomm was able to read my X-Voxbone-Context header with all the information I placed in it. This way, I could build anything from an IVR to a call-forward(er) based on the info I passed.

My Restcomm flow will be covered in more details later. Below is the overview:

  1. When call is launched, pass the context header to Restcomm
  2. IVR reads name and asks to wait for call to be placed
  3. Sends to call to agent’s SIP phone (this is where I’d like the intelligent dispatch to happen in the future)
  4. Starts recording the call
  5. When call ends, it sends me a link to the recording of the call (back to my REST service). So I can process it in my emails/sms

Here it is, working in action!

click2call

 

  1. Returning info and recording to agent with Nexmo and Mailgun

The hard part is all done now. I’ve got an intelligent call dispatcher that records the call. I can now send an SMS and an email with all the info:

- Profile info of the caller

- URL the caller was looking at

- URL of the voice recording of the call.

- And more!

 

Since I have my own database with the agents’ information configured, I know where to send all that info. I used Nexmo and Mailgun for that – they are pretty good APIs and were easy to use for the little time I had left to implement these features!

 

Here’s the info sent over sms to the agent:

sms (1)

 

Here’s the info sent over email to the agent (with a link to the recording of the call):

 

email

Conclusion

 

The next iteration of Smart Dispatch will see speech-to-text integration and more modularity with external services (Facebook, Act-On, Zoho, Salesforce). However, stay tuned for the next steps of this tutorial!

TADHack was a wonderful experience as I was able to work closely with the Restcomm team and get my application up and running very quickly. Alan Quayle pulled off a fantastic event filled with passionate developers eager to see WebRTC evolve in something bigger. Thank you for everything Alan!

Restcomm has the potential to do many more great things, like sending SMS or email from its own platform. All API/SDK I used were very flexible – remember this was all done in under 20 hours!

I look forward to the second iteration of Smart Dispatch and to the following parts of the tutorial.

Look out on twitter @SachaNacar for Part 2, a LOT more code is coming soon!

How I won TADHack – Number Mapping with Restcomm Visual Designer

Following Alan’s work and the TADSummit/TADHack in 2014 I have been fascinated: He managed to get a crowd together that deals with Telecom’s problems, but from an angle and with a spirit that is entirely different (i.e. significantly better) than “typical operator conferences” I’ve seen and attended before.

I could not make it to both initial meetings, but had the pleasure to attend the second TADSummit in Istanbul at the end of last year. It was a nice gathering of likeminded colleagues and “the new generation of potential Telco vendors”. Yes, in most of my posts and presentations you’ll see me emphasize the importance of a different mindset than the one traditional vendors still have when it comes to – well just about anything :).

After TADSummit I’ve felt quite excited to also attend a TADHack myself, but it wasn’t until recently that I was not quite sure what to hack together. In my day job I’m not a programmer, but deal with Telecom’s network evolution and design mainly. Over the years I managed however to always find a side project to try out some programming languages and approaches that interest me and that help me connect more with the IT part of the operator world. When we stumbled across a problem in one of the recent business meetings at work, several options for solutions have been discussed, but all of them were rather complex and required a lot of internal systems integration. It was then when I thought to reserve a couple of spare hours over a weekend and try to apply some of the things learned at TADSummit – with one of the components that has been part of the most impressive demo at this event.

The problem was to map fixed and mobile phone numbers of customers in an efficient way. It should avoid visiting a shop in person as well as complex integration with existing systems. It sounded to me it’s time to investigate the options of Telecom’s Application Development :)

About the number mapping problem

Subscribers often have multiple registered phone numbers for good reasons – mobile phone number, home/family number, office number and others.

As a matter of fact, there is no standardized way to find out what are the phone numbers that a user controls, nor what the user prefers to use these numbers for.

If such simple mapping information were available, one can imagine a number of productivity applications and daily workflow efficiencies that can be realized. Some examples:

  • During office hours, when the user is in their office and wireless reception is poor, calls to the mobile number can be forwarded to the office line.
  • When the user is at home, mobile phone calls from friends can be forwarded to their IPTV phone after 8am and before 8pm.
  • After hours calls to the office line from VIP customers can be escalated to the personal mobile phone unless the user is floating on an inflatable banana near a Caribbean Island.

The solution

The solution I came up with – that was presented at TADHack 2015 in London, UK – allows anyone to map a fixed number and a mobile number by themselves using only their fixed and mobile devices respectively. The solution consists of three main components:

  • API logic
  • Restcomm
  • Nexmo

The API logic has been developed using Node.js and the restify module, amongst others. It implements a RESTful CRUD interface and some advanced logic to interact with both Restcomm and Nexmo. It also interacts with a demo website that contains a short set of instructions for using the service as well as an overview of all mapped numbers.


Want to learn more about Restcomm ?

Submit this form to receive more information about Restcomm.




The service is imitated by sending an SMS from the mobile that should be linked to the service (via Nexmo) – including the fixed number that should be linked. The service responds with a PIN to this mobile number that needs to be entered from the fixed line.

The next step is calling the service from the fixed line, entering the PIN, and receiving a confirmation: This is Restcomm’s task. Restcomm is “called” and will interact with the API as “external service”. At first, it will check if the calling number has been requested to be mapped. If not, it will announce instructions how to get started. Otherwise it will ask directly for entering the PIN. After the 4 digit PIN is “gathered” it will be compared through the API. Depending on the response it will either announce an error or initiate the mapping of both number. The call will end with an announcement that both numbers have been mapped successfully.

The service uses the following of Restcomms features:

  • Play
  • Collect
  • External Service interaction
  • Variables & conditional linking of modules

The Restcomm flow is shown below.

For the demo, Restcomm has been setup on a Digital Ocean host and required only little integration and interaction (caused by not RTFM on my side :) with TeleStax’ team to make it fully working.

A key feature I think is noteworthy is the Restcomm Visual Designer. I have not found any other tool that is as easily usable and fast to create an interactive application as this. The application could be developed fast, the complex functions of Restcomm were rather self-explanatory.

Conclusion

The enabler is ready now and has also been demonstrated in a small showcase (you can call Restcomm, enter a fixed number and it will connect to the corresponding mobile number through a Twilio trunk). See video below

I am already working on developing interesting ideas for its further use as well as for the Restcomm application server to be part of my next hack or the solution to a new problem we may stumble across.

I fully enjoyed my first TADHack, and am very happy that the jury decided in the end to award my hack with a price. Thanks to all the sponsors, in particular TeleStax for the assistance during these two intense days.

The demos from the participants were all very good (and are also available online) and I have been really impressed by what has been created in such a short amount of time by everyone.

I would like to say a big ‘Thank you’ to Alan for all the efforts he put, for the great organization and perfect execution as well as his contribution to the ecosystem. TAD is a very important initiative and increasingly relevant for vendors and operators alike. I can wholeheartedly say that getting involved is time/money well spent!

The application is available at https://www.number-mapper.com for the duration of the TADHack competition.

All materials are available at https://github.com/s-schumann/tadhack-2015-london.

Enterprise Monitoring for Restcomm – An overview of the APIs and the tools

Restcomm_logo

We really hope that everybody enjoys working with Restcomm and taking advantage of the tools and APIs that the platform provides. We make our best to provide you with all the required material such as documentation, turorials and how-to posts at docs.restcomm.com for you to best work with Restcomm.

But when it comes to the production deployment, an enterprise monitoring solution is missing. Of course Restcomm mission is not to be a monitoring tool, but rest assure that Restcomm provides all the required tools and APIs to use and integrate with well established monitoring solutions and project.

This post is the first one from a series of posts that will walk you through the integration of Restcomm with monitoring tools but not only that, we’ll show you how to best use the Restcomm APIs for integration with enterprise tools and provide sophisticated solutions for managing and monitoring the Restcomm platform.

In this first post I will give and overview for the Restcomm APIs and the tools we will use for monitoring and the integration to enterprise tools.

How to Add a New Language Translation for Restcomm Visual Designer

With increased global adoption of the Open Source telephony app platform, the topic of new language translation for Restcomm becomes more common. This article will walk you through the process in case you are the next contributor of a new RVD language pack. I contributed the Portuguese translation (from Brazil) and in the process created this step by step guide for others to use.

About internationalization

The internationalization process consists of a multi-language support for a service, where the original language is translated to other languages. This process contribute to a better user experience by offering the services in the user’s local or preferred language.

The internationalization of the project was made using angular-translate, which provides a clean way to replace all the terms used in the HTML pages for expressions. Each expression contains a variable used to represent a term, and its replaced by the correspondent value at runtime.

All the variables used to internationalize the pages are placed together into a language file, that contains the correspondent values for its language.

Adding a new language

To add a new language to the project, it is necessary to add a new language file containing all the variables used in the internationalization process and then translating the value of each variable to the correspondent language. The creation of this file need to follow the rules below:

File location: the file must be placed in the project’s default languages directory, which is src/main/webapp/languages.

File location

File location

File name: needs to be formatted using the language tag pattern specified by IETF BCP 47 (RFC 5646), followed by the JSON extension file. (e.g. en-US.json, pt-BR.json). To help choose the correct language and region subtags please consult the IANA Language Subtag Registry (http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry).

File content: JSON text format.

File format

File format

To create this new file using another existing language file will help to get the complete list of variables used in the translation process.

Variables

The variables used in the language files follows a name pattern that helps to locate where each variable is used.

The name is a description of the label used inside an HTML file preceded by the name of this same HTML file. For example, we can assume that the variable ‘indexPageTitle’ describes the title of the page index.html, and the variable ‘loginPasswordPlaceholder’ is the placeholder of the password input at the login.html.

Some labels are formatted using HTML code between the same sentence. In most of these cases, some word of this sentence needs to be highlighted or receive a special attribute that makes it different from the other parts of the sentence. So, to keep the phrase well formatted without any HTML code inside the JSON language file, some variables were created multiple times with the same name, just appending a numeric suffix. These variables are used to compose one single sentence by following the sequence of the numeric suffix on its name.

To translate a sentence that involves multiple variables requires some attention. The translated sentence needs to be placed in the available variables properly, without changing the sentence semantics. Avoid to translate each variable in isolation.

There is no problem if one variable needs to have an empty value. The translation will occur normally.

When finished with a new language file, be sure to include the empty variable (“”:””). This variable has no name and or value, and is used by the translation sometimes.

File example

File example

TeleStax tour of East Asia – Spring 2015

Amit Bhayani, co-founder of Telestax, will be on a road shows at Taipei, Hong Kong and Singapore from 6th April to 13th April 2015. The focus is to educate partners and customers about RestComm and the new RestComm App Store. If you are in the area and would like to meet with Amit, please submit now the contact form below!

  • Taipei : 6th April – 8th April 2015
  • Hong Kong : 9th April – 11th April
  • Singapore : 12th April – 13th April

Sorry. This form is no longer available.

Looking forward to meeting the Mobicents Community and TeleStax Partners!

 

 

 

Become a Dev Rock Star at TADHack Mini London

TADHack Mini London

It’s this time of the year again where TADHack is running to foster innovation with a contest awarding $8K in prizes to developers coming up with great new services or applications. This mini hackathon is running at IDEA London and will be focusing on WebRTC but nothing will prevent you from hacking apps that use Telco APIs. As sponsor, we will be awarding prizes and we heard of some very cool hacks coming already using RestComm, it’s WebRTC Javascript SDK WebRTCComm, RestComm Android SDK or RestComm iOS SDK

The Telestax challenge will evaluate Restcomm apps targeting marketing automation among others. Call tracking technologies are popular because inbound calls are the most lucrative type of lead. They are the sales reps’ most favorite kind of lead, and therefore the marketers most valuable measure to generate and track.

The winner and the runner up app will be offered commercialization terms through the Restcomm App Store to a target audience of over 100 million subscribers.

A couple of ideas for apps:
– WordPress plugin shortcode that renders a unique phone number for the web page its used on. Calls to such phone numbers will be tracked and correlated to their corresponding web page in Google Analytics.
– HTML5 / JavaScript Call to Action widget, which renders a phone number and a Click To Call (WebRTC) button. Mobile or Web users can call-in to discuss the product or service offered on the page where the widget is located, without having to navigate generic IVR menus. The widget will be integrated with Restcomm and a Marketing Automation Platform (e.g. HubSpot, Act-On, Spokal) to help measure conversion rates from visitors to closed won deals.
– Two Factor Authentication on top of RestComm – using as authentication channel both on Messaging – SMS, USSD, chat – and Voice – SIP, PSTN or WebRTC – similar to Authy or Nexmo Verify by example.

Remote participation is allowed. If you are submitting remotely:

  1. Export your Restcomm Visual Designer hack app to a zip file
  2. Record a 5 minutes or less YouTube video pitch
  3. Submit the hack app package and the video to info@tadhack.com by April 8, 2015

If you plan to get involved remotely or in-person, don’t forget to register, Thanks !

To get started or help to build your hack see the resources below :
Restcomm resources:
Restcomm github
Technical documentation

Community forums:
Stack Overflow forum
Google RestComm forum

Video resources:
How-to blog and video
Other product demos and how-to videos

As a teaser below, our team is also hacking right now to allow WebRTC Video Conferencing in time for the Hackathon

Restcomm_logo

Clustering, High Availability and Load Balancing with the Telestax SMSC Gateway

Billions of mobile phone subscribers continue to send text messages (SMS) daily, despite fashionable trends set by rich smart phone apps. Other major sources of text messaging traffic are business marketing programs, mobile money/micro payments, travel notifications and  many other applications. As we continue to help customers meet their growing demand for SMS services, one of the frequently discussed topics is Clustering, High Availability and Load Balancing with the Telestax SMSC Gateway. We will address it briefly in this article and welcome follow up questions as comments at the end of the blog post or offline.

Multiple SMSC nodes can be arranged in a cluster across one or more geographically distributed data centers to scale up throughput and provide various levels of redundancy, high availability and fault tolerance. SMPP connections can also be setup in clustering such that if one SMPP connection is dead, ESME can automatically route messages from 2nd SMPP connection. SMSC can also be setup to route SMS over SMPP in load-balanced way.


Want to Learn more about Telscale SMSC Gateway

Submit this form to request more information about the Telscale SMSC Gateway from Telestax.




TelScale SMSC can act as SMPP CLIENT initiating BIND to 3rd party SMSC or can also act as SMPP SERVER accepting BIND from ESME’s. TelScale SMSC allows to define multiple SMPP connection within a cluster such that it automatically does the load-balancing between these SMPP connections as illustrated in the diagram below.

 

SMSC SMPP Loadbalancing

Clustering, High Availability and Load Balancing with the Telestax SMSC Gateway

 

Restcomm Scalability and High Availability

Restcomm is a next generation Cloud Communications Platform to rapidly build voice and text messaging applications, using mainstream web development skills. Restcomm lets companies use the Restcomm Visual Designer or any popular programming language to build voice, video and messaging applications. Restcomm does the heavy lifting by integrating with obscure Carrier Networks behind the scenes. Restcomm exposes clean and powerful APIs for web and mobile phones, so companies can run their telephony applications alongside other IT apps.

A frequently asked question from our customers is how Restcomm can scale horizontally on a Cloud Platform. Telestax provides the toolset and expertise to make this complex problem as simple as possible to solve.

Let’s cover at a high level how we approach High Availability and Scalability:

Multiple TelScale Restcomm Servers can run in a cluster across one or more geographically distributed data centers to scale up throughput and provide various levels of redundancy and high availability. The typical Restcomm cluster topography is as following with all traffic between the nodes being SIP and HTTP.

Restcomm Cluster Topology

TeleStax Converged Load Balancer can be used to achieve 99.999% reliability. The TeleStax Converged Load Balancer has the capacity to gracefully shutdown any node of the cluster for maintenance operations and to add or remove nodes from the cluster as load grows or reduces without any downtime. TeleStax Converged Load Balancer also allows SIP and HTTP Sessions affinity to a given Restcomm node in the cluster. This affinity can be controlled through a pluggable algorithm mechanism for the highest flexibility.

All Restcomm instances share the same SQL Database configured to serve distributed read and write queries. Call Detail Records and other Big Data structures are stored outside the shared SQL database. 

High performance is often a reason to implement a horizontally scalable Restcomm deployment. Its not always simple to predict the performance of an application prior to its actual testing in a realistic environment. However a few base metrics are useful for initial planning.

Our tests show that a single instance of Restcomm on a machine with 8GB Ram on a i5 CPU can handle the following traffic:

1. For conferencing application: 480 Concurrent calls with a rate of 90 calls per second and average call duration of 2:30
OR
2. Short IVR application: 200 concurrent calls with a rate of 80 calls per second and average call duration of 40 secs
OR
3. VoiceMail application: 100 concurrent calls with a rate of 50 calls per second and avarage call duration 1:30 minutes

The following video walks through an actual HA deployment of Restcomm with dynamic, real-time auto-scaling in action. This setup was demonstrated live at MWC 2015 on a real world mobile operator network (TruPhone).

 

Autoscaling of an Open Source Telco Cloud Network at MWC!

11025355_10153079036249654_1872581958_o (1)

As always Mobile World Congress 2015 was an hectic event, not only for TeleStax but from most of the partners as well. As described in this post, using Zabbix’s open-source enterprise monitoring software, TeleStax RestComm and MetaSwitch Project Clearwater IMS Core nodes were autoscaling thanks to Canonical’s Juju orchestration tool and its Ubuntu operating system as the system was being put under stress using SIPp load testing tool as shown in the video below.


Want to learn more about Restcomm ?

Submit this form to receive more information about Restcomm.




More partners and customers demos !

Booth visitors were also able to place a call to a UK-based phone number on Truphone’s network. The call was routed through Metaswitch’s Project Clearwater open-source IMS platform into the interactive voice response (IVR) system running on TeleStax’s RestComm all running on Amazon EC2. Fairwaves provided handsets with Truphone SIM cards, in addition to its UmSITE ruggedized base station, to allow users to connect to a local radio network. A Full Open Source Telco Cloud Network !

While preparing those demos, our partner Applicata’s very own JNTestsuite product caught a bug in RestComm days before the event and then was running continuously during the event to validate the system was up and running.

In addition to partners, it was also great to see some of our customers showing great demos, on their booth, of their products powered by TeleStax software such as a live WebRTC service interconnected to the PSTN

11028421_10153075042909654_2024563061_o

or a full Business Services Suite

11029989_10153078793079654_1247657253_o

TeleStax as WebRTC Meetup Panelist

Last but not the least, TeleStax was proud to be invited by Quobis and Dean Bubley to talk at the panel “WebRTC and open-source” on the great WebRTC Meetup (MWC Edition) at Poblenou campus Auditorium – Universitat Pompeu Fabra, which about 200 people attended !
The panel was actually loaded with great companies (Kamailio, Temasys Communications, Voxbone, Zingaya, Acision, Matrix.org) and the discussion heated up among panelists when talks about standardization of WebRTC signalling started which made it really unique and far from the boring usual agreements.

MWC feels like a marathon but this is the once a year chance to meet the community, partners, customers, prospects and friends that’s too good to pass on, looking forward to see you all again next year !

Sign up for Telestax news, case studies and product updates:

Enter your personal information below: