Slides

Werbung
Asterisk + Java
OpenSource Telefonie für alle
Thomas Kruse
Sun Campus Ambassador
[email protected]
Zum Referenten – Thomas Kruse
• Als Softwareentwickler und Berater im Bereich
Java, Webentwicklung und Telefonieintegration
tätig
• Mitgründer der Java Usergroup Münsterland:
jug-muenster.de
• Sun Campus Ambassador an der WWU Münster
2
Agenda
• PSTN, PBX, VoIP, WTF?
• Asterisk
• Integrationsoptionen
• Asterisk-Java
• Beispiele
• Betrieb
• Q&A
3
Was ist ein Telefon(netz)
in Wahrheit?
4
Telefonie 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: TRUNK
5
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) und
Zielrufnummer (SN)
7
Das digitale Zeitalter
8
Das digitale Zeitalter
• Digitalisierung
> Paketvermittlung statt Leitungsvermittlung (VoP:
ATM)
> Töne, Bilder, Texte: Die neuen Netze
transportieren 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ünstiger
Ersatz für permanente TRUNKs
> Dynamisch, kann Internet oder private Netze
nutzen
> SIP + RDP: Vermittlung von Media
> Standard findet auch bei Geschäftskunden und
Endkunden Einzug
10
Kabelsalat und Vendor Lock-in
• Früher:
> Telefone und Kabel nicht zwischen verschiedenen
Anbietern 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
Asterisk
12
Asterisk
• PBX in Software – und frei
> GNU GPL
> Solaris, Linux, BSD
> Anwendungen
> Telefonvermittlung
> Anrufbeantworter
> Konferenzen
> Call-Center Anwendungen
> Sprachdialogsysteme (IVR)
> Keine spezielle Hardware erforderlich
13
Asterisk vs. herkömmliche PBX
• Kostenfrei
• Hohe Kosten
> Software GPL
> Anschaffung / Miete
• Geringe Betriebskosten
> Standard PC
Hardware
> Unix Administrator
> Wartungsvertrag
> Konfigurationen
• Integration aufwändig
> Proprietäre
Schnittstellen
• Einfache Integration
• Hohe Flexibilität
• Geringe Flexibilität
• Kommerzieller Support
verfügbar
• Kommerzieller
Support
14
Asterisk 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 Support
16
Asterisk spezifische Schnittstellen
• AMI – Asterisk 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 Mediastream
17
Schnittstellenübersicht
Anwendung
AMI AGI IAX
Anruf initiieren


Anruf weiterleiten
  
Aktive Anrufe abfragen

Status einer Nebenstelle abfragen 
Aufzeichnung starten/stoppen
 
Mediadaten empfangen/senden

Dialplan verändern

IVR Anwendung

Softphone

Anrufer/Endpunkt
 
18
Asterisk + Java
19
Asterisk-Java
• Bibliothek um AGI und AMI für die Java Plattform
verfügbar zu machen
> Lizenz: Apache
> 100% Java, Kommunikation per TCP/IP
> Vereinfacht AMI durch stateful Live API
> Java 6 Script Engines: Support für AGIs in
JavaScript, Groovy, Jruby, Jython, PHP, …
> Keine externen Abhängigkeiten
> Deployment mit Spring, Glassfish, Jetty, Tomcat...
20
Im Einsatz auf GoYellow.de
21
Im Einsatz: VoIP Anbieter
• Für Privatkunden
• Spezielle Angebote für
Geschäftskunden
• Unified Messaging
• Anrufbeantworter im
Netz
• “Cloud” für Telefonie
• Stabiler Betrieb in
großem Rahmen
22
Asterisk Manager Interface (AMI)
Verbindung zwischen zwei Endpunkten
public class OriginateAmi
{
public static void main(String[] args)
{
AsteriskServer pbx;
pbx = new DefaultAsteriskServer(„pbx.example.com“, „user“, „pass“);
}
}
pbx.originateToExtension(
„SIP/softphone“,
„national“, „017622949609“, 1,
20000L);
// Quelle
// Ziel (context, extension, prio)
// Timeout
• Ebenso kann eine Verbindung zwischen einer
Anwendung und einem Teilnehmer hergestellt
werden
23
Asterisk Gateway Interface (AGI)
Anruf annehmen und Aufzeichnung abspielen
public class HelloAgi implements AgiScript
{
public void service (AgiRequest request, AgiChannel channel)
throws AgiException
{
channel.answer();
channel.streamFile(„hello­world“);
//Media erledigt Asterisk
channel.hangup();
}
}
• Aufruf erfolgt innerhalb einer AgiServer Instanz
24
Dank Java: PHP, JavaScript, Ruby, ...
• Java 6 bietet Scripting API um Scriptsprachen zu
integrieren (JSR-223)
> JavaScript per “Rhino” direkt nutzbar
> Andere Sprachen (z.B. PHP) verfügbar
• Asterisk-Java 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 verschiedenen
Script Sprachen statt Java
> Gemischter Einsatz ist ebenfalls möglich
25
Betrieb
26
Betrieb einer Webanwendung
Webserver
Telefon
BRI / PRI
Bei Bedarf
separieren
VoIP Provider
Asterisk
27
Privatanwender / SOHO Umfeld
• Zusätzliche
Servicemerkmale
• Call Routing
• Sanfte Migration zu
VoIP
• Anbindung HomeOffice, Außendienst
28
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
• Asterisk: http://www.asterisk.org/
• Asterisk-Java: http://asterisk-java.org/
> Dokumentation
> Mailing Liste
> Blog
> Bugtracker
• Slides: http://www.jug-muenster.de/
29
Nächste Schritte...
• Asterisk installieren
• Asterisk­Java ausprobieren
• Mögliche Anwendungen
> Spracherkennung
> Integration in bestehende Anwendungen wie z.B. Webshop, Google Analytics,...
http://asterisk­java.org/
30
Danke für Ihre Zeit!
Fragen?
Asterisk + Java
OpenSource Telefonie für alle
Thomas Kruse
Sun Campus Ambassador
[email protected]
ICQ: 436566496
Herunterladen