10.07.2015 Aufrufe

Asterisk + Java = OpenSource Telefonie

Asterisk + Java = OpenSource Telefonie

Asterisk + Java = OpenSource Telefonie

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • 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(„hello­world“); //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://asterisk­java.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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!