asterisk-java at jugc 2009-05-29

8
Asterisk-Java Stefan Reuter reucon 29. Mai 2009 Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 1/8

Upload: stefan-reuter

Post on 11-Jun-2015

2.396 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Asterisk-Java at JUGC 2009-05-29

Asterisk-Java

Stefan Reuter

reucon

29. Mai 2009

Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 1 / 8

Page 2: Asterisk-Java at JUGC 2009-05-29

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

Page 3: Asterisk-Java at JUGC 2009-05-29

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

Page 4: Asterisk-Java at JUGC 2009-05-29

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

Page 5: Asterisk-Java at JUGC 2009-05-29

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

Page 6: Asterisk-Java at JUGC 2009-05-29

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

Page 7: Asterisk-Java at JUGC 2009-05-29

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

Page 8: Asterisk-Java at JUGC 2009-05-29

Asterisk-Java

Fragen?

http://asterisk-java.org

Stefan Reuter (reucon) Asterisk-Java 29. Mai 2009 8 / 8