Einrichten von Asterisk 14.x unter CentOS7
Asterisk ist eine OpenSource Telekommunkationssystem, entwickelt von Marc Spencer / Digium für Linux Systeme.
Dokumentation
Hinweise zum Release 14 finden sich auf der Dokumentationsseite von Asterisk. Alle Neuerungen des aktuellen Release finden sich auf der Seite New in 14. Die Seite Asterisk 14 Command Reference beinhaltet weitere Unterseiten zu den Kommandos und APIs.
Installation
Die Installation von Asterisk unetr CentOS 7 könnte man an Hand der Programm-Sourcen vornehmen. Dazu müsste auf dem VoIP-Server aber unter anderem Entwicklungstools wie „gcc & Co“ installiert werden; was natürlich auf einem Produktivsystem mehr als zweifelhaft ist und aus Sicherheitsüberlegungen heraus tunlichst vermieden werden sollte.
Repository ast.tucny.com
Als Alternative bedienen wir uns daher eines aktuell gepfegten Repositories, welches uns für CentOS 7 aktuelle und gepatchte RPM-Pakete zur Verfügung stellen kann. Eines dieser Repository ist von Tucny.
Priorities installieren
Als erstes installieren wird das Paket priorities.
# yum install yum-priorities -y
Anschließend prüfen wir, ob in der Konfigurationsdatei /etc/yum/pluginconf.d/priorities.conf folgende Zeilen eingetragen sind:
[main] enabled = 1
Dazu benutzen wir z.B. den Editor vim:
# vim /etc/yum/pluginconf.d/priorities.conf
Anschliessend tragen wir die differenzierten Prioritäten in der Konfig-Datei /etc/yum.repos.d/CentOS-Base.repo nach:
vim /etc/yum.repos.d/CentOS-Base.repo
Interessant ist für uns hier jeweils die Zeile:
priority=n
n ist hierbei eine Zahl zwischen 1 und 99.
Den Quellen [base], [updates], [extras] geben wir die priority=1.
[centosplus], [contrib] erhält die priority=2.
Den 3rd party repositories, wie z.B. epel geben wir nun eine Priorität größer-gleich „10“, also z.B. priority=10.
ast.tucny.com
Nun holen wir uns die Repo-Datei auf unseren Server; zuvor wechseln wir aber noch in das Verzeichnis /etc/yum.repos.d/.
# cd /etc/yum.repos.d/
# wget https://ast.tucny.com/repo/tucny-asterisk.repo
Nun könnnen wir noch die Priorität unserer neuen Programmpeketquelle ast.tucny.com anpassen:
# vim /etc/yum.repos.d/tucny-asterisk.repo
- /etc/yum.repos.d/tucny-asterisk.repo
# tucny-asterisk.repo # # This repo file contains 4 repositories, all disabled by default. # If you want to use any of the Asterisk release, you should enable # the repository for that version and the asterisk-common repository # by setting enabled=1. # # All packages are signed, so it is recommended to manually import # the key prior to enabling the repositorys, this can by done by # running: # rpm --import https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny # [asterisk-common] name=Asterisk Common Requirement Packages @ tucny.com baseurl=https://ast.tucny.com/repo/asterisk-common/el$releasever/$basearch/ #mirrorlist=https://ast.tucny.com/mirrorlist.php?release=$releasever&arch=$basearch&repo=asterisk-common enabled=1 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny priority=5 [asterisk-1.8] name=Asterisk 1.8 Packages @ tucny.com #baseurl=https://ast.tucny.com/repo/asterisk-1.8/el$releasever/$basearch/ mirrorlist=https://ast.tucny.com/mirrorlist.php?release=$releasever&arch=$basearch&repo=asterisk-1.8 enabled=0 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny priority=5 [asterisk-11] name=Asterisk 11 Packages @ tucny.com #baseurl=https://ast.tucny.com/repo/asterisk-11/el$releasever/$basearch/ mirrorlist=https://ast.tucny.com/mirrorlist.php?release=$releasever&arch=$basearch&repo=asterisk-11 enabled=0 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny priority=5 [asterisk-13] name=Asterisk 13 Packages @ tucny.com #baseurl=https://ast.tucny.com/repo/asterisk-13/el$releasever/$basearch/ mirrorlist=https://ast.tucny.com/mirrorlist.php?release=$releasever&arch=$basearch&repo=asterisk-13 enabled=0 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny priority=5 [asterisk-14] name=Asterisk 14 Packages @ tucny.com baseurl=https://ast.tucny.com/repo/asterisk-14/el$releasever/$basearch/ #mirrorlist=https://ast.tucny.com/mirrorlist.php?release=$releasever&arch=$basearch&repo=asterisk-14 enabled=1 gpgcheck=1 gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny priority=5
Hier passen wir nun die Eingangs erwähnte Priorität an, z.B. priority=5 und im Falle von Asterisk 14 die zugehörigen Zeilen nach.
Abschliessend installieren wir den GPG Schlüssel des tucny-asterisk-repos:
# rpm --import https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny
Nun können wir testen, ob die Konfigurationsanpassung den gewünschten Erfolg bringt. Dazu fragen wir ab, ob es ein Paket asterisk gibt und was dies ggf. mitbringt.
# yum info asterisk
Loaded plugins: changelog, priorities 323 packages excluded due to repository priority protections Available Packages Name : asterisk Arch : x86_64 Version : 14.2.1 Release : 1.el7.centos Size : 3.8 M Repo : asterisk-14/7/x86_64 Summary : The Open Source PBX URL : https://www.asterisk.org/ License : GPLv2 Description : Asterisk is a complete PBX in software. It runs on Linux and provides : all of the features you would expect from a PBX and more. Asterisk : does voice over IP in three protocols, and can interoperate with : almost all standards-based telephony equipment using relatively : inexpensive hardware.
RPM-Grundinstallation
asterisk
Nachdem unsere Vorbereitungen erst einmal abgeschlossen sind, können wir uns nun daran machen, das Grundpaket Asterisk zu installieren.
# yum install asterisk -y
Den recht umfangreichen Inhalt des RPM-Paketes können wir uns mit Hilfe des folgenden Aufrufs bei Interesse anzeigen lassen.
# rpm -qil asterisk
Name : asterisk
Version : 14.2.1
Release : 1.el7.centos
Architecture: x86_64
Install Date: Wed 18 Jan 2017 03:08:52 PM CET
Group : Applications/Internet
Size : 14393335
License : GPLv2
Signature : RSA/SHA1, Thu 08 Dec 2016 11:58:05 PM CET, Key ID ccf40e16b9a46fa9
Source RPM : asterisk-14.2.1-1.el7.centos.src.rpm
Build Date : Thu 08 Dec 2016 11:57:54 PM CET
Build Host : olive.ph.tucny.com
Relocations : (not relocatable)
URL : https://www.asterisk.org/
Summary : The Open Source PBX
Description :
Asterisk is a complete PBX in software. It runs on Linux and provides
all of the features you would expect from a PBX and more. Asterisk
does voice over IP in three protocols, and can interoperate with
almost all standards-based telephony equipment using relatively
inexpensive hardware.
/etc/asterisk
/etc/asterisk/acl.conf
/etc/asterisk/adsi.conf
/etc/asterisk/agents.conf
/etc/asterisk/alarmreceiver.conf
/etc/asterisk/amd.conf
/etc/asterisk/ari.conf
/etc/asterisk/asterisk.adsi
/etc/asterisk/asterisk.conf
/etc/asterisk/ccss.conf
/etc/asterisk/cdr.conf
/etc/asterisk/cdr_custom.conf
/etc/asterisk/cdr_manager.conf
/etc/asterisk/cdr_syslog.conf
/etc/asterisk/cel.conf
/etc/asterisk/cel_custom.conf
/etc/asterisk/cli.conf
/etc/asterisk/cli_aliases.conf
/etc/asterisk/cli_permissions.conf
/etc/asterisk/codecs.conf
/etc/asterisk/confbridge.conf
/etc/asterisk/dnsmgr.conf
/etc/asterisk/dsp.conf
/etc/asterisk/dundi.conf
/etc/asterisk/enum.conf
/etc/asterisk/extconfig.conf
/etc/asterisk/extensions.conf
/etc/asterisk/features.conf
/etc/asterisk/followme.conf
/etc/asterisk/http.conf
/etc/asterisk/indications.conf
/etc/asterisk/logger.conf
/etc/asterisk/manager.conf
/etc/asterisk/modules.conf
/etc/asterisk/musiconhold.conf
/etc/asterisk/muted.conf
/etc/asterisk/osp.conf
/etc/asterisk/phoneprov.conf
/etc/asterisk/queuerules.conf
/etc/asterisk/queues.conf
/etc/asterisk/res_parking.conf
/etc/asterisk/res_stun_monitor.conf
/etc/asterisk/resolver_unbound.conf
/etc/asterisk/rtp.conf
/etc/asterisk/say.conf
/etc/asterisk/sla.conf
/etc/asterisk/smdi.conf
/etc/asterisk/sorcery.conf
/etc/asterisk/stasis.conf
/etc/asterisk/statsd.conf
/etc/asterisk/telcordia-1.adsi
/etc/asterisk/udptl.conf
/etc/asterisk/users.conf
/etc/asterisk/vpb.conf
/etc/logrotate.d/asterisk
/run/asterisk
/usr/lib/systemd/system/asterisk.service
/usr/lib/tmpfiles.d/asterisk.conf
/usr/lib64/asterisk
/usr/lib64/asterisk/modules
/usr/lib64/asterisk/modules/app_adsiprog.so
/usr/lib64/asterisk/modules/app_agent_pool.so
/usr/lib64/asterisk/modules/app_alarmreceiver.so
/usr/lib64/asterisk/modules/app_amd.so
/usr/lib64/asterisk/modules/app_authenticate.so
/usr/lib64/asterisk/modules/app_bridgeaddchan.so
/usr/lib64/asterisk/modules/app_bridgewait.so
/usr/lib64/asterisk/modules/app_cdr.so
/usr/lib64/asterisk/modules/app_celgenuserevent.so
/usr/lib64/asterisk/modules/app_chanisavail.so
/usr/lib64/asterisk/modules/app_channelredirect.so
/usr/lib64/asterisk/modules/app_chanspy.so
/usr/lib64/asterisk/modules/app_confbridge.so
/usr/lib64/asterisk/modules/app_controlplayback.so
/usr/lib64/asterisk/modules/app_db.so
/usr/lib64/asterisk/modules/app_dial.so
/usr/lib64/asterisk/modules/app_dictate.so
/usr/lib64/asterisk/modules/app_directed_pickup.so
/usr/lib64/asterisk/modules/app_disa.so
/usr/lib64/asterisk/modules/app_dumpchan.so
/usr/lib64/asterisk/modules/app_echo.so
/usr/lib64/asterisk/modules/app_exec.so
/usr/lib64/asterisk/modules/app_externalivr.so
/usr/lib64/asterisk/modules/app_followme.so
/usr/lib64/asterisk/modules/app_forkcdr.so
/usr/lib64/asterisk/modules/app_getcpeid.so
/usr/lib64/asterisk/modules/app_image.so
/usr/lib64/asterisk/modules/app_macro.so
/usr/lib64/asterisk/modules/app_milliwatt.so
/usr/lib64/asterisk/modules/app_mixmonitor.so
/usr/lib64/asterisk/modules/app_morsecode.so
/usr/lib64/asterisk/modules/app_nbscat.so
/usr/lib64/asterisk/modules/app_originate.so
/usr/lib64/asterisk/modules/app_playback.so
/usr/lib64/asterisk/modules/app_playtones.so
/usr/lib64/asterisk/modules/app_privacy.so
/usr/lib64/asterisk/modules/app_queue.so
/usr/lib64/asterisk/modules/app_read.so
/usr/lib64/asterisk/modules/app_readexten.so
/usr/lib64/asterisk/modules/app_record.so
/usr/lib64/asterisk/modules/app_saycounted.so
/usr/lib64/asterisk/modules/app_sayunixtime.so
/usr/lib64/asterisk/modules/app_senddtmf.so
/usr/lib64/asterisk/modules/app_sendtext.so
/usr/lib64/asterisk/modules/app_setcallerid.so
/usr/lib64/asterisk/modules/app_sms.so
/usr/lib64/asterisk/modules/app_softhangup.so
/usr/lib64/asterisk/modules/app_speech_utils.so
/usr/lib64/asterisk/modules/app_stack.so
/usr/lib64/asterisk/modules/app_stasis.so
/usr/lib64/asterisk/modules/app_statsd.so
/usr/lib64/asterisk/modules/app_system.so
/usr/lib64/asterisk/modules/app_talkdetect.so
/usr/lib64/asterisk/modules/app_test.so
/usr/lib64/asterisk/modules/app_transfer.so
/usr/lib64/asterisk/modules/app_url.so
/usr/lib64/asterisk/modules/app_userevent.so
/usr/lib64/asterisk/modules/app_verbose.so
/usr/lib64/asterisk/modules/app_waitforring.so
/usr/lib64/asterisk/modules/app_waitforsilence.so
/usr/lib64/asterisk/modules/app_waituntil.so
/usr/lib64/asterisk/modules/app_while.so
/usr/lib64/asterisk/modules/app_zapateller.so
/usr/lib64/asterisk/modules/bridge_builtin_features.so
/usr/lib64/asterisk/modules/bridge_builtin_interval_features.so
/usr/lib64/asterisk/modules/bridge_holding.so
/usr/lib64/asterisk/modules/bridge_native_rtp.so
/usr/lib64/asterisk/modules/bridge_simple.so
/usr/lib64/asterisk/modules/bridge_softmix.so
/usr/lib64/asterisk/modules/cdr_csv.so
/usr/lib64/asterisk/modules/cdr_custom.so
/usr/lib64/asterisk/modules/cdr_manager.so
/usr/lib64/asterisk/modules/cdr_syslog.so
/usr/lib64/asterisk/modules/cel_custom.so
/usr/lib64/asterisk/modules/cel_manager.so
/usr/lib64/asterisk/modules/chan_bridge_media.so
/usr/lib64/asterisk/modules/chan_rtp.so
/usr/lib64/asterisk/modules/codec_a_mu.so
/usr/lib64/asterisk/modules/codec_adpcm.so
/usr/lib64/asterisk/modules/codec_alaw.so
/usr/lib64/asterisk/modules/codec_g722.so
/usr/lib64/asterisk/modules/codec_g726.so
/usr/lib64/asterisk/modules/codec_gsm.so
/usr/lib64/asterisk/modules/codec_ilbc.so
/usr/lib64/asterisk/modules/codec_lpc10.so
/usr/lib64/asterisk/modules/codec_resample.so
/usr/lib64/asterisk/modules/codec_speex.so
/usr/lib64/asterisk/modules/codec_ulaw.so
/usr/lib64/asterisk/modules/format_g719.so
/usr/lib64/asterisk/modules/format_g723.so
/usr/lib64/asterisk/modules/format_g726.so
/usr/lib64/asterisk/modules/format_g729.so
/usr/lib64/asterisk/modules/format_gsm.so
/usr/lib64/asterisk/modules/format_h263.so
/usr/lib64/asterisk/modules/format_h264.so
/usr/lib64/asterisk/modules/format_ilbc.so
/usr/lib64/asterisk/modules/format_jpeg.so
/usr/lib64/asterisk/modules/format_ogg_speex.so
/usr/lib64/asterisk/modules/format_ogg_vorbis.so
/usr/lib64/asterisk/modules/format_pcm.so
/usr/lib64/asterisk/modules/format_siren14.so
/usr/lib64/asterisk/modules/format_siren7.so
/usr/lib64/asterisk/modules/format_sln.so
/usr/lib64/asterisk/modules/format_vox.so
/usr/lib64/asterisk/modules/format_wav.so
/usr/lib64/asterisk/modules/format_wav_gsm.so
/usr/lib64/asterisk/modules/func_aes.so
/usr/lib64/asterisk/modules/func_audiohookinherit.so
/usr/lib64/asterisk/modules/func_base64.so
/usr/lib64/asterisk/modules/func_blacklist.so
/usr/lib64/asterisk/modules/func_callcompletion.so
/usr/lib64/asterisk/modules/func_callerid.so
/usr/lib64/asterisk/modules/func_cdr.so
/usr/lib64/asterisk/modules/func_channel.so
/usr/lib64/asterisk/modules/func_config.so
/usr/lib64/asterisk/modules/func_cut.so
/usr/lib64/asterisk/modules/func_db.so
/usr/lib64/asterisk/modules/func_devstate.so
/usr/lib64/asterisk/modules/func_dialgroup.so
/usr/lib64/asterisk/modules/func_dialplan.so
/usr/lib64/asterisk/modules/func_enum.so
/usr/lib64/asterisk/modules/func_env.so
/usr/lib64/asterisk/modules/func_extstate.so
/usr/lib64/asterisk/modules/func_frame_trace.so
/usr/lib64/asterisk/modules/func_global.so
/usr/lib64/asterisk/modules/func_groupcount.so
/usr/lib64/asterisk/modules/func_hangupcause.so
/usr/lib64/asterisk/modules/func_holdintercept.so
/usr/lib64/asterisk/modules/func_iconv.so
/usr/lib64/asterisk/modules/func_jitterbuffer.so
/usr/lib64/asterisk/modules/func_lock.so
/usr/lib64/asterisk/modules/func_logic.so
/usr/lib64/asterisk/modules/func_math.so
/usr/lib64/asterisk/modules/func_md5.so
/usr/lib64/asterisk/modules/func_module.so
/usr/lib64/asterisk/modules/func_periodic_hook.so
/usr/lib64/asterisk/modules/func_pitchshift.so
/usr/lib64/asterisk/modules/func_presencestate.so
/usr/lib64/asterisk/modules/func_rand.so
/usr/lib64/asterisk/modules/func_realtime.so
/usr/lib64/asterisk/modules/func_sha1.so
/usr/lib64/asterisk/modules/func_shell.so
/usr/lib64/asterisk/modules/func_sorcery.so
/usr/lib64/asterisk/modules/func_speex.so
/usr/lib64/asterisk/modules/func_sprintf.so
/usr/lib64/asterisk/modules/func_srv.so
/usr/lib64/asterisk/modules/func_strings.so
/usr/lib64/asterisk/modules/func_sysinfo.so
/usr/lib64/asterisk/modules/func_talkdetect.so
/usr/lib64/asterisk/modules/func_timeout.so
/usr/lib64/asterisk/modules/func_uri.so
/usr/lib64/asterisk/modules/func_version.so
/usr/lib64/asterisk/modules/func_volume.so
/usr/lib64/asterisk/modules/pbx_config.so
/usr/lib64/asterisk/modules/pbx_dundi.so
/usr/lib64/asterisk/modules/pbx_loopback.so
/usr/lib64/asterisk/modules/pbx_realtime.so
/usr/lib64/asterisk/modules/pbx_spool.so
/usr/lib64/asterisk/modules/res_adsi.so
/usr/lib64/asterisk/modules/res_agi.so
/usr/lib64/asterisk/modules/res_ari.so
/usr/lib64/asterisk/modules/res_ari_applications.so
/usr/lib64/asterisk/modules/res_ari_asterisk.so
/usr/lib64/asterisk/modules/res_ari_bridges.so
/usr/lib64/asterisk/modules/res_ari_channels.so
/usr/lib64/asterisk/modules/res_ari_device_states.so
/usr/lib64/asterisk/modules/res_ari_endpoints.so
/usr/lib64/asterisk/modules/res_ari_events.so
/usr/lib64/asterisk/modules/res_ari_model.so
/usr/lib64/asterisk/modules/res_ari_playbacks.so
/usr/lib64/asterisk/modules/res_ari_recordings.so
/usr/lib64/asterisk/modules/res_ari_sounds.so
/usr/lib64/asterisk/modules/res_chan_stats.so
/usr/lib64/asterisk/modules/res_clialiases.so
/usr/lib64/asterisk/modules/res_clioriginate.so
/usr/lib64/asterisk/modules/res_convert.so
/usr/lib64/asterisk/modules/res_crypto.so
/usr/lib64/asterisk/modules/res_endpoint_stats.so
/usr/lib64/asterisk/modules/res_format_attr_celt.so
/usr/lib64/asterisk/modules/res_format_attr_g729.so
/usr/lib64/asterisk/modules/res_format_attr_h263.so
/usr/lib64/asterisk/modules/res_format_attr_h264.so
/usr/lib64/asterisk/modules/res_format_attr_ilbc.so
/usr/lib64/asterisk/modules/res_format_attr_opus.so
/usr/lib64/asterisk/modules/res_format_attr_silk.so
/usr/lib64/asterisk/modules/res_format_attr_siren14.so
/usr/lib64/asterisk/modules/res_format_attr_siren7.so
/usr/lib64/asterisk/modules/res_format_attr_vp8.so
/usr/lib64/asterisk/modules/res_http_media_cache.so
/usr/lib64/asterisk/modules/res_http_post.so
/usr/lib64/asterisk/modules/res_http_websocket.so
/usr/lib64/asterisk/modules/res_limit.so
/usr/lib64/asterisk/modules/res_manager_devicestate.so
/usr/lib64/asterisk/modules/res_manager_presencestate.so
/usr/lib64/asterisk/modules/res_monitor.so
/usr/lib64/asterisk/modules/res_musiconhold.so
/usr/lib64/asterisk/modules/res_mutestream.so
/usr/lib64/asterisk/modules/res_parking.so
/usr/lib64/asterisk/modules/res_phoneprov.so
/usr/lib64/asterisk/modules/res_realtime.so
/usr/lib64/asterisk/modules/res_rtp_asterisk.so
/usr/lib64/asterisk/modules/res_rtp_multicast.so
/usr/lib64/asterisk/modules/res_security_log.so
/usr/lib64/asterisk/modules/res_smdi.so
/usr/lib64/asterisk/modules/res_sorcery_astdb.so
/usr/lib64/asterisk/modules/res_sorcery_config.so
/usr/lib64/asterisk/modules/res_sorcery_memory.so
/usr/lib64/asterisk/modules/res_sorcery_memory_cache.so
/usr/lib64/asterisk/modules/res_sorcery_realtime.so
/usr/lib64/asterisk/modules/res_speech.so
/usr/lib64/asterisk/modules/res_srtp.so
/usr/lib64/asterisk/modules/res_stasis.so
/usr/lib64/asterisk/modules/res_stasis_answer.so
/usr/lib64/asterisk/modules/res_stasis_device_state.so
/usr/lib64/asterisk/modules/res_stasis_playback.so
/usr/lib64/asterisk/modules/res_stasis_recording.so
/usr/lib64/asterisk/modules/res_stasis_snoop.so
/usr/lib64/asterisk/modules/res_statsd.so
/usr/lib64/asterisk/modules/res_stun_monitor.so
/usr/lib64/asterisk/modules/res_timing_pthread.so
/usr/lib64/asterisk/modules/res_timing_timerfd.so
/usr/lib64/libasteriskssl.so
/usr/lib64/libasteriskssl.so.1
/usr/sbin/astcanary
/usr/sbin/astdb2sqlite3
/usr/sbin/asterisk
/usr/sbin/astgenkey
/usr/sbin/astman
/usr/sbin/astversion
/usr/sbin/autosupport
/usr/sbin/check_expr
/usr/sbin/check_expr2
/usr/sbin/muted
/usr/sbin/rasterisk
/usr/sbin/smsq
/usr/sbin/stereorize
/usr/sbin/streamplayer
/usr/share/asterisk
/usr/share/asterisk/agi-bin
/usr/share/asterisk/documentation
/usr/share/asterisk/documentation/appdocsxml.dtd
/usr/share/asterisk/documentation/appdocsxml.xslt
/usr/share/asterisk/documentation/core-en_US.xml
/usr/share/asterisk/documentation/thirdparty
/usr/share/asterisk/images
/usr/share/asterisk/images/asterisk-intro.jpg
/usr/share/asterisk/images/kpad2.jpg
/usr/share/asterisk/keys
/usr/share/asterisk/moh
/usr/share/asterisk/phoneprov
/usr/share/asterisk/rest-api
/usr/share/asterisk/rest-api/applications.json
/usr/share/asterisk/rest-api/asterisk.json
/usr/share/asterisk/rest-api/bridges.json
/usr/share/asterisk/rest-api/channels.json
/usr/share/asterisk/rest-api/deviceStates.json
/usr/share/asterisk/rest-api/endpoints.json
/usr/share/asterisk/rest-api/events.json
/usr/share/asterisk/rest-api/mailboxes.json
/usr/share/asterisk/rest-api/playbacks.json
/usr/share/asterisk/rest-api/recordings.json
/usr/share/asterisk/rest-api/resources.json
/usr/share/asterisk/rest-api/sounds.json
/usr/share/asterisk/sounds
/usr/share/asterisk/static-http
/usr/share/asterisk/static-http/ajamdemo.html
/usr/share/asterisk/static-http/appdocsxml.xslt
/usr/share/asterisk/static-http/astman.css
/usr/share/asterisk/static-http/astman.js
/usr/share/asterisk/static-http/core-en_US.xml
/usr/share/asterisk/static-http/mantest.html
/usr/share/asterisk/static-http/prototype.js
/usr/share/doc/asterisk-14.2.1
/usr/share/doc/asterisk-14.2.1/BUGS
/usr/share/doc/asterisk-14.2.1/CREDITS
/usr/share/doc/asterisk-14.2.1/ChangeLog
/usr/share/doc/asterisk-14.2.1/README
/usr/share/doc/asterisk-14.2.1/README-SERIOUSLY.bestpractices.txt
/usr/share/doc/asterisk-14.2.1/README-addons.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-1.2.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-1.4.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-1.6.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-1.8.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-10.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-11.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-12.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE-13.txt
/usr/share/doc/asterisk-14.2.1/UPGRADE.txt
/usr/share/doc/asterisk-14.2.1/Zaptel-to-DAHDI.txt
/usr/share/doc/asterisk-14.2.1/asterisk-14.2.1-summary.txt
/usr/share/doc/asterisk-14.2.1/asterisk.sgml
/usr/share/doc/asterisk-14.2.1/configs
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/README
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/asterisk.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/cdr.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/cdr_custom.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/confbridge.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/extensions.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/indications.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/logger.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/modules.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/musiconhold.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/pjsip.conf
/usr/share/doc/asterisk-14.2.1/configs/basic-pbx/voicemail.conf
/usr/share/doc/asterisk-14.2.1/configs/samples
/usr/share/doc/asterisk-14.2.1/configs/samples/acl.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/adsi.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/agents.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/alarmreceiver.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/alsa.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/amd.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/app_mysql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/app_skel.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/ari.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/asterisk.adsi
/usr/share/doc/asterisk-14.2.1/configs/samples/asterisk.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/calendar.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/ccss.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_adaptive_odbc.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_custom.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_manager.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_mysql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_odbc.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_pgsql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_sqlite3_custom.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_syslog.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cdr_tds.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel_custom.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel_odbc.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel_pgsql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel_sqlite3_custom.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cel_tds.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/chan_dahdi.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/chan_mobile.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cli.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cli_aliases.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/cli_permissions.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/codecs.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/confbridge.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/config_test.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/console.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/dbsep.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/dnsmgr.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/dsp.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/dundi.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/enum.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/extconfig.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/extensions.ael.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/extensions.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/extensions.lua.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/extensions_minivm.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/features.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/festival.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/followme.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/func_odbc.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/hep.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/http.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/iax.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/iaxprov.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/indications.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/logger.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/manager.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/meetme.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/mgcp.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/minivm.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/misdn.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/modules.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/motif.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/musiconhold.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/muted.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/ooh323.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/osp.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/oss.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/phone.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/phoneprov.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/pjproject.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/pjsip.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/pjsip_notify.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/pjsip_wizard.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/queuerules.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/queues.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_config_mysql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_config_sqlite.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_config_sqlite3.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_corosync.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_curl.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_fax.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_ldap.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_odbc.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_parking.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_pgsql.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_pktccops.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_snmp.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/res_stun_monitor.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/resolver_unbound.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/rtp.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/say.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/sip.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/sip_notify.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/skinny.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/sla.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/smdi.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/sorcery.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/ss7.timers.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/stasis.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/statsd.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/telcordia-1.adsi
/usr/share/doc/asterisk-14.2.1/configs/samples/test_sorcery.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/udptl.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/unistim.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/users.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/voicemail.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/vpb.conf.sample
/usr/share/doc/asterisk-14.2.1/configs/samples/xmpp.conf.sample
/usr/share/man/man8/astdb2bdb.8.gz
/usr/share/man/man8/astdb2sqlite3.8.gz
/usr/share/man/man8/asterisk.8.gz
/usr/share/man/man8/astgenkey.8.gz
/usr/share/man/man8/autosupport.8.gz
/usr/share/man/man8/safe_asterisk.8.gz
/var/lib/asterisk
/var/log/asterisk
/var/log/asterisk/cdr-csv
/var/log/asterisk/cdr-custom
/var/spool/asterisk
/var/spool/asterisk/monitor
/var/spool/asterisk/outgoing
/var/spool/asterisk/tmp
/var/spool/asterisk/uploads
/var/spool/asterisk/voicemail
asterisk-iax2
Da wir später z.B. für die Clients auf das InterAsterisk eXchange Protokoll oder kurz IAX2 zurückgreifen wollen, installieren wir hierzu das zugehörige RPM.
# yum install asterisk-iax2
Was genau diese RPM-Paket in unserern Server mitgebracht hat zeigt uns wie immer der Aufruf des Befehls rpm mit der Option -qil.
# rpm -qil asterisk-iax2
Name : asterisk-iax2
Version : 14.2.1
Release : 1.el7.centos
Architecture: x86_64
Install Date: Wed 18 Jan 2017 07:08:23 PM CET
Group : Applications/Internet
Size : 389194
License : GPLv2
Signature : RSA/SHA1, Thu 08 Dec 2016 11:58:07 PM CET, Key ID ccf40e16b9a46fa9
Source RPM : asterisk-14.2.1-1.el7.centos.src.rpm
Build Date : Thu 08 Dec 2016 11:57:54 PM CET
Build Host : olive.ph.tucny.com
Relocations : (not relocatable)
URL : https://www.asterisk.org/
Summary : IAX2 channel driver for Asterisk
Description :
IAX2 channel driver for Asterisk
/etc/asterisk/iax.conf
/etc/asterisk/iaxprov.conf
/usr/lib64/asterisk/modules/chan_iax2.so
/usr/share/asterisk/firmware
/usr/share/asterisk/firmware/iax
asterisk-pjsip
Für die Anbindung unseres Asterisk-Servers an den Provider nutzen wir das Session Initiation Protocol - SIP. Statt dem alten chan_sip Modulen benutzen wir unter Asterisk 14 nunmehr die neuen, auf den PJSIP-Bibliotheken basierenden, SIP-Stack. die wesentlichen Unterschiede bei der Konfiguration sind auf dieser Seite ausführlich beschrieben.
Wie installieren also auch hier das passende RPM.
# yum install asterisk-pjsip
Was genau diese RPM-Paket in unseren Server mitgebracht hat zeigt uns wie immer der Aufruf des Befehls rpm mit der Option -qil.
# rpm -qil asterisk-pjsip
Name : asterisk-pjsip
Version : 14.2.1
Release : 1.el7.centos
Architecture: x86_64
Install Date: Thu 19 Jan 2017 02:21:55 PM CET
Group : Applications/Internet
Size : 1554633
License : GPLv2
Signature : RSA/SHA1, Thu 08 Dec 2016 11:58:06 PM CET, Key ID ccf40e16b9a46fa9
Source RPM : asterisk-14.2.1-1.el7.centos.src.rpm
Build Date : Thu 08 Dec 2016 11:57:54 PM CET
Build Host : olive.ph.tucny.com
Relocations : (not relocatable)
URL : https://www.asterisk.org/
Summary : SIP channel based upon the PJSIP library
Description :
SIP channel based upon the PJSIP library
/etc/asterisk/pjproject.conf
/etc/asterisk/pjsip.conf
/etc/asterisk/pjsip_notify.conf
/etc/asterisk/pjsip_wizard.conf
/usr/lib64/asterisk/modules/chan_pjsip.so
/usr/lib64/asterisk/modules/func_pjsip_aor.so
/usr/lib64/asterisk/modules/func_pjsip_contact.so
/usr/lib64/asterisk/modules/func_pjsip_endpoint.so
/usr/lib64/asterisk/modules/res_pjproject.so
/usr/lib64/asterisk/modules/res_pjsip.so
/usr/lib64/asterisk/modules/res_pjsip_acl.so
/usr/lib64/asterisk/modules/res_pjsip_authenticator_digest.so
/usr/lib64/asterisk/modules/res_pjsip_caller_id.so
/usr/lib64/asterisk/modules/res_pjsip_config_wizard.so
/usr/lib64/asterisk/modules/res_pjsip_dialog_info_body_generator.so
/usr/lib64/asterisk/modules/res_pjsip_diversion.so
/usr/lib64/asterisk/modules/res_pjsip_dlg_options.so
/usr/lib64/asterisk/modules/res_pjsip_dtmf_info.so
/usr/lib64/asterisk/modules/res_pjsip_empty_info.so
/usr/lib64/asterisk/modules/res_pjsip_endpoint_identifier_anonymous.so
/usr/lib64/asterisk/modules/res_pjsip_endpoint_identifier_ip.so
/usr/lib64/asterisk/modules/res_pjsip_endpoint_identifier_user.so
/usr/lib64/asterisk/modules/res_pjsip_exten_state.so
/usr/lib64/asterisk/modules/res_pjsip_header_funcs.so
/usr/lib64/asterisk/modules/res_pjsip_history.so
/usr/lib64/asterisk/modules/res_pjsip_logger.so
/usr/lib64/asterisk/modules/res_pjsip_messaging.so
/usr/lib64/asterisk/modules/res_pjsip_mwi.so
/usr/lib64/asterisk/modules/res_pjsip_mwi_body_generator.so
/usr/lib64/asterisk/modules/res_pjsip_nat.so
/usr/lib64/asterisk/modules/res_pjsip_notify.so
/usr/lib64/asterisk/modules/res_pjsip_one_touch_record_info.so
/usr/lib64/asterisk/modules/res_pjsip_outbound_authenticator_digest.so
/usr/lib64/asterisk/modules/res_pjsip_outbound_publish.so
/usr/lib64/asterisk/modules/res_pjsip_outbound_registration.so
/usr/lib64/asterisk/modules/res_pjsip_path.so
/usr/lib64/asterisk/modules/res_pjsip_phoneprov_provider.so
/usr/lib64/asterisk/modules/res_pjsip_pidf_body_generator.so
/usr/lib64/asterisk/modules/res_pjsip_pidf_digium_body_supplement.so
/usr/lib64/asterisk/modules/res_pjsip_pidf_eyebeam_body_supplement.so
/usr/lib64/asterisk/modules/res_pjsip_publish_asterisk.so
/usr/lib64/asterisk/modules/res_pjsip_pubsub.so
/usr/lib64/asterisk/modules/res_pjsip_refer.so
/usr/lib64/asterisk/modules/res_pjsip_registrar.so
/usr/lib64/asterisk/modules/res_pjsip_registrar_expire.so
/usr/lib64/asterisk/modules/res_pjsip_rfc3326.so
/usr/lib64/asterisk/modules/res_pjsip_sdp_rtp.so
/usr/lib64/asterisk/modules/res_pjsip_send_to_voicemail.so
/usr/lib64/asterisk/modules/res_pjsip_session.so
/usr/lib64/asterisk/modules/res_pjsip_sips_contact.so
/usr/lib64/asterisk/modules/res_pjsip_t38.so
/usr/lib64/asterisk/modules/res_pjsip_transport_management.so
/usr/lib64/asterisk/modules/res_pjsip_transport_websocket.so
/usr/lib64/asterisk/modules/res_pjsip_xpidf_body_generator.so
Programmstart
erster manueller Start
Abwohl wie noch keine individuellen Konfigurationsänderungen vorgenommen haben, können wir den Asterisk-Daemon schon starten. Hierzu nutzen wir das systemd Startscript.
# systemctl start asterisk.service
Den erfolgreichen Start des Daemon können wir nun abfragen.
# systemctl status asterisk.service -l
● asterisk.service - Asterisk PBX and telephony daemon. Loaded: loaded (/usr/lib/systemd/system/asterisk.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2017-01-18 19:27:13 CET; 29s ago Main PID: 12988 (asterisk) CGroup: /system.slice/asterisk.service └─12988 /usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] WARNING[12988]: res_phoneprov.c:1231 get_defaults: Unable to find a valid server address or name. Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] ERROR[12988]: ari/config.c:314 process_config: No configured users for ARI Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: 19:27:14.532 os_core_unix.c !pjlib 2.3 for POSIX initialized Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] WARNING[12988]: res_musiconhold.c:1767 load_moh_classes: A directory must be specified for class 'general'! Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] WARNING[12988]: res_musiconhold.c:1945 load_module: No music on hold classes configured, disabling music on hold. Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: 19:27:14.539 pjlib !select() I/O Queue created (0x7f33ac000948) Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: SIP channel loading... Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] NOTICE[12988]: confbridge/conf_config_parser.c:2126 verify_default_profiles: Adding default_menu menu to app_confbridge Jan 18 19:27:14 vml000177.dmz.nausch.org asterisk[12988]: [Jan 18 19:27:14] NOTICE[12988]: cel_custom.c:97 load_config: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs. Jan 18 19:27:15 vml000177.dmz.nausch.org asterisk[12988]: Asterisk Ready.
Im Verzeichnis /var/log/asterisk beschreibt der Daemon auch ein eigene Logdatei
# less /var/log/asterisk/messages
[Jan 18 19:27:13] Asterisk 14.2.1 built by mockbuild @ olive.ph.tucny.com on a x86_64 running Linux on 2016-12-08 22:53:51 UTC [Jan 18 19:27:14] NOTICE[12988] cdr.c: CDR simple logging enabled. [Jan 18 19:27:14] NOTICE[12988] loader.c: 223 modules will be loaded. [Jan 18 19:27:14] WARNING[12988] res_phoneprov.c: Unable to find a valid server address or name. [Jan 18 19:27:14] ERROR[12988] ari/config.c: No configured users for ARI [Jan 18 19:27:14] WARNING[12988] res_musiconhold.c: A directory must be specified for class 'general'! [Jan 18 19:27:14] WARNING[12988] res_musiconhold.c: No music on hold classes configured, disabling music on hold. [Jan 18 19:27:14] NOTICE[12988] confbridge/conf_config_parser.c: Adding default_menu menu to app_confbridge [Jan 18 19:27:14] NOTICE[12988] cel_custom.c: No mappings found in cel_custom.conf. Not logging CEL to custom CSVs.
automatischer Start
Damit der Daemon später beim Hochfahren des Asterisk-Servers automatisch gestartet wird, aktivieren wir den Autostart des Daemon.
# systemctl enable asterisk.service
Created symlink from /etc/systemd/system/multi-user.target.wants/asterisk.service to /usr/lib/systemd/system/asterisk.service.
Wollen wir prüfen ob der Autostart des Daemon richtig gesetzt wurde, fragen wir den Status entsprechend wie folgt ab.
# systemctl is-enabled asterisk.service
enabled
Asterisk-Konsole
Der laufende Asterisk-Server stellt zur Interaktion eine eigene Konsole zur Verfügung. Mit der Option -r
können wir uns beim Aufruf des Befehls asterisk mit dieser Konsole verbinden.
# asterisk -r
Asterisk 14.2.1, Copyright (C) 1999 - 2016, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 14.2.1 currently running on vml000177 (pid = 12988) vml000177*CLI>
Eine Übersicht über den Befehlsumfang den uns die Asterisk-Konsole zur Verfügung stellt, können wir uns mit dem Befehl help anzeigen lassen.
vml000177*CLI> help
! -- Execute a shell command acl show -- Show a named ACL or list all named ACLs agent logoff -- Sets an agent offline agent show all -- Show status of all agents agent show online -- Show status of online agents agent show -- Show information about an agent agi dump html -- Dumps a list of AGI commands in HTML format agi exec -- Add AGI command to a channel in Async AGI agi set debug [on|off] -- Enable/Disable AGI debugging agi show commands [topic] -- List AGI commands or specific help aoc set debug -- enable cli debugging of AOC messages ari mkpasswd -- Encrypts a password ari set debug -- Enable/disable debugging of an ARI application ari show apps -- List registered ARI applications ari show app -- Display details of a registered ARI application ari show status -- Show ARI settings ari show users -- List ARI users ari show user -- List single ARI user bridge kick -- Kick a channel from a bridge bridge show all -- List all bridges bridge show -- Show information about a bridge bridge technology show -- List registered bridge technologies bridge technology {suspend|unsuspend} -- Suspend/unsuspend a bridge technology cc cancel -- Kill a CC transaction cc report status -- Reports CC stats cdr set debug [on|off] -- Enable debugging in the CDR engine cdr show active -- Display active CDRs for channels cdr show status -- Display the CDR status cdr submit -- Posts all pending batched CDR data cel show status -- Display the CEL status channel originate -- Originate a call channel redirect -- Redirect a call channel request hangup -- Request a hangup on a given channel cli check permissions -- Try a permissions config for a user cli reload permissions -- Reload CLI permissions config cli show aliases -- Show CLI command aliases cli show permissions -- Show CLI permissions confbridge kick -- Kick participants out of conference bridges. confbridge list -- List conference bridges and participants. confbridge lock -- Lock a conference. confbridge mute -- Mute participants. confbridge record start -- Start recording a conference confbridge record stop -- Stop recording a conference. confbridge show menu -- Show a conference menu confbridge show menus -- Show a list of conference menus confbridge show profile bridge -- Show a conference bridge profile. confbridge show profile bridges -- Show a list of conference bridge profiles. confbridge show profile user -- Show a conference user profile. confbridge show profile users -- Show a list of conference user profiles. confbridge unlock -- Unlock a conference. confbridge unmute -- Unmute participants. config list -- Show all files that have loaded a configuration file config reload -- Force a reload on modules using a particular configuration file config show help -- Show configuration help for a module core abort shutdown -- Cancel a running shutdown core clear profile -- Clear profiling info core ping taskprocessor -- Ping a named task processor core reload -- Global reload core restart gracefully -- Restart Asterisk gracefully core restart now -- Restart Asterisk immediately core restart when convenient -- Restart Asterisk at empty call volume core set debug channel -- Enable/disable debugging on a channel core set debug -- Set level of debug chattiness core set verbose -- Set level of verbose chattiness core show applications [like|describing] -- Shows registered dialplan applications core show application -- Describe a specific dialplan application core show calls [uptime] -- Display information on calls core show channels [concise|verbose|count] -- Display information on channels core show channel -- Display information on a specific channel core show channeltypes -- List available channel types core show channeltype -- Give more details on that channel type core show codecs [audio|video|image|text] -- Displays a list of registered codecs core show codec -- Shows a specific codec core show config mappings -- Display config mappings (file names to config engines) core show file formats -- Displays file formats core show functions [like] -- Shows registered dialplan functions core show function -- Describe a specific dialplan function core show hanguphandlers all -- Show hangup handlers of all channels core show hanguphandlers -- Show hangup handlers of a specified channel core show help -- Display help list, or specific help on a command core show hints -- Show dialplan hints core show hint -- Show dialplan hint core show image formats -- Displays image formats core show license -- Show the license(s) for this copy of Asterisk core show profile -- Display profiling info core show settings -- Show some core settings core show sounds -- Shows available sounds core show sound -- Shows details about a specific sound core show switches -- Show alternative switches core show sysinfo -- Show System Information core show taskprocessors -- List instantiated task processors and statistics core show threads -- Show running threads core show translation -- Display translation matrix core show uptime [seconds] -- Show uptime information core show version -- Display version info core show warranty -- Show the warranty (if any) for this copy of Asterisk core stop gracefully -- Gracefully shut down Asterisk core stop now -- Shut down Asterisk immediately core stop when convenient -- Shut down Asterisk at empty call volume core waitfullybooted -- Wait for Asterisk to be fully booted data get -- Data API get data show providers -- Show data providers database del -- Removes database key/value database deltree -- Removes database keytree/values database get -- Gets database value database put -- Adds/updates database value database query -- Run a user-specified query on the astdb database show -- Shows database contents database showkey -- Shows database contents devstate change -- Change a custom device state devstate list -- List currently known custom device states dialplan add extension -- Add new extension into context dialplan add ignorepat -- Add new ignore pattern dialplan add include -- Include context in other context dialplan debug -- Show fast extension pattern matching data structures dialplan reload -- Reload extensions and *only* extensions dialplan remove context -- Remove a specified context dialplan remove extension -- Remove a specified extension dialplan remove ignorepat -- Remove ignore pattern from context dialplan remove include -- Remove a specified include from context dialplan save -- Save current dialplan into a file dialplan set chanvar -- Set a channel variable dialplan set extenpatternmatchnew false -- Use the Old extension pattern matching algorithm. dialplan set extenpatternmatchnew true -- Use the New extension pattern matching algorithm. dialplan set global -- Set global dialplan variable dialplan show -- Show dialplan dialplan show chanvar -- Show channel variables dialplan show globals -- Show global dialplan variables dnsmgr refresh -- Performs an immediate refresh dnsmgr reload -- Reloads the DNS manager configuration dnsmgr status -- Display the DNS manager status dundi flush [stats] -- Flush DUNDi cache dundi lookup -- Lookup a number in DUNDi dundi precache -- Precache a number in DUNDi dundi query -- Query a DUNDi EID dundi set debug {on|off} -- Enable/Disable DUNDi debugging dundi show cache -- Show DUNDi cache dundi show entityid -- Display Global Entity ID dundi show hints -- Show DUNDi hints in the cache dundi show mappings -- Show DUNDi mappings dundi show peers [registered|include|exclude|begin] -- Show defined DUNDi peers dundi show peer -- Show info on a specific DUNDi peer dundi show precache -- Show DUNDi precache dundi show requests -- Show DUNDi requests dundi show trans -- Show active DUNDi transactions dundi store history {on|off} -- Enable/Disable DUNDi historic records features show -- Lists configured features file convert -- Convert audio file group show channels -- Display active channels with group(s) hangup request -- <no description available> help -- <no description available> http show status -- Display HTTP server status iax2 provision -- Provision an IAX device iax2 prune realtime -- Prune a cached realtime lookup iax2 reload -- Reload IAX configuration iax2 set debug {on|off|peer} -- Enable/Disable IAX debugging iax2 set debug jb {on|off} -- Enable/Disable IAX jitterbuffer debugging iax2 set debug trunk {on|off} -- Enable/Disable IAX trunk debugging iax2 set mtu -- Set the IAX systemwide trunking MTU iax2 show cache -- Display IAX cached dialplan iax2 show callnumber usage -- Show current entries in IP call number limit table iax2 show channels -- List active IAX channels iax2 show firmware -- List available IAX firmware iax2 show netstats -- List active IAX channel netstats iax2 show peer -- Show details on specific IAX peer iax2 show peers -- List defined IAX peers iax2 show provisioning -- Display iax provisioning iax2 show registry -- Display IAX registration status iax2 show stats -- Display IAX statistics iax2 show threads -- Display IAX helper thread info iax2 show users [like] -- List defined IAX users iax2 test losspct -- Set IAX2 incoming frame loss percentage iax2 unregister -- Unregister (force expiration) an IAX2 peer from the registry indication add -- Add the given indication to the country indication remove -- Remove the given indication from the country indication show -- Display a list of all countries/indications keys init -- Initialize RSA key passcodes keys show -- Displays RSA key information local show channels -- List status of local channels logger add channel -- Adds a new logging channel logger mute -- Toggle logging output to a console logger reload -- Reopens the log files logger remove channel -- Removes a logging channel logger rotate -- Rotates and reopens the log files logger set level {DEBUG|NOTICE|WARNING|ERROR|VERBOSE|DTMF} {on|off} -- Enables/Disables a specific logging level for this console logger show channels -- List configured log channels manager reload -- Reload manager configurations manager set debug [on|off] -- Show, enable, disable debugging of the manager code manager show command -- Show a manager interface command manager show commands -- List manager interface commands manager show connected -- List connected manager interface users manager show eventq -- List manager interface queued events manager show events -- List manager interface events manager show event -- Show a manager interface event manager show settings -- Show manager global settings manager show users -- List configured manager users manager show user -- Display information on a specific manager user media cache create -- Create an item in the media cache media cache delete -- Remove an item from the media cache media cache refresh -- Refresh an item in the media cache media cache show all -- Show all items in the media cache media cache show -- Show a single item in the media cache mixmonitor {start|stop|list} -- Execute a MixMonitor command module load -- Load a module by name module reload -- Reload configuration for a module module show [like] -- List modules and info module unload -- Unload a module by name moh reload -- Reload MusicOnHold moh show classes -- List MusicOnHold classes moh show files -- List MusicOnHold file-based classes no debug channel -- Disable debugging on channel(s) originate -- <no description available> parking show -- Show a parking lot or a list of all parking lots. phoneprov show routes -- Show registered phoneprov http routes pjsip reload -- <no description available> presencestate change -- Change a custom presence state presencestate list -- List currently know custom presence states pri intense debug span -- <no description available> queue add member -- Add a channel to a specified queue queue reload {parameters|members|rules|all} -- Reload queues, members, queue rules, or parameters queue remove member -- Removes a channel from a specified queue queue reset stats -- Reset statistics for a queue queue set penalty -- Set penalty for a channel of a specified queue queue set ringinuse -- Set ringinuse for a channel of a specified queue queue show -- Show status of a specified queue queue show rules -- Show the rules defined in queuerules.conf queue {pause|unpause} member -- Pause or unpause a queue member realtime destroy -- Delete a row from a RealTime database realtime load -- Used to print out RealTime variables. realtime store -- Store a new row into a RealTime database realtime update -- Used to update RealTime variables. realtime update2 -- Used to test the RealTime update2 method reload -- <no description available> rtcp set debug {on|off|ip} -- Enable/Disable RTCP debugging rtcp set stats {on|off} -- Enable/Disable RTCP stats rtp set debug {on|off|ip} -- Enable/Disable RTP debugging say load [new|old] -- Set or show the say mode sip notify -- Send a notify packet to a SIP peer sip prune realtime [peer|all] -- Prune cached Realtime users/peers sip qualify peer -- Send an OPTIONS packet to a peer sip reload -- Reload SIP configuration sip set debug {on|off|ip|peer} -- Enable/Disable SIP debugging sip set history {on|off} -- Enable/Disable SIP history sip show {channels|subscriptions} -- List active SIP channels or subscriptions sip show channelstats -- List statistics for active SIP channels sip show channel -- Show detailed SIP channel info sip show domains -- List our local SIP domains sip show history -- Show SIP dialog history sip show inuse -- List all inuse/limits sip show mwi -- Show MWI subscriptions sip show objects -- List all SIP object allocations sip show peers -- List defined SIP peers sip show peer -- Show details on specific SIP peer sip show registry -- List SIP registration status sip show sched -- Present a report on the status of the scheduler queue sip show settings -- Show SIP global settings sip show tcp -- List TCP Connections sip show users -- List defined SIP users sip show user -- Show details on specific SIP user sip unregister -- Unregister (force expiration) a SIP peer from the registry sorcery memory cache dump -- Dump all objects within a sorcery memory cache sorcery memory cache expire -- Expire a specific object or ALL objects within a sorcery memory cache sorcery memory cache populate -- Clear and populate the sorcery memory cache with objects from the backend sorcery memory cache show -- Show sorcery memory cache information sorcery memory cache stale -- Mark a specific object or ALL objects as stale within a sorcery memory cache stun set debug {on|off} -- Enable/Disable STUN debugging stun show status -- Show STUN servers and statuses timing test -- Run a timing test udptl set debug {on|off|ip} -- Enable/Disable UDPTL debugging udptl show config -- Show UDPTL config options ulimit -- Set or show process resource limits xmldoc dump -- Dump the XML docs to the specified file
Eine Übersicht der wesentlichen Einstellungsoptionen können wir uns z.B. mit dem Befehl core show settings
anzeigen lassen.
vml000177*CLI> core show settings
PBX Core settings ----------------- Version: 14.2.1 Build Options: LOADABLE_MODULES Maximum calls: Not set Maximum open file handles: 1024 Root console verbosity: 0 Current console verbosity: 0 Debug level: 0 Maximum load average: 0.000000 Minimum free memory: 0 MB Startup time: 19:27:13 Last reload time: 19:27:13 System: Linux/3.10.0-327.18.2.el7.x86_64 built by mockbuild on x86_64 2016-12-08 22:53:51 UTC System name: Entity ID: 52:54:00:9a:ac:d3 PBX UUID: a4a776d9-2284-4ef4-a65a-19e838658ef0 Default language: en Language prefix: Enabled User name and group: / Executable includes: Disabled Transcode via SLIN: Enabled Transmit silence during rec: Disabled Generic PLC: Enabled Min DTMF duration:: 80 RTP dynamic payload types: 96-127 * Subsystems ------------- Manager (AMI): Disabled Web Manager (AMI/HTTP): Disabled Call data records: Enabled Realtime Architecture (ARA): Disabled * Directories ------------- Configuration file: /etc/asterisk/asterisk.conf Configuration directory: /etc/asterisk Module directory: /usr/lib64/asterisk/modules Spool directory: /var/spool/asterisk Log directory: /var/log/asterisk Run/Sockets directory: /run/asterisk PID file: /run/asterisk/asterisk.pid VarLib directory: /usr/share/asterisk Data directory: /usr/share/asterisk ASTDB: /var/spool/asterisk/astdb IAX2 Keys directory: /usr/share/asterisk/keys AGI Scripts directory: /usr/share/asterisk/agi-bin
Mit der Tastetnkombination STRG und C verlassen wir die Asterisk Konsole wieder.
vml000177*CLI>
Disconnected from Asterisk server Asterisk cleanly ending (0). Executing last minute cleanups
Paketfilter
# firewall-cmd --get-active-zones
public interfaces: eth0 eth2 eth1
# firewall-cmd --permanent --zone=internal --change-interface=eth1
The interface is under control of NetworkManager, setting zone to 'internal'.
success
# firewall-cmd --get-active-zones
internal interfaces: eth1 public interfaces: eth0 eth2
# firewall-cmd --permanent --zone=internal --add-rich-rule="rule family="ipv4" port protocol="udp" port="4569" accept"
success
# firewall-cmd --reload
success
# firewall-cmd --zone=internal --list-all
internal (active) target: default icmp-block-inversion: no interfaces: eth1 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: rule family="ipv4" port port="4569" protocol="udp" accept
# firewall-cmd --get-active-zones
internal interfaces: eth1 public interfaces: eth0 eth2
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" port protocol="udp" port="4569" accept"
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-all
external target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: yes forward-ports: sourceports: icmp-blocks: rich rules: rule family="ipv4" port port="4569" protocol="udp" accept
iax2
# asterisk -r
Asterisk 14.2.1, Copyright (C) 1999 - 2016, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 14.2.1 currently running on vml000177 (pid = 13261) vml000177*CLI>
vml000177*CLI> iax2 show peers
Name/Username Host Mask Port Status Description 33/33 10.0.10.122 (D) (null) 50548 Unmonitored demo/asterisk 216.207.245.47 (S) 255.255.255.255 4569 Unmonitored Demo System At Digium 2 iax2 peers [0 online, 0 offline, 2 unmonitored]
dialplan
# asterisk -r
Asterisk 14.2.1, Copyright (C) 1999 - 2016, Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk 14.2.1 currently running on vml000177 (pid = 13261) vml000177*CLI>
vml000177*CLI> dialplan show
[ Context '__func_periodic_hook_context__' created by 'func_periodic_hook' ]
'beep' (CID match '') => 1. Answer() [func_periodic_hook]
2. Playback(beep) [func_periodic_hook]
'hook' (CID match '') => 1. Set(EncodedChannel=${CUT(HOOK_CHANNEL,-,1-2)}) [func_periodic_hook]
2. Set(GROUP_NAME=${EncodedChannel}${HOOK_ID}) [func_periodic_hook]
3. Set(GROUP(periodic-hook)=${GROUP_NAME}) [func_periodic_hook]
4. ExecIf($[${GROUP_COUNT(${GROUP_NAME}@periodic-hook)} > 1]?Hangup()) [func_periodic_hook]
5. Set(ChannelToSpy=${URIDECODE(${EncodedChannel})}) [func_periodic_hook]
6. ChanSpy(${ChannelToSpy},qEB) [func_periodic_hook]
[ Context 'parkedcalls' created by 'res_parking/default' ]
'700' => 1. Park() [res_parking]
'701' => 1. ParkedCall(default,701) [res_parking/default]
'702' => 1. ParkedCall(default,702) [res_parking/default]
'703' => 1. ParkedCall(default,703) [res_parking/default]
'704' => 1. ParkedCall(default,704) [res_parking/default]
'705' => 1. ParkedCall(default,705) [res_parking/default]
'706' => 1. ParkedCall(default,706) [res_parking/default]
'707' => 1. ParkedCall(default,707) [res_parking/default]
'708' => 1. ParkedCall(default,708) [res_parking/default]
'709' => 1. ParkedCall(default,709) [res_parking/default]
'710' => 1. ParkedCall(default,710) [res_parking/default]
'711' => 1. ParkedCall(default,711) [res_parking/default]
'712' => 1. ParkedCall(default,712) [res_parking/default]
'713' => 1. ParkedCall(default,713) [res_parking/default]
'714' => 1. ParkedCall(default,714) [res_parking/default]
'715' => 1. ParkedCall(default,715) [res_parking/default]
'716' => 1. ParkedCall(default,716) [res_parking/default]
'717' => 1. ParkedCall(default,717) [res_parking/default]
'718' => 1. ParkedCall(default,718) [res_parking/default]
'719' => 1. ParkedCall(default,719) [res_parking/default]
'720' => 1. ParkedCall(default,720) [res_parking/default]
[ Context 'ani' created by 'pbx_config' ]
'_X.' => 40000. NoOp(ANI: ${EXTEN}) [pbx_config]
40001. Wait(0.25) [pbx_config]
40002. Answer() [pbx_config]
40003. Playback(vm-from) [pbx_config]
40004. SayDigits(${CALLERID(ani)}) [pbx_config]
40005. Wait(1.25) [pbx_config]
40006. SayDigits(${CALLERID(ani)}) [pbx_config]
40007. Return() [pbx_config]
[ Context 'time' created by 'pbx_config' ]
'_X.' => 30000. NoOp(Time: ${EXTEN} ${timezone}) [pbx_config]
30001. Wait(0.25) [pbx_config]
30002. Answer() [pbx_config]
30003. Set(FUTURETIME=$[${EPOCH} + 12]) [pbx_config]
30004. SayUnixTime(${FUTURETIME},Zulu,HNS) [pbx_config]
30005. SayPhonetic(z) [pbx_config]
30006. SayUnixTime(${FUTURETIME},${timezone},HNS) [pbx_config]
30007. Playback(spy-local) [pbx_config]
30008. WaitUntil(${FUTURETIME}) [pbx_config]
30009. Playback(beep) [pbx_config]
30010. Return() [pbx_config]
[ Context 'default' created by 'pbx_config' ]
Include => 'demo' [pbx_config]
[ Context 'public' created by 'pbx_config' ]
Include => 'demo' [pbx_config]
[ Context 'page' created by 'pbx_config' ]
'_X.' => 1. Macro(page,SIP/${EXTEN}) [pbx_config]
[ Context 'demo' created by 'pbx_config' ]
'#' => 1. Playback(demo-thanks) [pbx_config]
2. Hangup() [pbx_config]
'1000' => 1. Goto(default,s,1) [pbx_config]
'1234' => 1. Playback(transfer,skip) [pbx_config]
2. Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)})) [pbx_config]
3. Goto(default,s,1) [pbx_config]
'1235' => 1. Voicemail(1234,u) [pbx_config]
'1236' => 1. Dial(Console/dsp) [pbx_config]
2. Voicemail(1234,b) [pbx_config]
'2' => 1. BackGround(demo-moreinfo) [pbx_config]
2. Goto(s,instruct) [pbx_config]
'3' => 1. Set(CHANNEL(language)=fr) [pbx_config]
2. Goto(s,restart) [pbx_config]
'500' => 1. Playback(demo-abouttotry) [pbx_config]
2. Dial(IAX2/guest@pbx.digium.com/s@default) [pbx_config]
3. Playback(demo-nogo) [pbx_config]
4. Goto(s,6) [pbx_config]
'600' => 1. Playback(demo-echotest) [pbx_config]
2. Echo() [pbx_config]
3. Playback(demo-echodone) [pbx_config]
4. Goto(s,6) [pbx_config]
'76245' => 1. Macro(page,SIP/Grandstream1) [pbx_config]
'7999' => 1. Set(TIMEOUT(absolute)=60) [pbx_config]
2. Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d) [pbx_config]
'8500' => 1. VoicemailMain() [pbx_config]
2. Goto(s,6) [pbx_config]
'i' => 1. Playback(invalid) [pbx_config]
's' => 1. Wait(1) [pbx_config]
2. Answer() [pbx_config]
3. Set(TIMEOUT(digit)=5) [pbx_config]
4. Set(TIMEOUT(response)=10) [pbx_config]
[restart] 5. BackGround(demo-congrats) [pbx_config]
[instruct] 6. BackGround(demo-instruct) [pbx_config]
7. WaitExten() [pbx_config]
't' => 1. Goto(#,1) [pbx_config]
'_7XXX' => 1. Macro(page,SIP/${EXTEN}) [pbx_config]
Include => 'stdexten' [pbx_config]
[ Context 'macro-page' created by 'pbx_config' ]
's' => 1. ChanIsAvail(${ARG1},s) [pbx_config]
2. GoToIf($[${AVAILSTATUS} = "1"]?autoanswer:fail) [pbx_config]
[autoanswer] 3. Set(_ALERT_INFO="RA") [pbx_config]
4. SIPAddHeader(Call-Info: Answer-After=0) [pbx_config]
5. NoOp() [pbx_config]
6. Dial(${ARG1}) [pbx_config]
[fail] 7. Hangup() [pbx_config]
[ Context 'stdPrivacyexten' created by 'pbx_config' ]
'a' => 1. VoicemailMain(${mbx}) [pbx_config]
2. Return() [pbx_config]
'stdexten-BUSY' => 1. Voicemail(${mbx},b) [pbx_config]
2. NoOp(Finish stdPrivacyexten BUSY) [pbx_config]
3. Return() [pbx_config]
'stdexten-DONTCALL' => 1. Goto(${dontcntx},s,1) [pbx_config]
'stdexten-NOANSWER' => 1. Voicemail(${mbx},u) [pbx_config]
2. NoOp(Finish stdPrivacyexten NOANSWER) [pbx_config]
3. Return() [pbx_config]
'stdexten-TORTURE' => 1. Goto(${tortcntx},s,1) [pbx_config]
'_stde[x]te[n]-.' => 1. Goto(stdexten-NOANSWER,1) [pbx_config]
'_X.' => 60000. NoOp(Start stdPrivacyexten) [pbx_config]
60001. Set(LOCAL(ext)=${ARG1}) [pbx_config]
60002. Set(LOCAL(dev)=${ARG2}) [pbx_config]
60003. Set(LOCAL(dontcntx)=${ARG3}) [pbx_config]
60004. Set(LOCAL(tortcntx)=${ARG4}) [pbx_config]
60005. Set(LOCAL(cntx)=${ARG5}) [pbx_config]
60006. Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""]) [pbx_config]
60007. Dial(${dev},20,p) [pbx_config]
60008. Goto(stdexten-${DIALSTATUS},1) [pbx_config]
[ Context 'stdexten' created by 'pbx_config' ]
'a' => 1. VoicemailMain(${mbx}) [pbx_config]
2. Return() [pbx_config]
'stdexten-BUSY' => 1. Voicemail(${mbx},b) [pbx_config]
2. Return() [pbx_config]
'stdexten-NOANSWER' => 1. Voicemail(${mbx},u) [pbx_config]
2. Return() [pbx_config]
'_stde[x]te[n]-.' => 1. Goto(stdexten-NOANSWER,1) [pbx_config]
'_X.' => 50000. NoOp(Start stdexten) [pbx_config]
50001. Set(LOCAL(ext)=${EXTEN}) [pbx_config]
50002. Set(LOCAL(dev)=${ARG1}) [pbx_config]
50003. Set(LOCAL(cntx)=${ARG2}) [pbx_config]
50004. Set(LOCAL(mbx)=${ext}${IF($[!${ISNULL(${cntx})}]?@${cntx})}) [pbx_config]
50005. Dial(${dev},20) [pbx_config]
50006. Goto(stdexten-${DIALSTATUS},1) [pbx_config]
[ Context 'macro-trunkdial' created by 'pbx_config' ]
's' => 1. Dial(${ARG1}) [pbx_config]
2. Goto(s-${DIALSTATUS},1) [pbx_config]
's-BUSY' => 1. Hangup() [pbx_config]
's-NOANSWER' => 1. Hangup() [pbx_config]
'_s-.' => 1. NoOp() [pbx_config]
[ Context 'outbound-freenum2' created by 'pbx_config' ]
'fn-BUSY' => 1. Busy() [pbx_config]
'_f[n]-.' => 1. NoOp(ISN: ${DIALSTATUS}) [pbx_config]
2. Congestion() [pbx_config]
'_X!' => 1. Verbose(2,Performing ISN lookup for ${EXTEN}) [pbx_config]
2. Set(SUFFIX=${CUT(EXTEN,*,2-)}) [pbx_config]
3. GotoIf($["${FILTER(0-9,${SUFFIX})}" != "${SUFFIX}"]?fn-CONGESTION,1) [pbx_config]
4. Set(TIMEOUT(absolute)=10800) [pbx_config]
5. Set(isnresult=${ENUMLOOKUP(${EXTEN},sip,,1,freenum.org)}) [pbx_config]
6. GotoIf($["${isnresult}" != ""]?from) [pbx_config]
7. Set(DIALSTATUS=CONGESTION) [pbx_config]
8. Goto(fn-CONGESTION,1) [pbx_config]
[from] 9. Set(__SIPFROMUSER=${CALLERID(num)}) [pbx_config]
10. GotoIf($["${GLOBAL(FREENUMDOMAIN)}" = ""]?dial) [pbx_config]
11. Set(__SIPFROMDOMAIN=${GLOBAL(FREENUMDOMAIN)}) [pbx_config]
[dial] 12. Dial(SIP/${isnresult},40) [pbx_config]
13. Goto(fn-${DIALSTATUS},1) [pbx_config]
[ Context 'outbound-freenum' created by 'pbx_config' ]
'_X*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
'_XX*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
'_XXX*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
'_XXXX*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
'_XXXXX*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
'_XXXXXX*X!' => 1. Goto(outbound-freenum2,${EXTEN},1) [pbx_config]
[ Context 'local' created by 'pbx_config' ]
Include => 'default' [pbx_config]
Include => 'trunklocal' [pbx_config]
Include => 'iaxtel700' [pbx_config]
Include => 'trunktollfree' [pbx_config]
Include => 'iaxprovider' [pbx_config]
Include => 'parkedcalls' [pbx_config]
Ignore pattern => '9' [pbx_config]
[ Context 'longdistance' created by 'pbx_config' ]
Include => 'local' [pbx_config]
Include => 'trunkld' [pbx_config]
Ignore pattern => '9' [pbx_config]
[ Context 'international' created by 'pbx_config' ]
Include => 'longdistance' [pbx_config]
Include => 'trunkint' [pbx_config]
Ignore pattern => '9' [pbx_config]
[ Context 'trunktollfree' created by 'pbx_config' ]
'_91800NXXXXXX' => 1. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
'_91866NXXXXXX' => 1. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
'_91877NXXXXXX' => 1. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
'_91888NXXXXXX' => 1. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
[ Context 'trunklocal' created by 'pbx_config' ]
'_9NXXXXXX' => 1. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
[ Context 'trunkld' created by 'pbx_config' ]
'_91NXXNXXXXXX' => 1. Macro(dundi-e164,${EXTEN:1}) [pbx_config]
2. Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) [pbx_config]
[ Context 'trunkint' created by 'pbx_config' ]
'_9011.' => 1. Macro(dundi-e164,${EXTEN:4}) [pbx_config]
2. Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})}) [pbx_config]
[ Context 'iaxprovider' created by 'pbx_config' ]
[ Context 'iaxtel700' created by 'pbx_config' ]
'_91700XXXXXXX' => 1. Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel) [pbx_config]
[ Context 'macro-dundi-e164' created by 'pbx_config' ]
's' => 1. Goto(${ARG1},1) [pbx_config]
Include => 'dundi-e164-lookup' [pbx_config]
[ Context 'dundi-e164-lookup' created by 'pbx_config' ]
Include => 'dundi-e164-local' [pbx_config]
Include => 'dundi-e164-switch' [pbx_config]
[ Context 'dundi-e164-switch' created by 'pbx_config' ]
Alt. Switch => 'DUNDi/e164' [pbx_config]
[ Context 'dundi-e164-local' created by 'pbx_config' ]
Include => 'dundi-e164-canonical' [pbx_config]
Include => 'dundi-e164-customers' [pbx_config]
Include => 'dundi-e164-via-pstn' [pbx_config]
[ Context 'dundi-e164-via-pstn' created by 'pbx_config' ]
[ Context 'dundi-e164-customers' created by 'pbx_config' ]
[ Context 'dundi-e164-canonical' created by 'pbx_config' ]
-= 77 extensions (164 priorities) in 30 contexts. =-
konsole verbose output
vml000177*CLI> core set verbose 5
Console verbose was OFF and is now 5.
echotest
vml000177*CLI> -- Accepting AUTHENTICATED call from 10.0.10.122:50548: -- > requested format = gsm, -- > requested prefs = (), -- > actual format = gsm, -- > host prefs = (gsm|ilbc|speex|g729|g723), -- > priority = mine -- Executing [600@default:1] Playback("IAX2/33-15362", "demo-echotest") in new stack -- <IAX2/33-15362> Playing 'demo-echotest.gsm' (language 'de') -- Executing [600@default:2] Echo("IAX2/33-15362", "") in new stack -- Executing [600@default:3] Playback("IAX2/33-15362", "demo-echodone") in new stack -- <IAX2/33-15362> Playing 'demo-echodone.gsm' (language 'de') -- Executing [600@default:4] Goto("IAX2/33-15362", "s,6") in new stack -- Goto (default,s,6) -- Executing [s@default:6] BackGround("IAX2/33-15362", "demo-instruct") in new stack -- <IAX2/33-15362> Playing 'demo-instruct.gsm' (language 'de') -- Executing [2@default:1] BackGround("IAX2/33-15362", "demo-moreinfo") in new stack -- <IAX2/33-15362> Playing 'demo-moreinfo.gsm' (language 'de') == Spawn extension (default, 2, 1) exited non-zero on 'IAX2/33-15362' -- Hungup 'IAX2/33-15362'
demo
vml000177*CLI> -- Accepting AUTHENTICATED call from 10.0.10.122:50548: -- > requested format = gsm, -- > requested prefs = (), -- > actual format = gsm, -- > host prefs = (gsm|ilbc|speex|g729|g723), -- > priority = mine -- Executing [500@default:1] Playback("IAX2/33-9804", "demo-abouttotry") in new stack -- <IAX2/33-9804> Playing 'demo-abouttotry.gsm' (language 'de') -- Executing [500@default:2] Dial("IAX2/33-9804", "IAX2/guest@pbx.digium.com/s@default") in new stack -- Called IAX2/guest@pbx.digium.com/s@default [Jan 18 22:17:14] NOTICE[13560]: chan_iax2.c:4735 __auto_congest: Auto-congesting call due to slow response -- IAX2/216.207.245.8:4569-4356 is circuit-busy -- Hungup 'IAX2/216.207.245.8:4569-4356' == Everyone is busy/congested at this time (1:0/1/0) -- Executing [500@default:3] Playback("IAX2/33-9804", "demo-nogo") in new stack -- <IAX2/33-9804> Playing 'demo-nogo.gsm' (language 'de') -- Hungup 'IAX2/33-9804'
Beispiele
dial
https://wiki.asterisk.org/wiki/display/AST/Asterisk+14+Application_Dial
# vim /etc/asterisk/extensions.conf
; interne Erreichbarkeit der Nebenstellen 11-99 untereinander herstellen exten => _XX,1,NoOp(interner Teilnehmer mit der Rufnummer ${CALLERID(num)} ruft internen (PJ)SIP-Tln. ${EXTEN}) exten => _XX,n,Dial(PJSIP/${EXTEN},55,TtrWw)
# asterisk -vvvvr
-- Accepting AUTHENTICATED call from 88.217.123.90:33439: -- > requested format = gsm, -- > requested prefs = (), -- > actual format = gsm, -- > host prefs = (gsm|ilbc|speex|g729|g723), -- > priority = mine -- Executing [36@default:1] NoOp("IAX2/33-9632", "interner Teilnehmer mit der Rufnummer 33 ruft internen (PJ)SIP-Tln. 36") in new stack -- Executing [36@default:2] Dial("IAX2/33-9632", "PJSIP/36,55,TtrWw") in new stack -- Called PJSIP/36 -- PJSIP/36-0000001b is ringing == Spawn extension (default, 36, 2) exited non-zero on 'IAX2/33-9632' -- Hungup 'IAX2/33-9632'
# vim /etc/asterisk/extensions.conf
; Anwendungspeispiele bei ankommenden Amtsgesprächen ; BEISPIEL 1: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 auf der internen Nst. 36 signalisieren ; exten => 08121883175,1,Verbose(### Anruf von ${CALLERID(num)} im Kontext "telekom_in" ###) exten => 08121883175,n,Dial(PJSIP/36,60) exten => 08121883175,n,Hangup
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-0000001c", "### Anruf von +4917645534406 im Kontext "telekom_in" ###") in new stack ### Anruf von +4917645534406 im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-0000001c", "PJSIP/36,60") in new stack -- Called PJSIP/36 -- PJSIP/36-0000001d is ringing == Spawn extension (telekom_in, 08121883175, 2) exited non-zero on 'PJSIP/883172_in-0000001c'
# vim /etc/asterisk/extensions.conf
; BEISPIEL 2: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 auf der internen Nst. 36 signalisieren und ; bei nicht erreichen der Nebenstelle bzw. bei unbeantwortetem Anruf Weiterleitung zur Voicemail ; exten => 08121883175,1,Verbose(### Anruf von ${CALLERID(num)} im Kontext "telekom_in" ###) exten => 08121883175,n,Dial(PJSIP/36,60) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-0000001e", "### Anruf von +4917645534406 im Kontext "telekom_in" ###") in new stack ### Anruf von +4917645534406 im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-0000001e", "PJSIP/36,60") in new stack -- Called PJSIP/36 -- PJSIP/36-0000001f is ringing -- Nobody picked up in 60000 ms -- Executing [08121883175@telekom_in:3] Wait("PJSIP/883172_in-0000001e", "1") in new stack -- Executing [08121883175@telekom_in:4] VoiceMail("PJSIP/883172_in-0000001e", "36,u") in new stack -- <PJSIP/883172_in-0000001e> Playing 'vm-theperson.alaw' (language 'de') > 0x7f647c01e910 -- Probation passed - setting RTP source address to 217.0.7.6:58666 -- <PJSIP/883172_in-0000001e> Playing 'digits/3.alaw' (language 'de') -- <PJSIP/883172_in-0000001e> Playing 'digits/6.alaw' (language 'de') -- <PJSIP/883172_in-0000001e> Playing 'vm-isunavail.alaw' (language 'de') -- <PJSIP/883172_in-0000001e> Playing 'vm-intro.alaw' (language 'de') -- <PJSIP/883172_in-0000001e> Playing 'beep.alaw' (language 'de') -- Recording the message -- x=0, open writing: /var/spool/asterisk/voicemail/default/36/tmp/QkCtOM format: wav, 0x7f648c00c0d8 -- User ended message by pressing # -- <PJSIP/883172_in-0000001e> Playing 'auth-thankyou.alaw' (language 'de') == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found -- Executing [08121883175@telekom_in:5] Hangup("PJSIP/883172_in-0000001e", "") in new stack == Spawn extension (telekom_in, 08121883175, 5) exited non-zero on 'PJSIP/883172_in-0000001e'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 3: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 auf der internen Nst. 36 signalisieren und ; bei nicht erreichen der Nebenstelle bzw. bei unbeantwortetem Anruf Weiterleitung zum Mobiltelefon ; exten => 08121883175,1,Verbose(### Anruf von ${CALLERID(num)} im Kontext "telekom_in" ###) exten => 08121883175,n,Dial(PJSIP/36,10) exten => 08121883175,n,Wait(1) exten => 08121883175,n,Dial(PJSIP/883176_out/sip:017645534406@tel.t-online.de,20,rWw) exten => 08121883175,n,Hangup ; ---------------------------------------------------------------------------------------------------------------------
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000000", "### Anruf von anonymous im Kontext "telekom_in" ###") in new stack ### Anruf von anonymous im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000000", "PJSIP/36,10") in new stack -- Called PJSIP/36 == Spawn extension (telekom_in, 08121883175, 2) exited non-zero on 'PJSIP/883172_in-00000000' -- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000002", "### Anruf von anonymous im Kontext "telekom_in" ###") in new stack ### Anruf von anonymous im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000002", "PJSIP/36,10") in new stack -- Called PJSIP/36 -- PJSIP/36-00000003 is ringing -- Nobody picked up in 10000 ms -- Executing [08121883175@telekom_in:3] Wait("PJSIP/883172_in-00000002", "1") in new stack -- Executing [08121883175@telekom_in:4] Dial("PJSIP/883172_in-00000002", "PJSIP/883176_out/sip:017645534406@tel.t-online.de,20,rWw") in new stack -- Called PJSIP/883176_out/sip:017645534406@tel.t-online.de -- PJSIP/883176_out-00000004 is making progress passing it to PJSIP/883172_in-00000002 -- PJSIP/883176_out-00000004 is ringing -- PJSIP/883176_out-00000004 answered PJSIP/883172_in-00000002 -- Channel PJSIP/883176_out-00000004 joined 'simple_bridge' basic-bridge <19dd0b6d-7cc4-4e8b-850a-e932484bfd20> -- Channel PJSIP/883172_in-00000002 joined 'simple_bridge' basic-bridge <19dd0b6d-7cc4-4e8b-850a-e932484bfd20> > Bridge 19dd0b6d-7cc4-4e8b-850a-e932484bfd20: switching from simple_bridge technology to native_rtp > Remotely bridged 'PJSIP/883172_in-00000002' and 'PJSIP/883176_out-00000004' - media will flow directly between them > Remotely bridged 'PJSIP/883172_in-00000002' and 'PJSIP/883176_out-00000004' - media will flow directly between them -- Channel PJSIP/883176_out-00000004 left 'native_rtp' basic-bridge <19dd0b6d-7cc4-4e8b-850a-e932484bfd20> -- Channel PJSIP/883172_in-00000002 left 'native_rtp' basic-bridge <19dd0b6d-7cc4-4e8b-850a-e932484bfd20> == Spawn extension (telekom_in, 08121883175, 4) exited non-zero on 'PJSIP/883172_in-00000002'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 4: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 auf der internen Nst. 36 und zeitgleich ; auf dem Mobiltelefon signalisieren. Anschließend bei nicht erreichen der Nebenstelle bzw. bei ; unbeantwortetem Anruf Weiterleitung zur Voicemailbox. Leistungsmerkmal "twinning" ; exten => 08121883175,1,Verbose(### Anruf von ${CALLERID(num)} im Kontext "telekom_in" ###) exten => 08121883175,n,Dial(PJSIP/36&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup ; -----------------------------------------------------------------------------------------------------------------------
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000000", "### Anruf von anonymous im Kontext "telekom_in" ###") in new stack ### Anruf von anonymous im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000000", "PJSIP/36&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw") in new stack -- Called PJSIP/36 -- Called PJSIP/883176_out/sip:017645534406@tel.t-online.de -- PJSIP/36-00000001 connected line has changed. Saving it until answer for PJSIP/883172_in-00000000 -- PJSIP/883176_out-00000002 connected line has changed. Saving it until answer for PJSIP/883172_in-00000000 -- PJSIP/36-00000001 is ringing -- PJSIP/883176_out-00000002 is making progress passing it to PJSIP/883172_in-00000000 -- PJSIP/883176_out-00000002 is ringing -- Nobody picked up in 10000 ms -- Executing [08121883175@telekom_in:3] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:4] VoiceMail("PJSIP/883172_in-00000000", "36,u") in new stack -- <PJSIP/883172_in-00000000> Playing 'vm-theperson.alaw' (language 'de') > 0x7f47f0023ce0 -- Probation passed - setting RTP source address to 217.0.4.196:12838 -- <PJSIP/883172_in-00000000> Playing 'digits/3.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'digits/6.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'vm-isunavail.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'vm-intro.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'beep.alaw' (language 'de') -- Recording the message -- x=0, open writing: /var/spool/asterisk/voicemail/default/36/tmp/ObhJK5 format: wav, 0x7f47f4008488 -- User hung up == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Spawn extension (telekom_in, 08121883175, 4) exited non-zero on 'PJSIP/883172_in-00000000'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 5: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 nur dann auf der internen Nst. 36 ; signalisieren, wenn der Anruf _NICHT_ vom Anschluss +49892165... kommt. Anrufer dieses dieser Anschlusses ; werden zur Abwimmelansage "... dieser Anschluss ist vorübergehend nicht erreichbar ..." weitergeleitet. ; Alle anderen Anrufer werden zur Nst. 36 durchgestellt; bzw. an ie Voicemail weitergeleitet exten => 08121883175/_+49892165.,1,NoOp(Externanrufer-Gruppe ${CALLERID(num)} ist geblacklistet und wird daher auf die Voicemail geleitet!) exten => 08121883175/_+49892165.,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175/_+49892165.,n,wait(1) exten => 08121883175/_+49892165.,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175/_+49892165.,n,wait(1) exten => 08121883175/_+49892165.,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175/_+49892165.,n,wait(1) exten => 08121883175/_+49892165.,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175/_+49892165.,n,wait(1) exten => 08121883175/_+49892165.,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175/_+49892165.,n,Hangup exten => 08121883175,1,NoOp(Externanrufer ${CALLERID(num)} hat _keinen_ Sperreintrag und wird an den Nst. 36 (snom 360)) exten => 08121883175,n,Dial(PJSIP/36,20,rWw) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup ; -----------------------------------------------------------------------------------------------------------------------
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-00000000", "Externanrufer-Gruppe +49892162407 ist geblacklistet und wird daher auf die Voicemail geleitet!") in new stack -- Executing [08121883175@telekom_in:2] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') > 0x7f9e7803f350 -- Probation passed - setting RTP source address to 217.0.4.230:13512 -- Executing [08121883175@telekom_in:3] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:4] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:5] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:6] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:7] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:8] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:9] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:10] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:11] Hangup("PJSIP/883172_in-00000000", "") in new stack == Spawn extension (telekom_in, 08121883175, 11) exited non-zero on 'PJSIP/883172_in-00000000'
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-00000001", "Externanrufer anonymous hat _keinen_ Sperreintrag und wird an den Nst. 36 (snom 360)") in new stack -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000001", "PJSIP/36,20,rWw") in new stack -- Called PJSIP/36 -- PJSIP/36-00000002 is ringing -- Nobody picked up in 20000 ms -- Executing [08121883175@telekom_in:3] Wait("PJSIP/883172_in-00000001", "1") in new stack -- Executing [08121883175@telekom_in:4] VoiceMail("PJSIP/883172_in-00000001", "36,u") in new stack -- <PJSIP/883172_in-00000001> Playing 'vm-theperson.alaw' (language 'de') > 0x7f9e5800abb0 -- Probation passed - setting RTP source address to 217.0.7.70:28670 -- <PJSIP/883172_in-00000001> Playing 'digits/3.alaw' (language 'de') -- <PJSIP/883172_in-00000001> Playing 'digits/6.alaw' (language 'de') -- <PJSIP/883172_in-00000001> Playing 'vm-isunavail.alaw' (language 'de') -- <PJSIP/883172_in-00000001> Playing 'vm-intro.alaw' (language 'de') -- <PJSIP/883172_in-00000001> Playing 'beep.alaw' (language 'de') -- Recording the message -- x=0, open writing: /var/spool/asterisk/voicemail/default/36/tmp/7SpfZs format: wav, 0x7f9e6c3f6508 -- User hung up == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Spawn extension (telekom_in, 08121883175, 4) exited non-zero on 'PJSIP/883172_in-00000001'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 6: ; ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 nur dann auf der internen Nst. 36 ; signalisieren, wenn der Anruf _NICHT_ die Rufnummer +498921652407 überträgt. Dieser Anrufer wird sofort ; an die Voicemail weitergeleitet. Alle anderen Anrufer werden zur Nst. 36 durchgestellt und bei nicht ; erreichen der Nebenstelle bzw. bei unbeantwortetem Anruf rfolgt eine Weiterleitung zur Voicemailbox. ; exten => 08121883175,1,Verbose(### Anruf von ${CALLERID(num)} im Kontext "telekom_in" ###) exten => 08121883175,n,GotoIf($["${CALLERID(num)}" = "+498921652407"]?10:20) exten => 08121883175,10,NoOp(Externanrufer ${CALLERID(num)} ist geblacklistet und wird daher auf die Voicemail geleitet!) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup exten => 08121883175,20,NoOp(Externanrufer ${CALLERID(num)} hat keinen Sperreintrag und wird an Nst. 36 signalisiert!) exten => 08121883175,n,Dial(PJSIP/36,20,rWw) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup ; -----------------------------------------------------------------------------------------------------------------------
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000000", "### Anruf von +498921652407 im Kontext "telekom_in" ###") in new stack ### Anruf von +498921652407 im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] GotoIf("PJSIP/883172_in-00000000", "1?10:20") in new stack -- Goto (telekom_in,08121883175,10) -- Executing [08121883175@telekom_in:10] NoOp("PJSIP/883172_in-00000000", "Externanrufer +498921652407 ist geblacklistet und wird daher auf die Voicemail geleitet!") in new stack -- Executing [08121883175@telekom_in:11] VoiceMail("PJSIP/883172_in-00000000", "36,u") in new stack -- <PJSIP/883172_in-00000000> Playing 'vm-theperson.alaw' (language 'de') > 0x7fd2d0042a80 -- Probation passed - setting RTP source address to 217.0.7.4:10530 -- <PJSIP/883172_in-00000000> Playing 'digits/3.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'digits/6.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'vm-isunavail.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'vm-intro.alaw' (language 'de') -- <PJSIP/883172_in-00000000> Playing 'beep.alaw' (language 'de') -- Recording the message -- x=0, open writing: /var/spool/asterisk/voicemail/default/36/tmp/jAEk5n format: wav, 0x7fd2e0008058 -- User hung up == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Parsing '/var/spool/asterisk/voicemail/default/36/INBOX/msg0000.txt': Found == Spawn extension (telekom_in, 08121883175, 11) exited non-zero on 'PJSIP/883172_in-00000000'
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000001", "### Anruf von anonymous im Kontext "telekom_in" ###") in new stack ### Anruf von anonymous im Kontext telekom_in ### -- Executing [08121883175@telekom_in:2] GotoIf("PJSIP/883172_in-00000001", "0?10:20") in new stack -- Goto (telekom_in,08121883175,20) -- Executing [08121883175@telekom_in:20] NoOp("PJSIP/883172_in-00000001", "Externanrufer anonymous hat keinen Sperreintrag und wird an Nst. 36 signalisiert!") in new stack -- Executing [08121883175@telekom_in:21] Dial("PJSIP/883172_in-00000001", "PJSIP/36,20,rWw") in new stack -- Called PJSIP/36 -- PJSIP/36-00000002 is ringing == Spawn extension (telekom_in, 08121883175, 21) exited non-zero on 'PJSIP/883172_in-00000001'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 7: ; alle ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 werden in der 1st-level Supportgruppe, ; d.h. an den Nebenstellen 33 und 36 signalisiert. Ruf hingegen unser VIP-Kunde mit der Rufnummer 08931408448 ; wird dieser Anrufer sofort zum 2nd-level Support (Nst. 31) durchgestellt bzw. bei nicht erreichen zum ; Mobiltelefon durchgestellt. ; exten => 08121883175/_+498931408448,1,Verbose(### Anruf von VIP-Kunden mit der Rufnummer ${CALLERID(num)} im Kontext "telekom_in". VIP-Behandlung veranlassen! ###) exten => 08121883175/_+498931408448,n,Dial(PJSIP/31&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw) exten => 08121883175/_+498931408448,n,Hangup exten => 08121883175,1,NoOp(Externanrufer mit der Rufnummer ${CALLERID(num)} ist 08/15-Kunde und wird im 1st-level Support abgeworfen.) exten => 08121883175,n,Dial(PJSIP/36&IAX2/33,15) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup ; -----------------------------------------------------------------------------------------------------------------------
-- Executing [08121883175@telekom_in:1] Verbose("PJSIP/883172_in-00000003", "### Anruf von VIP-Kunden mit der Rufnummer +4989216750916 im Kontext "telekom_in". VIP-Behandlung veranlassen! ###") in new stack ### Anruf von VIP-Kunden mit der Rufnummer +4989216750916 im Kontext telekom_in. VIP-Behandlung veranlassen! ### -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000003", "PJSIP/31&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw") in new stack -- Called PJSIP/31 -- Called PJSIP/883176_out/sip:017645534406@tel.t-online.de -- PJSIP/31-00000004 connected line has changed. Saving it until answer for PJSIP/883172_in-00000003 -- PJSIP/883176_out-00000005 connected line has changed. Saving it until answer for PJSIP/883172_in-00000003 -- PJSIP/31-00000004 is ringing -- PJSIP/883176_out-00000005 is making progress passing it to PJSIP/883172_in-00000003 -- PJSIP/883176_out-00000005 is ringing == Spawn extension (telekom_in, 08121883175, 2) exited non-zero on 'PJSIP/883172_in-00000003'
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-00000000", "Externanrufer mit der Rufnummer anonymous ist 08/15-Kunde und wird im 1st-level Support abgeworfen.") in new stack -- Executing [08121883175@telekom_in:2] Dial("PJSIP/883172_in-00000000", "PJSIP/36&IAX2/33,15") in new stack [Jan 30 15:31:12] WARNING[17010][C-00000001]: app_dial.c:2530 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent) -- Called PJSIP/36 -- PJSIP/36-00000001 is ringing == Spawn extension (telekom_in, 08121883175, 2) exited non-zero on 'PJSIP/883172_in-00000000'
# vim /etc/asterisk/extensions.conf
; ----------------------------------------------------------------------------------------------------------------------- ; BEISPIEL 8: ; alle ankommende Anrufe vom Provider Telekom für Rufnummer 08121883175 werden gegen die black- und white- ; listing Datenbank geprüft und gesondert behandelt: ; - Anrufer die keine Nummer übertragen werden "nur" an der int. Nst 36 signalisiert, ohne Weiterleitung ; zum Händie und/oder Voicemail ; - Anrufer mit einem Whitelisting-Eintrag in der AstDB (Asterisk-Datenbank) werden sowohl an der internen ; Nebenstelle 36 wie auch am Händie mit der Rufnummer 0176/45534406 signalisiert. Wird der Anrufer nicht ; binnen 20 Sekunden beantwortet, erhält der Anrufer die Möglichkeit zum Hinterlassen einer Nachricht ; auf der Voicemailbox von der Nst. 36 ; - Anrufer, die einen blacklisting Eintrag haben, werden direkt zur Abwimmelansage der Nst. 36 geleitet ; und anschließend die Verbindung gekappt, ohne dass der Anrufer eine Nachricht hinterlassen kann. ; exten => 08121883175,1,NoOp(Anrufer übertrug die Rufnummer ${CALLERID(num)}) exten => 08121883175,n,Set(access=${DB(36/${CALLERID(num)})}) exten => 08121883175,n,GotoIf($[ "${access}" = "" ]?ohne:testing) exten => 08121883175,n(testing),GotoIf($[ "${access}" = "wl" ]?whitelisted:blacklisted) exten => 08121883175,n(whitelisted),NoOp(der Anrufer ist gewhitelisted, der Anrufer wird zur Nebenstelle 36 und zum Mobiltelefon durchgestellt) exten => 08121883175,n,Dial(PJSIP/36&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw) exten => 08121883175,n,Wait(1) exten => 08121883175,n,VoiceMail(36,u) exten => 08121883175,n,Hangup exten => 08121883175,n(blacklisted),NoOp(der Anrufer ist geblacklisted und wird daher zur "Abwimmel"-Voicemailbox abgeworfen) exten => 08121883175,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175,n,wait(1) exten => 08121883175,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175,n,wait(1) exten => 08121883175,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175,n,wait(1) exten => 08121883175,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175,n,wait(1) exten => 08121883175,n,Playback(/var/spool/asterisk/voicemail/default/31/unerreichbar) exten => 08121883175,n,Hangup exten => 08121883175,n(ohne),NoOp(der Anrufer überträgt keine Nummer, und ist weder geblack- noch gewhitelisted) exten => 08121883175,n,Dial(PJSIP/31,60) exten => 08121883175,n,Hangup ; -----------------------------------------------------------------------------------------------------------------------
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-0000000b", "Anrufer übertrug die Rufnummer +4917645534406") in new stack -- Executing [08121883175@telekom_in:2] Set("PJSIP/883172_in-0000000b", "access=wl") in new stack -- Executing [08121883175@telekom_in:3] GotoIf("PJSIP/883172_in-0000000b", "0?ohne:testing") in new stack -- Goto (telekom_in,08121883175,4) -- Executing [08121883175@telekom_in:4] GotoIf("PJSIP/883172_in-0000000b", "1?whitelisted:blacklisted") in new stack -- Goto (telekom_in,08121883175,5) -- Executing [08121883175@telekom_in:5] NoOp("PJSIP/883172_in-0000000b", "der Anrufer ist gewhitelisted, der Anrufer wird zur Nebenstelle 36 und zum Mobiltelefon durchgestellt") in new stack -- Executing [08121883175@telekom_in:6] Dial("PJSIP/883172_in-0000000b", "PJSIP/36&PJSIP/883176_out/sip:017645534406@tel.t-online.de,10,rWw") in new stack -- Called PJSIP/36 -- Called PJSIP/883176_out/sip:017645534406@tel.t-online.de -- PJSIP/36-0000000c connected line has changed. Saving it until answer for PJSIP/883172_in-0000000b -- PJSIP/883176_out-0000000d connected line has changed. Saving it until answer for PJSIP/883172_in-0000000b -- PJSIP/36-0000000c is ringing -- PJSIP/883176_out-0000000d is making progress passing it to PJSIP/883172_in-0000000b -- PJSIP/883176_out-0000000d is ringing -- PJSIP/883176_out-0000000d answered PJSIP/883172_in-0000000b -- Channel PJSIP/883176_out-0000000d joined 'simple_bridge' basic-bridge <868dad5d-a999-4b8e-babf-88fe30fbf9af> -- Channel PJSIP/883172_in-0000000b joined 'simple_bridge' basic-bridge <868dad5d-a999-4b8e-babf-88fe30fbf9af> > Bridge 868dad5d-a999-4b8e-babf-88fe30fbf9af: switching from simple_bridge technology to native_rtp > Remotely bridged 'PJSIP/883172_in-0000000b' and 'PJSIP/883176_out-0000000d' - media will flow directly between them > Remotely bridged 'PJSIP/883172_in-0000000b' and 'PJSIP/883176_out-0000000d' - media will flow directly between them -- Channel PJSIP/883172_in-0000000b left 'native_rtp' basic-bridge <868dad5d-a999-4b8e-babf-88fe30fbf9af> == Spawn extension (telekom_in, 08121883175, 6) exited non-zero on 'PJSIP/883172_in-0000000b' -- Channel PJSIP/883176_out-0000000d left 'native_rtp' basic-bridge <868dad5d-a999-4b8e-babf-88fe30fbf9af>
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-00000000", "Anrufer übertrug die Rufnummer +4917645502006") in new stack -- Executing [08121883175@telekom_in:2] Set("PJSIP/883172_in-00000000", "access=bl") in new stack -- Executing [08121883175@telekom_in:3] GotoIf("PJSIP/883172_in-00000000", "0?ohne:testing") in new stack -- Goto (telekom_in,08121883175,4) -- Executing [08121883175@telekom_in:4] GotoIf("PJSIP/883172_in-00000000", "0?whitelisted:blacklisted") in new stack -- Goto (telekom_in,08121883175,10) -- Executing [08121883175@telekom_in:10] NoOp("PJSIP/883172_in-00000000", "der Anrufer ist geblacklisted und wird daher zur "Abwimmel"-Voicemailbox abgeworfen") in new stack -- Executing [08121883175@telekom_in:11] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') > 0x7f2f3402ac30 -- Probation passed - setting RTP source address to 217.0.4.68:48282 -- Executing [08121883175@telekom_in:12] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:13] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:14] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:15] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:16] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:17] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:18] Wait("PJSIP/883172_in-00000000", "1") in new stack -- Executing [08121883175@telekom_in:19] Playback("PJSIP/883172_in-00000000", "/var/spool/asterisk/voicemail/default/31/unerreichbar") in new stack -- <PJSIP/883172_in-00000000> Playing '/var/spool/asterisk/voicemail/default/31/unerreichbar.slin' (language 'de') -- Executing [08121883175@telekom_in:20] Hangup("PJSIP/883172_in-00000000", "") in new stack == Spawn extension (telekom_in, 08121883175, 20) exited non-zero on 'PJSIP/883172_in-00000000'
# asterisk -vvvvr
-- Executing [08121883175@telekom_in:1] NoOp("PJSIP/883172_in-00000009", "Anrufer übertrug die Rufnummer anonymous") in new stack -- Executing [08121883175@telekom_in:2] Set("PJSIP/883172_in-00000009", "access=") in new stack -- Executing [08121883175@telekom_in:3] GotoIf("PJSIP/883172_in-00000009", "1?ohne:testing") in new stack -- Goto (telekom_in,08121883175,21) -- Executing [08121883175@telekom_in:21] NoOp("PJSIP/883172_in-00000009", "der Anrufer überträgt keine Nummer, und ist weder geblack- noch gewhitelisted") in new stack -- Executing [08121883175@telekom_in:22] Dial("PJSIP/883172_in-00000009", "PJSIP/31,60") in new stack -- Called PJSIP/31 -- PJSIP/31-0000000a is ringing == Spawn extension (telekom_in, 08121883175, 22) exited non-zero on 'PJSIP/883172_in-00000009'
deutsche Sprachprompts
https://www.asterisksounds.org/de/download
# mkdir /usr/share/asterisk/sounds/de
# de /usr/local/src
# wget https://www.asterisksounds.org/de/download/asterisk-sounds-core-de-sln16.zip # wget https://www.asterisksounds.org/de/download/asterisk-sounds-extra-de-sln16.zip
# unzip /usr/local/src/asterisk-sounds-core-de-sln16.zip -d /usr/share/asterisk/sounds/de/ # unzip /usr/local/src/asterisk-sounds-extra-de-sln16.zip -d /usr/share/asterisk/sounds/de/
# chmod 644 /usr/share/asterisk/sounds/de/* -R
# find /usr/share/asterisk/sounds/de -type d -exec chmod 0755 {} \;
# yum install sox
# vi /usr/local/bin/asterisk-sound-convert
- /usr/local/bin/asterisk-sound-convert
#!/bin/bash cd /usr/share/asterisk/sounds/de for a in $(find . -name '*.sln16'); do sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t gsm -r 8k `echo $a|sed "s/.sln16/.gsm/"`;\ sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e a-law `echo $a|sed "s/.sln16/.alaw/"`;\ sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e mu-law `echo $a|sed "s/.sln16/.ulaw/"`;\ done
# chmod +x /usr/local/bin/asterisk-sound-convert
# asterisk-sound-convert
Music on hold
# yum install madplay -y
Anbindung an das VoIP-Netz der Telekom mit PJSIP
Grundkonfiguration
individuelle Rufnummer bei der abgehenden Wahl setzen
Haben wir von unserem VoIP-Anbieter mehrere Rufnummern bekommen, so werden wir diese in aller regel einzelnen Endgeräten oder Diensten zuordnen wollen. Bei ankommenden Gesprächen haben wir diese Zuordnung über den Abschnitt [telekom_in] vorgenommen. Nun wollen wir aber auch je nach verwendeter internen Nebenstelle unseres Asterisk eine bestimmte Rufnummr CLID1) als Absender nach extern verwenden und auch übertragen. Das was sich bei dem ein oder anderen höchstprofesssionellen Systemintegrator als unlösbare Herausforderunge bei einer VoIP-Anlage mit 3.000 Nebenstellen darstellen kann, gestaltet sich bei unserem Asterisk-Server als triviale Herausforderung.
Für die Zuordnung der internen Rufnummern zu den jeweiligen externen Absenderrufnummern bzw. PJSIP-Kanälen bedienen wir uns der Asterisk-eigenen Datenbank. Diese Datenbank erreichen wir über die Funktion database. Wir können damit z.B. unsere Registrierten Geräte abfragen.
# asterisk -r
vml000177*CLI> database put 33 CLID 9959277_out
Updated database successfully
vml000177*CLI> database put 36 CLID 9959278_out
Updated database successfully
vml000177*CLI> database show
/33/CLID : 9959277_out /36/CLID : 9959278_out
Voicemail
# yum install asterisk-voicemail -y
# chown asterisk:asterisk /var/spool/asterisk/voicemail/ -R
# wget https://forensics.cert.org/cert-forensics-tools-release-el7.rpm # rpm -Uvh cert-forensics-tools-release*rpm
# vim /etc/yum.repos.d/cert-forensics-tools.repo
- /etc/yum.repos.d/cert-forensics-tools.repo
[forensics] name=CERT Forensics Tools Repository baseurl=http://www.cert.org/forensics/repository/centos/cert/$releasever/$basearch enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-cert-forensics-2018-04-07 gpgcheck=1 priority=10 [forensics-test] name=CERT Forensics Tools Test Repository baseurl=http://www.cert.org/forensics/repository/centos/cert-test/$releasever/$basearch enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-cert-forensics-2018-04-07 gpgcheck=1 [forensics-splunk] name=CERT Forensics Tools Repository - Splunk baseurl=http://www.cert.org/forensics/repository/centos/splunk/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-splunk enabled=0 gpgcheck=1 [forensics-sip] name=CERT Forensics Tools Repository - SiLK, IPA, and Postgresql baseurl=http://www.cert.org/forensics/repository/centos/sip/$releasever/$basearch enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-cert-forensics-2018-04-07 gpgcheck=1
# yum install lame -y
Fax
# yum install asterisk-fax
# rpm -qil asterisk-fax
Name : asterisk-fax
Version : 14.2.1
Release : 1.el7.centos
Architecture: x86_64
Install Date: Sun 29 Jan 2017 09:51:54 PM CET
Group : Applications/Internet
Size : 155968
License : GPLv2
Signature : RSA/SHA1, Thu 08 Dec 2016 11:58:07 PM CET, Key ID ccf40e16b9a46fa9
Source RPM : asterisk-14.2.1-1.el7.centos.src.rpm
Build Date : Thu 08 Dec 2016 11:57:54 PM CET
Build Host : olive.ph.tucny.com
Relocations : (not relocatable)
URL : http://www.asterisk.org/
Summary : FAX applications for Asterisk
Description :
FAX applications for Asterisk
/etc/asterisk/res_fax.conf
/usr/lib64/asterisk/modules/res_fax.so
/usr/lib64/asterisk/modules/res_fax_spandsp.so