 My name is Jalu, thanks for coming here to present Open Voice. So, what is Open Voice? Open Voice has really started out trying to be a Google Voice clone. I was a Brent Central user many years ago, I guess, back in 2003 and 2004, and really liked it, and Google bought them and they were under the water for a while and then even truly came back. So, I started using it again. And one iPhone I can't use to decline on the iPhone, but when Android came out, I was really happy. So, I started using Open Voice on Android as well on the website a lot. But there are a few things I didn't like about Google Voice. So, I thought, okay, maybe I could do something similar to that, but without those limitations, Google Voice reinforces on us. So, I started this Open Voice project as my little pet project in my spare time. I'm still doing it in my spare time. So, the reason I don't like, well, I love Google Voice, the part that I don't like about Google Voice is first, obviously, it's only for US markets. So, when you're outside of the US, you can't really use it. Even in such a great product. It's closed source. I don't know why Google has an open source model, but why open source Google Voice? Then there's very limited API access. So, what that means is you can sort of figure out some of the basic APIs and do something pretty simple like send an SMS or view your Google Comcast. But it's not really documented, so you really need to trace a call and figure out how to do that. There's no, there's very poor SIP support. So, initially, they had Gizmo support, but then they withdrew Gizmo from the market so you can't really sign up for a SIP account with Gizmo anymore. So, virtually, they've become to know SIP support. And plus, they have no SIP support. I am a heavy Skype user, pretty heavy SIP user. I use them all the time. I actually have a multiple SIP account. I have a Skype account on my Nokia 900. And when I'm sitting in front of my computer, which is, you know, most of the day, I prefer having to Skype or SIP phone rather than my smartphone. And then one thing that concerns me quite a bit is bottleneck data. Everybody knows when, I mean, pretty much everybody has a Gmail account and you know what kind of stuff they're doing with your Gmail. They might, I don't know what they're doing with my voicemail transcription, for example. So those are the primary motivations for me to start this open voice project. And when I started that, we both, basically, the first one is... Oh, sorry, that's the news slide. The first one is open voice needs to be easy. It needs to have the basic functions that Google Voice provides, meaning it has to have a web interface, so you can do it when you're in front of your computer. It needs an Android interface. So I can use it as my personal PBX on a daily basis. So here's the history. I just started in February. And then I created a simple Rails app. And then in May, I'm referring to Chris Matthew, who was the former CEO of Teleco, ported it to Google App Engine. He and a few other people did a really good job. It spent, I guess, six to eight weeks to port it, so it had the basic functionalities. And then in May of 2010, the company Box Sale demoed it at the Google Iow Sandbox. And by the way, some people ask, I don't work for Trouble. And then in June, I announced open voice at a new town in Rockstock, Germany. It's an open source, telephony-centric conference. And so today I'm announcing two rather exciting features, especially for me. One is initial support for user provision, and the other is initial support for freezing. So that's the history. Okay. So the first characteristic for open voice, it has to be easy. And then because of the user reading stuff, which is recently added, it is very easy. So there's three steps. The first, you go to the website. It's a Rails website. It's a typical website. You sign up, and then it automatically provisions you a open voice phone number, which is a version number, which looks just like your cell phone number. And then you go to the phone number's page, and you can add a number of your cell phone number, your phone number, your office number. And I think everybody knows how Google Voice works, right? Right? So basically when someone dials your open voice number, it's going to ring on your phone. So that's it. So open voice is easy. The second characteristic maps from the Google Voice is a voice on the web, right? It's kind of like the idea of the unified communication system where each through a single web interface, you can do messaging, right? You can view your messages, you can send, and receive SMS as well as IAMs. You could look at your call logs, inbound and outbound. There's different type of data you could look at. You can manage your voicemail, you can play with your voicemail, you can view the voicemail transcription. The phone number control, you can add different types of phone numbers, the regular phone numbers like your cell phone, but you could also add your sync address, and then it's going to ring your sync phone. And profile for beginning, I'm going to talk about profile a little bit later. And then the server URL, that's more for development purpose and employ them with different type of servers and talk to different servers. You can control everything basically. OpenVoice is mobile. Of course, I spend probably 60% of the time in front of the computer and the rest I have myself and with me, so I want to be able to use this and I want to have a native client to use it with. So that's why I wrote a simple Android client. It does pretty much everything the web does, except it integrated into your native address book, which is convenient. It does inbound and outbound calls. So it receives calls and plays a call for you. It does messaging, voicemail transcription playback. It's kind of like the visual voicemail that everybody is familiar with. And then you can configure which OpenVoice server you want to connect to. So you can use the self-hosted service in which case you just point it to your server and you can use it or any other people's OpenVoice server. Now, here's the difference. So welcome to the world of social media, of course. Some of us always want to be reachable, right? How can you be reachable if you have only one single number to be... if you have only one single virtual number? So what OpenVoice provides you on top of the regular PSTN local nightclub number, it also give you Skype number, a SIP address, IAM address. So through this interface, someone can call your cell phone from a Skype phone. And for them, it's a special Skype number, so it's free. It's just like you're doing a Skype to Skype call for them. It's free. For you, though, if you have to call forward to your cell phone, then it's a regular charge, just like any regular cell phone conversation. But if you're forwarded to a SIP phone, then it's just free for everyone. I really like the idea of this multi-canon, multi-model communication. It's just tremendously simplified my life a lot, right? One, I'm on the computer. I can use Skype or I can use SIP. I don't always have to dial, take out my cell phone and dial it. And the other cool thing that I did is when I was traveling in Germany, for example, I spent 10 euro and got a local SIM card with how many minutes they gave me, and I registered that SIM card with an unlocked SIM phone, a JSON phone, so I can use it. And then I have open voice to forward my call to that. So when my friend calls me in California, they don't really even know that I'm actually in Germany, but it's just forwarded me to the Germany and I'm not only paying a local the SIM card charge for the phone, so international phone called Korea. Okay, so now I'm going to explain how this all works, right? It's actually quite simple. So first, it starts with an incoming call. And as I said, this call can be a TSTN call. It can be a Skype call. It can be a SIP call. And then it goes to this thing called trouble. And who knows anything about trouble? Yes, it's on YouTube. Okay, so what trouble is, trouble is one of the back ends of open voice. Trouble basically implements a Java SIP service standard, and also it does the media resource control protocol. What's happening is when a call comes in, because trouble can take care of all types of different voice calls or Skype calls and everything, and it knows where to route the call into. So because I provisioned my numbers through Topo, it routes the calls to open voice. And when it's basically a staff membership web session, just like real session, except it's sent in caller ID, your open voice number, and a lot of call session-related information. So you are familiar with SIP staff. The call session stuff looks extremely like what SIP provides you. It has an extension, I hope. Go ahead. Is Trouble a company, or is it a set of APIs and open source? Is it a hosting service? So Trouble is a product, and there's a product coming out of Boxail Labs. Boxail is a company behind this. I believe Trouble is open source. The Trouble actually sits on top of the media server, which is the main product of Boxail, and that part is not open source. So back up a few slides ago, you said you get a number. Yes. You get the equivalent of Google Voice number. Yes. Right. Which is provisioned by Trouble. Google is going to see you for free. Do you have Trouble or Boxail to give you a free number? The next slide will explain that this whole thing. So after open voice received all the information of the call from Trouble, the first thing it's going to do is try to locate the open voice user, and because I have the open voice number I can easily locate the open voice user. And now the open voice is going to screen the caller. What that does is for the caller, we're going to say, hey, please record your name, if the name has not been recorded in the open voice system. And after the caller reports the voice, it's going to call the open voice user on all the phones that's registered. So you register three phones and all of them will ring. As long as you specify the phone has four of the phones. And then the open voice user will pick up the phone and then we'll listen to the recorded caller name, which is caller announcement. And then based on their availability, they could press one and then that's answering the phone and then caller and caller will be connected. If they press two, and it's rejected phone call, the caller will be directed to voice mail system. And if they press three, the caller will be rejected and directed voice mail system and then will be asked to record voice mail. But the caller is not hanging up, it's actually listening to the voice mail while it's being left. And then if they choose to, they can press star to activate listening in mode and then get into the actual conversation and start the talk. So this is a very basic flow of what open voice does, which is similar to what Google Voice does. So now to answer your question, how can I make open voice more open? Because that's what it's supposed to be. I created work called Tropical Awesomeness, but it's pronounced Troposomeness. Troposomeness comes with a price. So the awesomeness comes with... There's similar vendors out there that provide similar services that I could choose. But there's a couple reasons why I want this trouble. First, it's free for development. So there are two modes, development mode and production mode in development mode, I can get numbers for free. The minutes don't cost me any money. The SMS doesn't cost me any money. The IM doesn't cost me any money. But in production, they will cost me money. But I'm developing an open source project, so I'm in development mode, right? So that's one reason, financial reason, basically. And the second reason is multi-model. Again, I really... If I have developed a collection application, and every time I want to make a test, I have to pick up my phone and dial the number, I'm going to go insane, right? What I want to do is I use my Skype or SIP line, I just click Group Talk, and then I can test. So if a service provides something equivalent to that, I will consider it, but if not, I'm going to stick with problems, right? Because of Skype instead of all this kind of awesomeness that you want. So then come back to the openness. The awesomeness comes with a price, but I do want to make open voice a framework that's open to a different type of quality engine, right? So the first one I'm choosing to support is FreeSwitch. So a little bit of history about FreeSwitch. So a long time ago, there's this awesome PBX that a lot of people use. It's called Asterisk. And Asterisk is an open source project that's led by this company called DJI. And Asterisk is great. But then people in the Asterisk development community realized some stability problems. And one of the lead developers, I think he was actually the second or the third top contributor to Asterisk, decided to redesign and rewrite an entirely new PBX. And that is FreeSwitch. So that's one of the main reasons I wanted to support FreeSwitch first. The scalability is great. And then there's a different type of programming paradigm that I can leverage. So that's why I flipped the switch to Free as in FreeSwitch. What's the world look like after I flipped the switch? Open voice now needs to understand different kind of backbones, whether it's trouble, FreeSwitch, and possibly more in the future. So I introduced the concept of open voice profile. The profile is really just containing the provisioning information from a specific back end. It could be something like trouble. It could be like a soft switch, like FreeSwitch, as long as it provides me user provisioning information, I can use it. So this is what the overly simplified architecture would look like for open voice. So incoming call comes in. It can either go to trouble or go to FreeSwitch. It doesn't really matter to me. Both will direct information to open voice. The most important information, the call session information, call ID, destination ID, session ID, et cetera, et cetera. And then open voice will locate the user, look into all the possible profiles that the user has and take specific actions based on your preferences. So the support of FreeSwitch, like what we can do today is, for example, when a Skype call comes in to trouble, which is free, go to the open voice, open voice locate the user, look at all the profiles, see the trouble profile and see, oh, there's like a couple of PSN numbers. Let's bring that. Look into FreeSwitch profile and find, oh, this user is actually registered with my FreeSwitch and the SIP part, the SIP server. So it's a FreeSwitch address. Let me ring that. And then if there's endpoint or a soft phone actually registered with FreeSwitch at the time, that will ring as well. So all your hard phones and soft phones will ring and then are managed by your own telcos for my FreeSwitch. And then if you pick it up from the FreeSwitch, so that's a soft phone to soft phone endpoint call, right, from Skype to to SIP link. So that's a free call. We are still leveraging the multi-model capability provided by Trouble, but we're conducting basically a SIP call. And what I'm going to add in the future is mob.js and mob.sky open support. So what this does is basically FreeSwitch will be able to talk to PST and gateways and receive JSN or place JSN calls. And then it will also be able to handle Skype just like what Trouble is doing today. As far as the communication between open voice and FreeSwitch goes, thanks to FreeSwitch that provide a fantastic event system. So basically anything happens internally in FreeSwitch is an event. And there's two happy events, internal and external event. FreeSwitch can sit there and run a process as an event and listen to whatever event is coming from outside of the world. So the open voice can tell FreeSwitch, okay, execute this type of development. If it doesn't do that, it will do it. Or something happens within FreeSwitch such as a caller calls into the FreeSwitch. FreeSwitch can have all kinds of restrictions like say, okay, I want to reject you, okay, I want to accept you, but I want you to execute this app, which is extremely useful for business. Or hotel, restaurants, those kinds of logic. And then wrap up with open voice and execute. So here's the thing, right? If you want convenience, existing functionality, and everything, you big trouble, it's all done for you. It's a great package. If you want the fine control, like the power to your phone system, you have time and interest to spend and then like me, you start playing with FreeSwitch. It's a very awesome program. Thanks. Okay, so I've been talking a lot about ADS, server APIs, but then there's client APIs are very important as well. So I basically, the client API is really built just so that right now I can have a demo app on the Android client. The basically, APIs are fairly straightforward, right? A user creation, you can create a user. Authentication, which is required, a user has to be authenticated to the system before they can make any kind of constant calls or messages. So you can send messages, retrieve messages. You can place out on calls. You can manage your call records, like you found out them along the call page, et cetera. You can manage your voicemail, including the visual voice and your transcription. It's very basic set of API, and then it's written in real, so adding APIs is pretty easy. And the future. I only have a short list right now. Actually, I use a few of the tractors, so there's a lot of backlog stories inside, but these are the main ones. The full support for Switch is on top of the list. iPhone and Meebo clients, I'm pretty passionate about Meebo. So now Meebo got to support that, right? And probably everybody on the iPhone here. And then the conference and capability, which is being asked in the field. So I'm going to support that. And just anything else people may come and ask. There's people asking for, maybe use, possibly use, use for rescue mission, for example, where there's no cell power reception where the accident happens, and they want to go out to the end and just have local, where there's a national network, and then use open voice for the rescue service so people can actually talk to each other, and then everybody will be equipped with an open voice client phone, and then they can talk to each other, but they don't have to talk to the outside world. And here's more information. The most important one is that open voice, you can find the Reels app, you can find the Google App Engine report, you can also find the Android client, and then if you create an open voice account and then you download the Android client, you go to the download section, there's a little barcode thing you just scan, and then you directly download it to your phone. It's not in the market. I don't even know how to do stuff in the market. And then there's a couple blogs about it. From back in the day when we announced it. And then lastly, I hold a SF, a lightning beat up. So if you guys are in the area, definitely let me know. We have speakers talking, and we're just hanging out, pizza and beer. Very welcome. So I might be ahead of time. You're ahead. So is there any questions? Free switch isn't so easy to set up. Is the idea you'll also have to set up to make it easier? I was thinking about it. I'm not sure if that will happen because I've seen other similar things. For example, open voice speaks to free switch via the socket, right? But it doesn't do it. It doesn't do it natively. It relies on a Ruby Jam of free switcher. What it does is really just parsing the Ruby utilizing to command that free switch understands it. So it might make more sense if that is bundled with free switch rather than open voice is bundled. And also when it comes to free switch it has to have a configuration like open voice will do part of the configuration job. But free switch might be take care of something kind of border control, right? That's beyond scope of open voice. So currently I don't have any plan to know any type of... I'm not going to be able to cover it for you. Why do you mean you would do it just for it to actually work for somebody that doesn't know free switch? It's kind of a learning program. I couldn't get online with the iPad. You were going to do it with them, wasn't it? Yeah. So no. But if you go to the GitHub readme and open voice can actually be used in two modes. One is self-hosted, which is ideal for a lot of people because if you have a private business with some different information you'll post it to yourself. Nobody will know. But I also have a openvoice.hero.com free website for people to play with. Don't use it for anything serious and pushing it all the time. But that's the idea. So that, in a sense, is actually hooked with a free switch instance that I've configured. So you can use it that way. It may have one minute. Oh, okay. Any other questions? Okay, thank you very much.