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