initial release
This commit is contained in:
commit
2abc5f570c
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
recordings/
|
||||||
|
recordings-csv/
|
16
Dockerfile
Normal file
16
Dockerfile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
FROM alpine:3.8
|
||||||
|
|
||||||
|
RUN apk -U add asterisk
|
||||||
|
|
||||||
|
COPY config/asterisk.conf /etc/asterisk/
|
||||||
|
COPY config/cdr_custom.conf /etc/asterisk/
|
||||||
|
COPY config/cdr.conf /etc/asterisk/
|
||||||
|
COPY config/extensions.conf /etc/asterisk/
|
||||||
|
COPY config/logger.conf /etc/asterisk/
|
||||||
|
COPY config/modules.conf /etc/asterisk/
|
||||||
|
COPY config/rtp.conf /etc/asterisk/
|
||||||
|
COPY start.sh /usr/local/bin/start.sh
|
||||||
|
|
||||||
|
VOLUME /recordings
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/sh", "/usr/local/bin/start.sh"]
|
4
config/asterisk.conf
Normal file
4
config/asterisk.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[options]
|
||||||
|
verbose = 2
|
||||||
|
; debug = 5
|
||||||
|
;defaultlanguage = es
|
7
config/cdr.conf
Normal file
7
config/cdr.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[general]
|
||||||
|
enable=yes
|
||||||
|
|
||||||
|
[custom]
|
||||||
|
; We log the unique ID as it can be useful for troubleshooting any issues
|
||||||
|
; that arise.
|
||||||
|
loguniqueid=yes
|
2
config/cdr_custom.conf
Normal file
2
config/cdr_custom.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[mappings]
|
||||||
|
recordings.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})},${CDR(sequence)}
|
3
config/extensions.conf
Normal file
3
config/extensions.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[incoming-calls]
|
||||||
|
; see here for the options: https://github.com/asterisk/asterisk/blob/master/apps/app_record.c
|
||||||
|
exten=>s,1,Record(/recordings/${STRFTIME(${EPOCH},,%Y-%m)}/${STRFTIME(${EPOCH},,%d)}/${UNIQUEID}.wav,60,0,qkux)
|
9
config/logger.conf
Normal file
9
config/logger.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[general]
|
||||||
|
|
||||||
|
[logfiles]
|
||||||
|
|
||||||
|
console = debug,verbose,notice,warning,error
|
||||||
|
|
||||||
|
;messages = notice,warning,error
|
||||||
|
;full = verbose,notice,warning,error,debug
|
||||||
|
;security = security
|
97
config/modules.conf
Normal file
97
config/modules.conf
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
[modules]
|
||||||
|
autoload = no
|
||||||
|
|
||||||
|
load = app_record.so
|
||||||
|
load = app_verbose.so
|
||||||
|
load = cdr_custom.so
|
||||||
|
load = chan_pjsip.so
|
||||||
|
|
||||||
|
; Codecs
|
||||||
|
|
||||||
|
load = codec_gsm.so
|
||||||
|
load = codec_resample.so
|
||||||
|
load = codec_ulaw.so
|
||||||
|
load = codec_alaw.so
|
||||||
|
load = codec_g722.so
|
||||||
|
load = codec_adpcm.so
|
||||||
|
load = codec_g726.so
|
||||||
|
|
||||||
|
; Formats
|
||||||
|
|
||||||
|
|
||||||
|
load = format_g719.so
|
||||||
|
load = format_g723.so
|
||||||
|
load = format_h263.so
|
||||||
|
load = format_g729.so
|
||||||
|
load = format_g726.so
|
||||||
|
load = format_h264.so
|
||||||
|
load = format_gsm.so
|
||||||
|
load = format_pcm.so
|
||||||
|
load = format_wav_gsm.so
|
||||||
|
load = format_wav.so
|
||||||
|
|
||||||
|
; Functions
|
||||||
|
|
||||||
|
load = func_callerid.so
|
||||||
|
load = func_cdr.so
|
||||||
|
load = func_pjsip_endpoint.so
|
||||||
|
load = func_sorcery.so
|
||||||
|
load = func_devstate.so
|
||||||
|
load = func_strings.so
|
||||||
|
load = func_env.so
|
||||||
|
|
||||||
|
load = pbx_config.so
|
||||||
|
|
||||||
|
; Resources
|
||||||
|
|
||||||
|
load = res_pjproject.so
|
||||||
|
load = res_pjsip_acl.so
|
||||||
|
load = res_pjsip_authenticator_digest.so
|
||||||
|
load = res_pjsip_caller_id.so
|
||||||
|
load = res_pjsip_dialog_info_body_generator.so
|
||||||
|
load = res_pjsip_diversion.so
|
||||||
|
load = res_pjsip_dtmf_info.so
|
||||||
|
load = res_pjsip_endpoint_identifier_anonymous.so
|
||||||
|
load = res_pjsip_endpoint_identifier_ip.so
|
||||||
|
load = res_pjsip_endpoint_identifier_user.so
|
||||||
|
load = res_pjsip_exten_state.so
|
||||||
|
load = res_pjsip_header_funcs.so
|
||||||
|
load = res_pjsip_logger.so
|
||||||
|
load = res_pjsip_messaging.so
|
||||||
|
load = res_pjsip_mwi_body_generator.so
|
||||||
|
load = res_pjsip_mwi.so
|
||||||
|
load = res_pjsip_nat.so
|
||||||
|
load = res_pjsip_notify.so
|
||||||
|
load = res_pjsip_one_touch_record_info.so
|
||||||
|
load = res_pjsip_outbound_authenticator_digest.so
|
||||||
|
load = res_pjsip_outbound_publish.so
|
||||||
|
load = res_pjsip_outbound_registration.so
|
||||||
|
load = res_pjsip_path.so
|
||||||
|
load = res_pjsip_pidf_body_generator.so
|
||||||
|
load = res_pjsip_pidf_digium_body_supplement.so
|
||||||
|
load = res_pjsip_pidf_eyebeam_body_supplement.so
|
||||||
|
load = res_pjsip_publish_asterisk.so
|
||||||
|
load = res_pjsip_pubsub.so
|
||||||
|
load = res_pjsip_refer.so
|
||||||
|
load = res_pjsip_registrar.so
|
||||||
|
load = res_pjsip_rfc3326.so
|
||||||
|
load = res_pjsip_sdp_rtp.so
|
||||||
|
load = res_pjsip_send_to_voicemail.so
|
||||||
|
load = res_pjsip_session.so
|
||||||
|
load = res_pjsip.so
|
||||||
|
load = res_pjsip_t38.so
|
||||||
|
load = res_pjsip_transport_websocket.so
|
||||||
|
load = res_pjsip_xpidf_body_generator.so
|
||||||
|
load = res_rtp_asterisk.so
|
||||||
|
load = res_sorcery_astdb.so
|
||||||
|
load = res_sorcery_config.so
|
||||||
|
load = res_sorcery_memory.so
|
||||||
|
load = res_sorcery_realtime.so
|
||||||
|
load = res_timing_timerfd.so
|
||||||
|
|
||||||
|
|
||||||
|
; Don't load res_hep.so and kin unless you are using hep monitoring in your network
|
||||||
|
|
||||||
|
noload = res_hep.so
|
||||||
|
noload = res_hep_pjsip.so
|
||||||
|
noload = res_hep_rtcp.so
|
49
config/pjsip.conf.template
Normal file
49
config/pjsip.conf.template
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
[mytransport]
|
||||||
|
type=transport
|
||||||
|
protocol=udp
|
||||||
|
bind=0.0.0.0
|
||||||
|
; localnet=172.17.0.0/16
|
||||||
|
external_media_address=192.168.2.142
|
||||||
|
external_signaling_address=192.168.2.142
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=registration
|
||||||
|
transport=mytransport
|
||||||
|
outbound_auth=mytrunk
|
||||||
|
server_uri=sip:192.168.2.1:5060
|
||||||
|
client_uri=sip:internotest@192.168.2.1:5060
|
||||||
|
; contact_user = incoming-calls
|
||||||
|
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=auth
|
||||||
|
auth_type=userpass
|
||||||
|
password=mio4reil
|
||||||
|
username=internotest
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=aor
|
||||||
|
contact=sip:192.168.2.1:5060
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=endpoint
|
||||||
|
context=incoming-calls
|
||||||
|
; disallow=all
|
||||||
|
; allow=ulaw
|
||||||
|
; allow=all
|
||||||
|
disallow=all
|
||||||
|
allow=speex,g726,g722,ilbc,gsm,alaw
|
||||||
|
|
||||||
|
outbound_auth=mytrunk
|
||||||
|
aors=mytrunk
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=identify
|
||||||
|
endpoint=mytrunk
|
||||||
|
match=192.168.2.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
9
config/rtp.conf
Normal file
9
config/rtp.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[general]
|
||||||
|
;
|
||||||
|
; RTP start and RTP end configure start and end addresses
|
||||||
|
;
|
||||||
|
; Defaults are rtpstart=5000 and rtpend=31000
|
||||||
|
;
|
||||||
|
rtpstart=15000
|
||||||
|
rtpend=15100
|
||||||
|
|
48
start.sh
Normal file
48
start.sh
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
SIP_SERVER=${SIP_SERVER:-127.0.0.1}
|
||||||
|
SIP_USER=${SIP_USER:-user}
|
||||||
|
SIP_PASS=${SIP_PASS:-user}
|
||||||
|
EXTERNAL_IP=${EXTERNAL_IP:-127.0.0.1}
|
||||||
|
|
||||||
|
cat >/etc/asterisk/pjsip.conf <<EOF
|
||||||
|
[mytransport]
|
||||||
|
type=transport
|
||||||
|
protocol=udp
|
||||||
|
bind=0.0.0.0
|
||||||
|
; localnet=172.17.0.0/16
|
||||||
|
external_media_address=${EXTERNAL_IP}
|
||||||
|
external_signaling_address=${EXTERNAL_IP}
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=registration
|
||||||
|
transport=mytransport
|
||||||
|
outbound_auth=mytrunk
|
||||||
|
server_uri=sip:${SIP_SERVER}:5060
|
||||||
|
client_uri=sip:${SIP_USER}@${SIP_SERVER}:5060
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=auth
|
||||||
|
auth_type=userpass
|
||||||
|
password=${SIP_PASS}
|
||||||
|
username=${SIP_USER}
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=aor
|
||||||
|
contact=sip:${SIP_SERVER}:5060
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=endpoint
|
||||||
|
context=incoming-calls
|
||||||
|
disallow=all
|
||||||
|
allow=speex,g726,g722,ilbc,gsm,alaw
|
||||||
|
outbound_auth=mytrunk
|
||||||
|
aors=mytrunk
|
||||||
|
|
||||||
|
[mytrunk]
|
||||||
|
type=identify
|
||||||
|
endpoint=mytrunk
|
||||||
|
match=${SIP_SERVER}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
/usr/sbin/asterisk -cv
|
Loading…
Reference in New Issue
Block a user