Mit Asterisk und Django zur eigenen Telefonanlage€¦ · Django Postgres SQL SIP Asterisk...

Post on 19-Oct-2020

13 views 0 download

Transcript of Mit Asterisk und Django zur eigenen Telefonanlage€¦ · Django Postgres SQL SIP Asterisk...

https://www.pengutronix.de

Mit Asterisk und Django zur eigenen Telefonanlage

Asterisk benutzen ohne Asterisk zu lernen

Chris Fiege - c.fiege@pengutronix.deFlorian Scherf - f.scherf@pengutronix.de

2/48

Das sind wir:

Chris Fiege Elektronikentwicklung „Spezialmesstechnik“ Freifunk

Florian Scherf Webdeveloper Python

3/48

Pengutronix

4/48

Was bisher geschah...

5/48

Was bisher geschah...

6/48

Was bisher geschah...

7/48

Was bisher geschah...

8/48

Was bisher geschah...

9/48

Was bisher geschah...

10/48

Was bisher geschah...

11/48

Was bisher geschah...

12/48

Was bisher geschah...

13/48

Anforderungen

30+ Mitarbeiter

14/48

Anforderungen

30+ Mitarbeiter DECT an mehreren Standorten Kollegen im Homeoffice

15/48

Anforderungen

30+ Mitarbeiter DECT an mehreren Standorten Kollegen im Homeoffice Selbst gehostet

16/48

Anforderungen

30+ Mitarbeiter DECT an mehreren Standorten Kollegen im Homeoffice Selbst gehostet Zugriff auf Sourcen Dienstleisterunabhängig

17/48

Idefisk

Asterisk Webserver

18

19/48

Asterisk

Volljährig: Entwicklung 1999 begonnen

20/48

Asterisk

Volljährig: Entwicklung 1999 begonnen Technologien:

SIP, ISDN, Analog, WebRTC, Bluetooth, …

21/48

Asterisk

Volljährig: Entwicklung 1999 begonnen Technologien:

SIP, ISDN, Analog, WebRTC, Bluetooth, … Mehrere Generationen Interfaces:

Spool Files, AGI, AMI, ARI, ODBC, LUA, ...

22

23CC0: MOTOI Kenkichi @ de.wikipedia.org

24/48

System

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

25/48

System: Zentrale Komponenten

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

26/48

System: SIP

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

27/48

System: Konfiguration

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

28/48

System: Asterisk

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

29/48

/etc/asterisk/sip.conf

[friends](!)type=friendcontext=from-intallow=g722

30/48

/etc/asterisk/sip.conf

[friends](!)type=friendcontext=from-intallow=g722

[10](friends)secret=asdf123

[11](friends)secret=qwert987

[12](friends)secret=1qayxsw2

31/48

/etc/asterisk/sip.conf

32/48

/etc/asterisk/extensions.conf

[from-int]exten = _1X, Dial(SIP/${EXTEN})

33/48

Asterisk: Komplexität auslagern

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

34/48

/etc/asterisk/extensions.conf

[from-int]exten = _1X, Set(RET=${ SHELL(curl http://localhost/route? from=${CALLERID(num)}\& to=${EXTEN} )})

35/48

http://localhost/route

Anfrage:http://localhost/route?from=<from>&to=<to>

36/48

http://localhost/route

Anfrage:http://localhost/route?from=<from>&to=<to>

http://localhost/route?from=10&to=11

37/48

http://localhost/route

Anfrage:http://localhost/route?from=<from>&to=<to>

http://localhost/route?from=10&to=11

Antwort:<rc>`<target>

38/48

http://localhost/route

Anfrage:http://localhost/route?from=<from>&to=<to>

http://localhost/route?from=10&to=11

Antwort:<rc>`<target>

0`SIP/11

39/48

/etc/asterisk/extensions.conf

[from-int]exten = _1X, Set(RET=${ SHELL(curl … }) same = n, Set(rRC=${CUT(RET,`, 1)}) same = n, Set(rTARGET=${CUT(RET,`, 2)})

40/48

/etc/asterisk/extensions.conf

[from-int]exten = _1X, Set(RET=${ SHELL(curl … }) same = n, Set(rRC=${CUT(RET,`, 1)}) same = n, Set(rTARGET=${CUT(RET,`, 2)}) same = n, Dial(${rTARGET})

41/48

Missing

Ausgehene Telefonate

42/48

Missing

Ausgehene Telefonate Telefonate über SIP-Trunk

43/48

Missing

Ausgehene Telefonate Telefonate über SIP-Trunk Fehlerbehandlung

44/48

System: Konfiguration

SIP-Upstream Asterisk SIP-Phone

SIP-Phone

SIP-Phone

Webserver Browser

SIP-Upstream

45/48

Asterisk ManagerHTTPS

Nginx

WSGI

Aiohttp

WSGI

Django

Postgres

SQL

SIP

Asterisk

spoolfile HTTPcli

46/48

Asterisk ManagerHTTPS

Nginx

WSGI

Aiohttp

WSGI

Django

Postgres

SQL

SIP

Asterisk

spoolfile HTTPcli

47/48

Asterisk ManagerHTTPS

Nginx

WSGI

Aiohttp

WSGI

Django

Postgres

SQL

SIP

Asterisk

spoolfile HTTPcli

48/48

Asterisk ManagerHTTPS

Nginx

WSGI

Aiohttp

WSGI

Django

Postgres

SQL

SIP

Asterisk

spoolfile HTTPcli