Benutzer-Werkzeuge

Webseiten-Werkzeuge


asterisk

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

asterisk [2024/07/19 00:42]
127.0.0.1 Externe Bearbeitung
asterisk [2025/06/03 01:00] (aktuell)
jango [Installation]
Zeile 1: Zeile 1:
 +Asterisk ist ein freier und quelloffene VoIP Server. FreePBX ist ein Open Source Webinterface dazu. Siehe auch [[sip|SIP]], [[https://www.asterisk.org/|Homepage]], [[https://wiki.asterisk.org/wiki/display/AST/Home|Wiki]] und [[https://www.youtube.com/asteriskvideos|Youtube Kanal]]
  
 +Um Asterisk in MS Teams einzubinden nutzt man das "Direct Routing" Feature von Teams und einen [[sbc|SBC]] (Session Border Controller).
 +
 +Asterisk nutzt das [[stun|STUN]] Protokoll um Firewalls und [[nat|NAT]] zu erkennen.
 +
 +<code>
 +asterisk -rvvv
 +asterisk -rx <shell-command>
 +</code>
 +
 +CLI
 +
 +<code>
 +console dial <exten>
 +console send text "Hello wold"
 +console hangup
 +</code>
 +
 +In Konfigurationsdateien kann man andere Dateien einbinden um es übersichtlich zu halten
 +<code>
 +#include myusers.conf
 +</code>
 +
 +[[https://www.voip-info.org/asterisk-variables/|Dialplan Variablen]]
 +
 +=====Installation=====
 +
 +<code>
 +#!/bin/sh
 +
 +apt-get -y install make build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion
 +
 +cd /usr/src
 +
 +wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
 +tar zxvf asterisk-18-current.tar.gz
 +
 +cd asterisk-18.*
 +
 +contrib/scripts/get_mp3_source.sh
 +contrib/scripts/install_prereq install
 +
 +./configure --with-jansson-bundled
 +
 +make menuselect
 +make
 +make install
 +make samples
 +make config
 +
 +ldconfig
 +
 +groupadd asterisk
 +useradd -d /var/lib/asterisk -g asterisk asterisk
 +
 +sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk
 +sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk
 +sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf
 +
 +mkdir /etc/asterisk /var/{run,lib,log,spool}/asterisk /usr/lib/asterisk
 +
 +chown -R asterisk:asterisk /etc/asterisk /var/{run,lib,log,spool}/asterisk /usr/lib/asterisk
 +</code>
 +
 +=====Erstkonfiguration=====
 +
 +Beispiel einer <code>/etc/asterisk/sip.conf</code> Datei.
 +
 +<code>
 +[general]
 +context = extern
 +transport = udp,tls
 +qualify = yes
 +
 +;videosupport=yes
 +allow = all
 +
 +; tls & srtp
 +tlsenable = yes
 +tlscertfile = /etc/asterisk/keys/asterisk.pem
 +tlsprivatekey = /etc/asterisk/keys/privkey.pem
 +
 +; sms
 +accept_outofcall_message = yes 
 +outofcall_message_context = sms
 +auth_message_requests = yes
 +
 +[101]
 +type = friend
 +secret = 1234
 +context = intern
 +host = dynamic
 +mailbox = 101@vm
 +encryption = yes
 +
 +[102]
 +type = friend
 +secret = 1234
 +context = intern
 +host = dynamic
 +mailbox = 102@vm
 +encryption = yes
 +
 +#include ext/myusers.conf
 +</code>
 +=====Extensions=====
 +
 +In der Datei ''/etc/asterisk/extensions.conf'' werden die Nebenstellen ([[https://www.voip-info.org/asterisk-config-extensionsconf/|Extensions]]) angelegt. Sie bestimmt was passiert wenn eine bestimmte Nummer gewählt wird.
 +
 +<code>
 +[extern]
 +exten => _XXX.,1,Answer()
 +same => n,Dial(${EXTEN:0}@intern)
 +same => n,VoiceMail(${EXTEN:0}@vm)
 +
 +[intern]
 +; voicemail main
 +exten => 9999,1,NoOp(Voicemail from ${CALLERID(num)})
 +exten => 9999,2,VoiceMailMain(${CALLERID(num)}@vm)
 +exten => 9999,3,HangUp()
 +
 +; script example
 +; exten => _XXX, 1, System("/my/script ${CHANNEL(uri)}")
 +
 +; all peers
 +exten => _XXX, 1, Answer()
 +exten => _XXX, n, Dial(SIP/${EXTEN:0}, 30, t)
 +exten => _XXX, n, VoiceMail(${EXTEN:0}@vm)
 +exten => _XXX, n, HangUp()
 +
 +; exten => _102, 1, Dial(08001234567@external, 30, t)
 +
 +[sms]
 +exten => _X.,1,NoOp(SMS received)
 +exten => _X.,n,NoOp(To ${MESSAGE(to)})
 +exten => _X.,n,NoOp(From ${MESSAGE(from)})
 +exten => _X.,n,NoOp(Body ${MESSAGE(body)})
 +exten => _X.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)})
 +exten => _X.,n,MessageSend(${ACTUALTO},${MESSAGE(from)})
 +</code>
 +
 +Siehe auch https://blog.astiostech.com/asterisk-10-or-11-messaging-smssip/
 +
 +=====VoiceMail=====
 +
 +In der Datei <code>/etc/asterisk/voicemail.conf</code> kann diei Mailbox gesteuert werden.
 +
 +<code>
 +[vm]
 +101 => 1234,Jane Doe,jane.doe@example.com
 +102 => 1234,Dummy Account,alice@bob.com
 +</code>
 +
 +=====Logs=====
 +
 +In der Datei ''/etc/asterisk/logger.conf'' kann man einstellen welche Logs man wo sehen möchte.
 +
 +<code>
 +console => debug,notice,warning,error,security
 +</code>
 +
 +=====CDR=====
 +
 +CDR steht für ''Call detail record'' und zeigt Details zu getätigten Telefonaten. Konfiguriert wird es unter ''/etc/asterisk/cdr*.conf'' und gespeichert wird unter ''/var/log/asterisk/cdr-csv/Master.csv'' solange nicht eine andere Datei konfiguriert wurde.
 +
 +=====Callfile=====
 +
 +
 +<code>
 +Channel: SIP/102 ; anrufer
 +MaxRetries: 2
 +RetryTime: 60
 +WaitTime: 30
 +Context: intern
 +Extension: 101 ; angerufener
 +</code>
 +
 +Und die Datei in das Verzeichnis ''/var/spool/asterisk/outgoing'' kopieren. Asterisk wid den Anruf bei der nächsten Gelegenheit ausführen.
 +
 +=====TLS=====
 +
 +====Lets encrypt====
 +
 +<code>
 +apt install certbot
 +certbot certonly --standalone -d zarat.ml
 +
 +mkdir /etc/asterisk/keys
 +
 +cp /etc/letsencrypt/live/zarat.ml/privkey.pem /etc/asterisk/keys/asterisk.key
 +cp /etc/letsencrypt/live/zarat.ml/fullchain.pem /etc/asterisk/keys/asterisk.cert
 +
 +chown asterisk:asterisk /etc/asterisk/keys/asterisk.cert /etc/asterisk/keys/asterisk.key
 +
 +chmod go-rwx /etc/asterisk/keys/asterisk.cert /etc/asterisk/keys/asterisk.key
 +</code>
 +
 +Datei ''/etc/asterisk/sip.conf'' bearbeiten
 +
 +<code>
 +tlscertfile=/etc/asterisk/keys/asterisk.cert
 +tlsprivatekey=/etc/asterisk/keys/asterisk.key
 +</code>
 +
 +See https://feeding.cloud.geek.nz/posts/using-letsencrypt-cert-with-asterisk/ and https://www.youtube.com/watch?v=FNIr4gWe4dg
 +
 +====Asterisk internal====
 +
 +<code>
 +cd /usr/src
 +wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
 +tar zxvf asterisk-16-current.tar.gz
 +rm -rf asterisk-16-current.tar.gz
 +cd asterisk-*/
 +
 +su asterisk
 +
 +mkdir /etc/asterisk/keys
 +
 +contrib/scripts/ast_tls_cert -C zarat.ml -O "My Company" -d /etc/asterisk/keys
 +
 +chmod 600 /etc/asterisk/keys/*
 +chown -R asterisk:asterisk /etc/asterisk/keys
 +</code>
 +
 +Datei ''/etc/asterisk/sip.conf'' bearbeiten
 +
 +<code>
 +tlsenable = yes
 +tlscertfile = /etc/asterisk/keys/asterisk.pem
 +transport = udp,tls
 +</code>
 +
 +=====Konferenzen=====
 +
 +In der Datei ''/etc/asterisk/confbridge.conf'' ersetzt man den kompletten Inhalt und legt 3 Einheiten an. Eine Default Bridge, einen Default user und einen Default admin.
 +
 +<code>
 +[general]
 +
 +[default_bridge]
 +type=bridge
 +max_members=10
 +
 +[admin_user]
 +type=user
 +pin=1234
 +admin=yes
 +marked=yes
 +music_on_hold_when_empty=yes
 +
 +[default_user]
 +type=user
 +pin=1234
 +wait_marked=yes
 +end_marked=yes
 +music_on_hold_when_empty=yes
 +announce_user_count=yes
 +</code>
 +
 +In der Datei ''/etc/asterisk/extensions.conf'' werden 2 Nebenstellen eingerichtet, die eine für den Admin und die andere für den User.
 +
 +<code>
 +; conference guest
 +exten => 100,1,Progress()
 +exten => 100,2,Wait(1)
 +exten => 100,3,ConfBridge(1,default_bridge,default_user)
 +
 +; conference admin
 +exten => 101,1,Progress()
 +exten => 101,2,Wait(1)
 +exten => 101,3,ConfBridge(1,default_bridge,admin_user)
 +</code>
 +
 +https://www.youtube.com/watch?v=n__WkoHhTeM
 +
 +=====HTTP WebRTC=====
 +
 +Möchte man den Zugriff via WebRTC aktivieren muss man den Zugang für SIP deaktivieren. Dazu in der Datei ''/etc/asterisk/modules.conf'' das jeweilige Modul laden oder blockieren.
 +
 +Für WebRTC müssen die folgenden Module vorhanden und aktiv sein.
 +
 +  * res_crypto
 +  * res_http_websocket
 +  * res_pjsip_transport_websocket
 +
 +In der Datei ''/etc/asterisk/pjsip.conf'' trägt man folgendes ein.
 +
 +<code>
 +[transport-wss]
 +type=transport
 +protocol=wss
 +bind=0.0.0.0
 +
 +[webrtc_client]
 +type=aor
 +max_contacts=5
 +remove_existing=yes
 +
 +[webrtc_client]
 +type=auth
 +auth_type=userpass
 +username=webrtc_client
 +password=webrtc_client
 +
 +[webrtc_client]
 +type=endpoint
 +aors=webrtc_client
 +auth=webrtc_client
 +dtls_auto_generate_cert=yes
 +webrtc=yes
 +context=default
 +disallow=all
 +allow=opus,ulaw
 +</code>
 +
 +In die Datei ''/etc/asterisk/http.conf'' trägt man folgendes ein.
 +
 +<code>
 +[general]
 +enabled=yes
 +bindaddr=0.0.0.0
 +bindport=8088
 +tlsenable=yes
 +tlsbindaddr=0.0.0.0:8089
 +tlscertfile=/etc/asterisk/keys/asterisk.crt
 +tlsprivatekey=/etc/asterisk/keys/asterisk.key
 +</code>
 +
 +Siehe https://wiki.asterisk.org/wiki/display/AST/Configuring+Asterisk+for+WebRTC+Clients
 +
 +=====Manager=====
 +
 +Todo - Siehe https://www.asteriskguru.com/tutorials/manager_conf.html und https://www.voip-info.org/asterisk-config-managerconf/
 +
 +=====Fax=====
 +
 +<code>
 +[default]
 +; Answer the line and listen
 +exten => s,1,Answer
 +; Dial an extension, let asterisk give a ringtone
 +exten => s,2,Dial(IAX2/3987,40,r)
 +; Hangup if nobody picked up within 40 seconds
 +exten => s,3,Hangup
 +
 +; Did we get a fax?
 +exten => fax,1,SetVar(FAXFILE=/var/spool/asterisk-fax/${UNIQUEID}.tif)
 +exten => fax,2,rxfax(${FAXFILE})
 +</code>
 +
 +Send to queue
 +
 +<code>
 +Channel:ZAP/G1/1234567
 +MaxRetries: 0
 +WaitTime: 20
 +Application:txfax
 +Data:/tmp/faximage.tif|caller
 +</code>
 +
 +See https://www.voip-info.org/asterisk-fax/
 +
 +=====Links=====
 +
 +  * [[https://www.asteriskguru.com/|Asterisk Guru]]
 +  * [[http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html/asterisk-book.html|Asterisk - The Definitive Guide]]
 +  * https://www.youtube.com/watch?v=kVlXQiTp7vU
 +  * https://elektronikbasteln.pl7.de/eine-einfache-asterisk-konfiguration-fuer-einen-sip-server-als-telefonanlage
 +  * https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Specifics
 +  * https://www.youtube.com/watch?v=We_nG9f0eS8
 +  * [[http://cdn.oreillystatic.com/books/9780596510480.pdf|Asterisk - The future of telephony - Oreilly]]
 +
 +
 +Apps
 +
 +  * Zoiper
 +  * Linphone
 +  * MicroSIP
 +  * MizuDroid
asterisk.txt · Zuletzt geändert: 2025/06/03 01:00 von jango