asterisk-java at jugc 2009-05-29
TRANSCRIPT
Asterisk-Java
Stefan Reuter
reucon
29. Mai 2009
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 1 / 8
Asterisk
Was ist Asterisk?
• freie Telefonanlage in C unter GNU GPL fur Linux, Solaris, BSD
• unterstutzt VoIP, analoge sowie ISDN BRI und PRI Anschlusse
• Anwendungen:• Anrufbeantworter• Telefonkonferenzen• Anfrufverteilung im Call-Center mit Warteschleife• Sprachaufzeichnung• Sprachdialoge (IVR)
• zahlreiche Distributionen wie AsteriskNOW, FreePBX, Trixbox oderGemeinschaft
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 2 / 8
Asterisk
Asterisk bietet drei wesentliche Schnittstellen
• AMI: Asterisk Manager Interface• Sicht auf das komplette System• Alle Anrufe, Nebenstellen, Konferenzen, Agenten• Events, Actions und Responses• Typische Anwendung: Click to Call, Dashboard
• AGI: Asterisk Gateway Interface• Analog zu (Fast-)CGI uber TCP• Ablaufsteuerung fur einen Anruf• Abspielen von Voiceprompts, Erkennen von DTMF, Spracherkennung• Typische Anwendung: Sprachdialogsystem (IVR)
• IAX: Inter Asterisk Exchange Protocol• Zugriff auf Mediastream eines Anrufs• Typische Anwendung: Softphone
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 3 / 8
Asterisk
Fahigkeiten der Schnittstellen
Anwendungsfall AMI AGI IAX
Anruf initiieren 3 3
Anruf weiterleiten 3 3 3
Aktive Anrufe abfragen 3
Status Nebenstelle abfragen 3
Aufzeichnung starten/stoppen 3 3
Mediadaten empfangen 3
Dialplan verandern 3
Act as IVR application 3
Act as soft phone 3
Act as endpoint/caller 3 3
Click to call 3
Dashboard 3
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 4 / 8
Asterisk-Java
Asterisk-Java
• Java-Bibliothek fur AMI und AGI unter Apache Lizenz
• 100% Java, Kommunikation uber TCP/IP
• vereinfachte Nutzung von AMI durch stateful Live API
• unterstutzt Java 6 ScriptEngines fur die Entwicklung von AGIs(JavaScript, Groovy, JRuby, Jython, PHP, ...)
• einfache Integration in Container wie Spring, Tomcat oder JBoss
• In Vorbereitung: Unterstutzung von IAX
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 5 / 8
Asterisk-Java
Beispiel: AMI
pub l i c c l a s s Hel loAmi{
pub l i c s t a t i c void main ( S t r i n g [ ] a r g s ){
A s t e r i s k S e r v e r pbx ;pbx = new D e f a u l t A s t e r i s k S e r v e r (
” pbx . example . com” , ” u s e r ” , ” p a s s ” ) ;
pbx . o r i g i n a t e T o E x t e n s i o n (” SIP / phone−01” , // Que l l e” n a t i o n a l ” , ” 0221123456 ” , 1 , // Z i e l20000L ) ; // Timeout
}}
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 6 / 8
Asterisk-Java
Beispiel: AGI
pub l i c c l a s s H e l l o A g i S c r i p t implements A g i S c r i p t{
pub l i c void s e r v i c e ( Ag iRequest r e q u e s t ,Ag iChanne l c h a n n e l )
throws A g i E x c e p t i o n{
c h a n n e l . answer ( ) ;c h a n n e l . s t r e a m F i l e ( ” h e l l o ” ) ;c h a n n e l . hangup ( ) ;
}}
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 7 / 8
Asterisk-Java
Fragen?
http://asterisk-java.org
Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 8 / 8