Asterisk + Java = OpenSource Telefonie
Asterisk + Java = OpenSource Telefonie
Asterisk + Java = OpenSource Telefonie
- Keine Tags gefunden...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Asterisk</strong> + <strong>Java</strong><strong>OpenSource</strong> <strong>Telefonie</strong> für alleThomas KruseSun Campus Ambassadorthomas.kruse@sun.com
Zum Referenten – Thomas Kruse• Als Softwareentwickler und Berater im Bereich<strong>Java</strong>, Webentwicklung und <strong>Telefonie</strong>integrationtätig• Mitgründer der <strong>Java</strong> Usergroup Münsterland:jug-muenster.de• Sun Campus Ambassador an der WWU Münster2
Agenda• PSTN, PBX, VoIP, WTF?• <strong>Asterisk</strong>• Integrationsoptionen• <strong>Asterisk</strong>-<strong>Java</strong>• Beispiele• Betrieb• Q&A3
Was ist ein Telefon(netz)in Wahrheit?4
<strong>Telefonie</strong> Prinzipien• Im Prinzip: Töne von A nach B transportieren –per “Leitung”> Kabel legen (1877)• Switched Telephone Network (STN)> Phone Switch (mit Telefon oder PBX)> PBX: Private Branch eXchange> Verbindung zwischen STN: TRUNK5
Manuelle Vermittlung (1902)6
Telefonnetz• Öffentliches Telefonnetz (PSTN)> Vermittlungsstelle: Kabel stecken (1881)> Automatische Vermittlung (1892-1923)> BASA (1928)• Internationale Verbindung> Wählplan und Abrechnung> E.164 definiert eindeutig jeden Endpunkt> 2-3 Ziffern Ländercode (49 Deutschland)> Bis zu12 Ziffern nationales Netz (NDC) undZielrufnummer (SN)7
Das digitale Zeitalter8
Das digitale Zeitalter• Digitalisierung> Paketvermittlung statt Leitungsvermittlung (VoP:ATM)> Töne, Bilder, Texte: Die neuen Netzetransportieren nur Daten> Mobile Telekommunikation> Neue Anwendungen (z.B. Call-In-TV)9
Ein Protokoll für alle(s)• IP als Protokoll für Daten und Sprache: VoIP> Ursprünglich von Netzbetreibern als günstigerErsatz für permanente TRUNKs> Dynamisch, kann Internet oder private Netzenutzen> SIP + RDP: Vermittlung von Media> Standard findet auch bei Geschäftskunden undEndkunden Einzug10
Kabelsalat und Vendor Lock-in• Früher:> Telefone und Kabel nicht zwischen verschiedenenAnbietern kompatibel> Eigene Protokolle im Geschäftsumfeld> ISDN nur für Privatanwender interessant• Heute (oder Morgen...):> SIP ist Standard für Endgeräte und PBX> Ein Kabel pro Arbeitsplatz/Telefon: Ethernet> Internet ist günstiger als PSTN für Gespräche -“Skype”11
12<strong>Asterisk</strong>
<strong>Asterisk</strong>• PBX in Software – und frei> GNU GPL> Solaris, Linux, BSD> Anwendungen> Telefonvermittlung> Anrufbeantworter> Konferenzen> Call-Center Anwendungen> Sprachdialogsysteme (IVR)> Keine spezielle Hardware erforderlich13
<strong>Asterisk</strong> vs. herkömmliche PBX• Kostenfrei> Software GPL• Geringe Betriebskosten> Standard PCHardware> Unix Administrator• Einfache Integration• Hohe Flexibilität• Kommerzieller Supportverfügbar14• Hohe Kosten> Anschaffung / Miete> Wartungsvertrag> Konfigurationen• Integration aufwändig> ProprietäreSchnittstellen• Geringe Flexibilität• KommerziellerSupport
<strong>Asterisk</strong> Anbindung• VoIP> SIP> IAX> H.323> Skype> ...• Klassische Telefonnetz> ISDN BRI> ISDN PRI> Analoge Leitungen (POTS)15
Integration über SIP• SIP Servlets> Von großen Telcos etablierter Standard: JSR 116,JSR 289> Implementierungen von Sun, Ericsson,mobicents,...> Low-Level API• SailFin> SIP Servlet Implementierung für Glassfish> SailFin CAFE Unterprojekt mit Media Support16
<strong>Asterisk</strong> spezifische Schnittstellen• AMI – <strong>Asterisk</strong> Manager Interface> Kompletter Systemzugriff> Events, Actions, Responses> Anwendungen: Dashboard, Click-to-Call• AGI> Analog zu CGI bei Webanwendungen> Ablaufsteuerung für einen Anruf> Anwendungen: Sprachdialogsysteme (IVR)• IAX> Zugriff auf Mediastream17
SchnittstellenübersichtAnwendungAMI AGI IAXAnruf initiieren Anruf weiterleiten Aktive Anrufe abfragenStatus einer Nebenstelle abfragen Aufzeichnung starten/stoppen Mediadaten empfangen/sendenDialplan verändernIVR AnwendungSoftphoneAnrufer/Endpunkt 18
19<strong>Asterisk</strong> + <strong>Java</strong>
<strong>Asterisk</strong>-<strong>Java</strong>• Bibliothek um AGI und AMI für die <strong>Java</strong> Plattformverfügbar zu machen> Lizenz: Apache> 100% <strong>Java</strong>, Kommunikation per TCP/IP> Vereinfacht AMI durch stateful Live API> <strong>Java</strong> 6 Script Engines: Support für AGIs in<strong>Java</strong>Script, Groovy, Jruby, Jython, PHP, …> Keine externen Abhängigkeiten> Deployment mit Spring, Glassfish, Jetty, Tomcat...20
Im Einsatz auf GoYellow.de21
Im Einsatz: VoIP Anbieter• Für Privatkunden• Spezielle Angebote fürGeschäftskunden• Unified Messaging• Anrufbeantworter imNetz• “Cloud” für <strong>Telefonie</strong>• Stabiler Betrieb ingroßem Rahmen22
<strong>Asterisk</strong> Manager Interface (AMI)Verbindung zwischen zwei Endpunktenpublic class OriginateAmi{public static void main(String[] args){<strong>Asterisk</strong>Server pbx;pbx = new Default<strong>Asterisk</strong>Server(„pbx.example.com“, „user“, „pass“);}}pbx.originateToExtension(„SIP/softphone“,„national“, „017622949609“, 1,20000L);// Quelle// Ziel (context, extension, prio)// Timeout• Ebenso kann eine Verbindung zwischen einerAnwendung und einem Teilnehmer hergestelltwerden23
<strong>Asterisk</strong> Gateway Interface (AGI)Anruf annehmen und Aufzeichnung abspielenpublic class HelloAgi implements AgiScript{public void service (AgiRequest request, AgiChannel channel)throws AgiException{channel.answer();channel.streamFile(„helloworld“); //Media erledigt <strong>Asterisk</strong>channel.hangup();}}• Aufruf erfolgt innerhalb einer AgiServer Instanz24
Dank <strong>Java</strong>: PHP, <strong>Java</strong>Script, Ruby, ...• <strong>Java</strong> 6 bietet Scripting API um Scriptsprachen zuintegrieren (JSR-223)> <strong>Java</strong>Script per “Rhino” direkt nutzbar> Andere Sprachen (z.B. PHP) verfügbar• <strong>Asterisk</strong>-<strong>Java</strong> bietet seit Version 1.0.0 Support> exten => 2001,1,Agi(agi://localhost/demo.js)> exten => 2000,1,Agi(agi://localhost/demo.groovy)• Realisierung von AGI Scripts in verschiedenenScript Sprachen statt <strong>Java</strong>> Gemischter Einsatz ist ebenfalls möglich25
26Betrieb
Betrieb einer WebanwendungWebserverTelefonBRI / PRIBei Bedarfseparieren<strong>Asterisk</strong>27VoIP Provider
Privatanwender / SOHO Umfeld• ZusätzlicheServicemerkmale• Call Routing• Sanfte Migration zuVoIP• Anbindung Home-Office, Außendienst28
Links und Resourcen• BASA: http://de.wikipedia.org/wiki/BASA• SailFin: https://sailfin.dev.java.net/• Mobicents: http://www.mobicents.org/products_sip_servlets.html• <strong>Asterisk</strong>: http://www.asterisk.org/• <strong>Asterisk</strong>-<strong>Java</strong>: http://asterisk-java.org/> Dokumentation> Mailing Liste> Blog> Bugtracker• Slides: http://www.jug-muenster.de/29
Nächste Schritte...• <strong>Asterisk</strong> installieren• <strong>Asterisk</strong><strong>Java</strong> ausprobieren• Mögliche Anwendungen> Spracherkennung> Integration in bestehendeAnwendungen wie z.B.Webshop, Google Analytics,...http://asteriskjava.org/30
Danke für Ihre Zeit!Fragen?<strong>Asterisk</strong> + <strong>Java</strong><strong>OpenSource</strong> <strong>Telefonie</strong> für alleThomas KruseSun Campus Ambassadorthomas.kruse@sun.comICQ: 436566496