diff --git a/MySQL_conf_pbx/test1/Dockerfile b/MySQL_conf_pbx/test1/Dockerfile index ecb6468..03df20d 100755 --- a/MySQL_conf_pbx/test1/Dockerfile +++ b/MySQL_conf_pbx/test1/Dockerfile @@ -1,21 +1,13 @@ -FROM andrius/asterisk:edge +FROM mathewfrancisv/odbc_mariadb:v3.0.2 # Add edge/testing repository -# RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ -RUN apk update && \ - apk upgrade && \ - apk add asterisk-odbc && \ - apk add unixodbc && \ - apk add unixodbc-dev && \ - apk add mariadb-connector-odbc && \ - mkdir -p /etc/asterisk/moh - +#RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ +RUN cp -r /usr/share/asterisk/sounds/en /var/lib/asterisk/sounds/ # apk add --no-cache unixodbc unixodbc-dev mariadb-connector-odbc - # Copy custom Asterisk config files #COPY asterisk_config/ /etc/asterisk/ # Start Asterisk in verbose mode -CMD ["asterisk", "-fvvvvv"] \ No newline at end of file +CMD ["asterisk", "-fvvvvv"] diff --git a/MySQL_conf_pbx/test1/conf/asterisk/extconfig.conf b/MySQL_conf_pbx/test1/conf/asterisk/extconfig.conf index bfda3fe..5c7a525 100755 --- a/MySQL_conf_pbx/test1/conf/asterisk/extconfig.conf +++ b/MySQL_conf_pbx/test1/conf/asterisk/extconfig.conf @@ -132,6 +132,8 @@ ps_endpoints => odbc,asterisk,ps_endpoints ps_auths => odbc,asterisk,ps_auths ps_aors => odbc,asterisk,ps_aors extensions => odbc,asterisk,extensions_table +voicemail => odbc,asterisk,voicemail_users + ;moh for music on hold ;moh => odbc,asterisk,moh_classes diff --git a/MySQL_conf_pbx/test1/conf/asterisk/voicemail.conf b/MySQL_conf_pbx/test1/conf/asterisk/voicemail.conf index 70e0db1..54c2929 100755 --- a/MySQL_conf_pbx/test1/conf/asterisk/voicemail.conf +++ b/MySQL_conf_pbx/test1/conf/asterisk/voicemail.conf @@ -25,7 +25,14 @@ ; Formats for writing Voicemail. Note that when using IMAP storage for ; voicemail, only the first format specified will be used. ;format=g723sf|wav49|wav -format=wav49|gsm|wav +format=wav +serveremail=asterisk +attach=yes +delete=no +language=en +mailboxdir=/usr/share/asterisk/voicemail + + ; ; WARNING: ; If you change the list of formats that you record voicemail in diff --git a/MySQL_conf_pbx/test1/docker-compose.yml b/MySQL_conf_pbx/test1/docker-compose.yml index 99a0519..7a72403 100755 --- a/MySQL_conf_pbx/test1/docker-compose.yml +++ b/MySQL_conf_pbx/test1/docker-compose.yml @@ -1,7 +1,7 @@ version: "3.8" services: asterisk: - image: mathewfrancisv/odbc_mariadb:v2.0.1 + image: mathewfrancisv/odbc_mariadb:v4.0.0 container_name: mat_asterisk restart: always tty: true @@ -12,6 +12,11 @@ services: - ./conf/odbcinst.ini:/etc/odbcinst.ini - ./conf/asterisk/:/etc/asterisk/ - ./recordings:/var/spool/asterisk/monitor #for call recording + - ./voicemail_data:/var/spool/asterisk/voicemail + + + + network_mode: "host" mariadb: @@ -28,4 +33,4 @@ services: - ./mariadb_data:/var/lib/mysql # Persistent data network_mode: "host" - # \ No newline at end of file + # diff --git a/MySQL_conf_pbx/test1/dockerfilez/5/Dockerfile b/MySQL_conf_pbx/test1/dockerfilez/5/Dockerfile new file mode 100755 index 0000000..460c37f --- /dev/null +++ b/MySQL_conf_pbx/test1/dockerfilez/5/Dockerfile @@ -0,0 +1,21 @@ +FROM andrius/asterisk:edge + +# Add edge/testing repository +#RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \ +RUN apk update && \ + apk upgrade && \ + apk add asterisk-odbc && \ + apk add unixodbc && \ + apk add unixodbc-dev && \ + apk add mariadb-connector-odbc && \ + apk add asterisk-sounds-en && \ + mkdir -p /etc/asterisk/moh + + # apk add --no-cache unixodbc unixodbc-dev mariadb-connector-odbc + + +# Copy custom Asterisk config files +#COPY asterisk_config/ /etc/asterisk/ + +# Start Asterisk in verbose mode +CMD ["asterisk", "-fvvvvv"] diff --git a/MySQL_conf_pbx/test1/three_users.sql b/MySQL_conf_pbx/test1/three_users.sql index eef6500..c82b0e1 100644 --- a/MySQL_conf_pbx/test1/three_users.sql +++ b/MySQL_conf_pbx/test1/three_users.sql @@ -169,3 +169,4 @@ SELECT * FROM extensions_table WHERE context='default'; SHOW TABLES; +# diff --git a/MySQL_conf_pbx/test1/voicemaiDbSchema.sql b/MySQL_conf_pbx/test1/voicemaiDbSchema.sql new file mode 100644 index 0000000..ce3be1e --- /dev/null +++ b/MySQL_conf_pbx/test1/voicemaiDbSchema.sql @@ -0,0 +1,285 @@ +USE asterisk_db; + +show tables; +CREATE TABLE ps_endpoints ( + id VARCHAR(40) NOT NULL PRIMARY KEY, + transport VARCHAR(40) NULL, + aors VARCHAR(200) NULL UNIQUE, + auth VARCHAR(40) NULL UNIQUE, + context VARCHAR(40) NULL, + disallow VARCHAR(200) NULL, + allow VARCHAR(200) NULL, + direct_media VARCHAR(40) NULL, + connected_line_method VARCHAR(40) NULL, + callerid VARCHAR(40) NULL, + dtmf_mode VARCHAR(40) NULL +); + +CREATE TABLE ps_auths ( + id VARCHAR(40) NOT NULL PRIMARY KEY, + auth_type VARCHAR(40) NOT NULL, + username VARCHAR(40) NULL UNIQUE, + password VARCHAR(40) NULL, + md5_cred VARCHAR(40) NULL, + realm VARCHAR(40) NULL +); + +CREATE TABLE ps_aors ( + id VARCHAR(40) NOT NULL PRIMARY KEY, + max_contacts INTEGER USE asterisk_db; +NULL +); + + +CREATE TABLE extensions_table ( + id INT AUTO_INCREMENT PRIMARY KEY, + context VARCHAR(50) NOT NULL, + exten VARCHAR(50) NOT NULL UNIQUE, + priority INT NOT NULL, + app VARCHAR(50) NOT NULL, + appdata VARCHAR(100) +); + + + +INSERT INTO ps_endpoints (id, transport, aors, auth, context, disallow, allow) +VALUES ('1001', 'transport-udp', '1001', '1001', 'default', 'all', 'ulaw,alaw'); + +INSERT INTO ps_auths (id, auth_type, username, password) +VALUES ('1001', 'userpass', '1001', '12345'); + +INSERT INTO ps_aors (id, max_contacts) +VALUES ('1001', 1); + + +-- Add Endpoint for 1002 +INSERT INTO ps_endpoints (id, transport, aors, auth, context, disallow, allow, direct_media) +VALUES ('1002', 'transport-udp', '1002', '1002', 'default', 'all', 'ulaw,alaw', 'no'); + +-- Add Authentication for 1002 +INSERT INTO ps_auths (id, auth_type, username, password) +VALUES ('1002', 'userpass', '1002', '12345'); + +-- Add AOR (Address of Record) for 1002 +INSERT INTO ps_aors (id, max_contacts) +VALUES ('1002', 2); + +INSERT INTO ps_endpoints (id, transport, aors, auth, context, disallow, allow, direct_media) +VALUES ('1003', 'transport-udp', '1003', '1003', 'default', 'all', 'ulaw,alaw', 'no'); + +-- Add Authentication for 1002 +INSERT INTO ps_auths (id, auth_type, username, password) +VALUES ('1003', 'userpass', '1003', '12345'); + +-- Add AOR (Address of Record) for 1002 +INSERT INTO ps_aors (id, max_contacts) +VALUES ('1003', 2); + + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES +('default', '1001', 1, 'Dial', 'PJSIP/1001,20'), +('default', '1002', 1, 'Dial', 'PJSIP/1002,20'), +('default', '1003', 1, 'Dial', 'PJSIP/1003,20'); + +SELECT * FROM extensions_table; + +-- DROP TABLE `extensions_table`; + +SELECT * FROM extensions_table WHERE context='default'; + + +SHOW TABLES; +select * from ps_endpoints; +select * from ps_auths; +select * from ps_aors; +select * from extensions_table; + + +ALTER TABLE ps_endpoints DROP COLUMN mailboxes; +ALTER TABLE ps_endpoints DROP COLUMN mohsuggest; + +ALTER TABLE ps_endpoints ADD mohsuggest VARCHAR(40); +ALTER TABLE ps_endpoints ADD mailboxes VARCHAR(255); +UPDATE ps_endpoints SET mohsuggest = 'default' WHERE id IN ('1001', '1002', '1003'); + +UPDATE ps_aors SET max_contacts = 1 WHERE id = '1001'; + +show tables; + + + +-- voice mail usertable --- + +CREATE TABLE voicemail_users ( + context VARCHAR(20), -- Which group or environment (usually 'default') + mailbox VARCHAR(20), -- The voicemail box number (usually same as extension) + password VARCHAR(20), -- PIN to access the voicemail + fullname VARCHAR(50), -- User’s name + email VARCHAR(100) -- Where to send the voicemail recording +); + +INSERT INTO voicemail_users (context, mailbox, password, fullname, email) +VALUES + ('default', '1001', '1234', 'User One', 'djangod56@gmail.com'), + ('default', '1002', '1234', 'User Two', 'djangod56@gmail.com'), + ('default', '1003', '1234', 'User Three','djangod56@gmail.com'); + +select * from voicemail_users; + +-- table end -- + + + +INSERT INTO extensions_table (context, exten, priority, app, appdata) VALUES +('default', '1001', 30, 'VoiceMail', '1001@default,u'), +('default', '1001', 40, 'Hangup', ''), +('default', '1002', 30, 'VoiceMail', '1002@default,u'), +('default', '1002', 40, 'Hangup', ''), +('default', '1003', 30, 'VoiceMail', '1003@default,u'), +('default', '1003', 40, 'Hangup', ''); + +select * from extensions_table; + +SHOW INDEXES FROM extensions_table; + +ALTER TABLE extensions_table DROP INDEX exten; + + +ALTER TABLE extensions_table DROP PRIMARY KEY; + +ALTER TABLE extensions_table ADD PRIMARY KEY (context, exten, priority); + +ALTER TABLE extensions_table ADD UNIQUE INDEX unique_exten (context, exten, priority); + +SELECT * FROM extensions_table WHERE exten IN ('1001', '1002', '1003') ORDER BY exten, priority; + + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES ('default', '555', 2, 'Playback', 'vm-theperson'); + +delete from extensions_table where appdata = 'vm-theperson'; +select * from voicemail_users; +select * from extensions_table; + +SHOW TABLES; +SELECT * FROM extensions_table WHERE context = 'default' ORDER BY exten, priority; + +DESCRIBE extensions_table; +SELECT * FROM extensions_table WHERE context = 'default' AND exten = '1003'; + + +SHOW INDEXES FROM extensions_table; + + + + + +UPDATE extensions_table +SET appdata = CONCAT(SUBSTRING_INDEX(appdata, ',', 1), ',su') +WHERE app = 'VoiceMail' AND priority = 2; + + +select * from extensions_table; + +delete from extensions_table where exten ='9999'; + +UPDATE extensions_table +SET appdata = CONCAT(SUBSTRING_INDEX(appdata, '@', 1), '@default,s') +WHERE app = 'VoiceMail'; +SELECT * FROM voicemail_users WHERE mailbox = '1002'; +show tables; +select * from voicemail_users; + + + +-- changes in dialplan --- + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES +('default', '1002', 6, 'GotoIf', '${DIALSTATUS}=BUSY?default,1002,30'), +('default', '1002', 7, 'GotoIf', '${DIALSTATUS}=CHANUNAVAIL?default,1002,30'), +('default', '1002', 8, 'GotoIf', '${DIALSTATUS}=NOANSWER?default,1002,30'); + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES +('default', '1003', 6, 'GotoIf', '${DIALSTATUS}=BUSY?default,1003,30'), +('default', '1003', 7, 'GotoIf', '${DIALSTATUS}=CHANUNAVAIL?default,1003,30'), +('default', '1003', 8, 'GotoIf', '${DIALSTATUS}=NOANSWER?default,1003,30'); + +select * from extensions_table; + + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=BUSY?default,1002,30' +WHERE exten = '1002' AND priority = 6; + + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=CHANUNAVAIL?default,1002,30' +WHERE exten = '1002' AND priority = 7; + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=NOANSWER?default,1002,30' +WHERE exten = '1002' AND priority = 8; + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=BUSY?default,1003,30' +WHERE exten = '1003' AND priority = 6; + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=CHANUNAVAIL?default,1003,30' +WHERE exten = '1003' AND priority = 7; + +UPDATE extensions_table +SET appdata = '${DIALSTATUS}=NOANSWER?default,1003,30' +WHERE exten = '1003' AND priority = 8; + + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES ('default', '1002', 3, 'Goto', 'default,1002,6'); + +INSERT INTO extensions_table (context, exten, priority, app, appdata) +VALUES ('default', '1003', 3, 'Goto', 'default,1003,6'); + + +-- change end --------------- + + +desc extensions_table; +select * from extensions_table; + + +-- id|context|exten|priority|app |appdata | +-- --+-------+-----+--------+-----------+-----------------------------------------+ +-- 1|default|1001 | 2|Dial |PJSIP/1001,20,m(default) | +-- 2|default|1002 | 2|Dial |PJSIP/1002,20,m(default) | +-- 3|default|1003 | 2|Dial |PJSIP/1003,20,m(default) | +-- 4|default|1001 | 1|MixMonitor |1001-${UNIQUEID}.wav,b | +-- 5|default|1002 | 1|MixMonitor |1002-${UNIQUEID}.wav,b | +-- 6|default|1003 | 1|MixMonitor |1003-${UNIQUEID}.wav,b | +-- 8|default|1001 | 3|GotoIf |${DIALSTATUS}=BUSY?default,1002,1 | +-- 9|default|1001 | 4|GotoIf |${DIALSTATUS}=CHANUNAVAIL?default,1002,1 | +-- 10|default|1001 | 5|GotoIf |${DIALSTATUS}=NOANSWER?default,1002,1 | +-- 11|default|1001 | 20|MusicOnHold|default | +-- 12|default|1002 | 20|MusicOnHold|default | +-- 13|default|1003 | 20|MusicOnHold|default | +-- 14|default|1001 | 30|VoiceMail |1001@default,u | +-- 15|default|1001 | 40|Hangup | | +-- 16|default|1002 | 30|VoiceMail |1002@default,u | +-- 17|default|1002 | 40|Hangup | | +-- 18|default|1003 | 30|VoiceMail |1003@default,u | +-- 19|default|1003 | 40|Hangup | | +-- 20|default|1002 | 6|GotoIf |${DIALSTATUS}=BUSY?default,1002,30 | +-- 21|default|1002 | 7|GotoIf |${DIALSTATUS}=CHANUNAVAIL?default,1002,30| +-- 22|default|1002 | 8|GotoIf |${DIALSTATUS}=NOANSWER?default,1002,30 | +-- 23|default|1003 | 6|GotoIf |${DIALSTATUS}=BUSY?default,1003,30 | +-- 24|default|1003 | 7|GotoIf |${DIALSTATUS}=CHANUNAVAIL?default,1003,30| +-- 25|default|1003 | 8|GotoIf |${DIALSTATUS}=NOANSWER?default,1003,30 | +-- 26|default|1002 | 3|Goto |default,1002,6 | +-- 27|default|1003 | 3|Goto |default,1003,6 | + + + + +