#!/bin/bash # Script para crear extensiones e IVR en FreePBX 17 (post-instalación) # Empresas: Horux360 (100), Consultoria-AS (200), Nexus (300) DB_USER="${DB_USER:-asteriskuser}" DB_PASS="${DB_PASS:-AsteriskDB2026!}" echo "Creando extensiones PJSIP..." # Extension 100 - Horux360 mysql -u "$DB_USER" -p"$DB_PASS" asterisk -e " DELETE FROM devices WHERE id='100'; DELETE FROM users WHERE extension='100'; DELETE FROM sip WHERE id='100'; INSERT INTO devices (id, tech, dial, devicetype, user, description, emergency_cid) VALUES ('100', 'pjsip', 'PJSIP/100', 'fixed', '100', 'Horux360 - Admin', ''); INSERT INTO users (extension, password, name, voicemail, ringtimer, recording, outboundcid, sipname, mohclass) VALUES ('100', 'Pass100!', 'Horux360 - Admin', 'default', 20, 'dontcare', '', '', 'default'); INSERT INTO sip (id, keyword, data, flags) VALUES ('100', 'account', '100', 0), ('100', 'accountcode', '', 0), ('100', 'allow', 'ulaw,alaw,g722,opus', 0), ('100', 'avpf', 'no', 0), ('100', 'callerid', 'Horux360 Admin <100>', 0), ('100', 'context', 'from-internal', 0), ('100', 'device_state_busy_at', '0', 0), ('100', 'direct_media', 'no', 0), ('100', 'disallow', '', 0), ('100', 'dtlsenable', 'no', 0), ('100', 'dtmfmode', 'rfc4733', 0), ('100', 'email', '', 0), ('100', 'emergency_cid', '', 0), ('100', 'encryption', 'no', 0), ('100', 'force_rport', 'yes', 0), ('100', 'icesupport', 'no', 0), ('100', 'mailboxes', '100@device', 0), ('100', 'match', '', 0), ('100', 'max_contacts', '1', 0), ('100', 'media_encryption', 'no', 0), ('100', 'media_use_received_transport', 'no', 0), ('100', 'message_context', '', 0), ('100', 'namedcallgroup', '', 0), ('100', 'namedpickupgroup', '', 0), ('100', 'outbound_proxy', '', 0), ('100', 'qualifyfreq', '60', 0), ('100', 'record_in', 'Always', 0), ('100', 'record_out', 'Always', 0), ('100', 'rtp_symmetric', 'yes', 0), ('100', 'secret', 'Horux100!', 0), ('100', 'send_connected_line', 'yes', 0), ('100', 'send_rpid', 'no', 0), ('100', 'sipdriver', 'chan_pjsip', 0), ('100', 'transport', '0.0.0.0-udp', 0), ('100', 'trust_rpid', 'no', 0), ('100', 'type', 'friend', 0), ('100', 'vmexten', '*97', 0); " # Extension 200 - Consultoria AS mysql -u "$DB_USER" -p"$DB_PASS" asterisk -e " DELETE FROM devices WHERE id='200'; DELETE FROM users WHERE extension='200'; DELETE FROM sip WHERE id='200'; INSERT INTO devices (id, tech, dial, devicetype, user, description, emergency_cid) VALUES ('200', 'pjsip', 'PJSIP/200', 'fixed', '200', 'Consultoria AS - Admin', ''); INSERT INTO users (extension, password, name, voicemail, ringtimer, recording, outboundcid, sipname, mohclass) VALUES ('200', 'Pass200!', 'Consultoria AS - Admin', 'default', 20, 'dontcare', '', '', 'default'); INSERT INTO sip (id, keyword, data, flags) VALUES ('200', 'account', '200', 0), ('200', 'accountcode', '', 0), ('200', 'allow', 'ulaw,alaw,g722,opus', 0), ('200', 'avpf', 'no', 0), ('200', 'callerid', 'Consultoria AS Admin <200>', 0), ('200', 'context', 'from-internal', 0), ('200', 'device_state_busy_at', '0', 0), ('200', 'direct_media', 'no', 0), ('200', 'disallow', '', 0), ('200', 'dtlsenable', 'no', 0), ('200', 'dtmfmode', 'rfc4733', 0), ('200', 'email', '', 0), ('200', 'emergency_cid', '', 0), ('200', 'encryption', 'no', 0), ('200', 'force_rport', 'yes', 0), ('200', 'icesupport', 'no', 0), ('200', 'mailboxes', '200@device', 0), ('200', 'match', '', 0), ('200', 'max_contacts', '1', 0), ('200', 'media_encryption', 'no', 0), ('200', 'media_use_received_transport', 'no', 0), ('200', 'message_context', '', 0), ('200', 'namedcallgroup', '', 0), ('200', 'namedpickupgroup', '', 0), ('200', 'outbound_proxy', '', 0), ('200', 'qualifyfreq', '60', 0), ('200', 'record_in', 'Always', 0), ('200', 'record_out', 'Always', 0), ('200', 'rtp_symmetric', 'yes', 0), ('200', 'secret', 'Consult200!', 0), ('200', 'send_connected_line', 'yes', 0), ('200', 'send_rpid', 'no', 0), ('200', 'sipdriver', 'chan_pjsip', 0), ('200', 'transport', '0.0.0.0-udp', 0), ('200', 'trust_rpid', 'no', 0), ('200', 'type', 'friend', 0), ('200', 'vmexten', '*97', 0); " # Extension 300 - Nexus mysql -u "$DB_USER" -p"$DB_PASS" asterisk -e " DELETE FROM devices WHERE id='300'; DELETE FROM users WHERE extension='300'; DELETE FROM sip WHERE id='300'; INSERT INTO devices (id, tech, dial, devicetype, user, description, emergency_cid) VALUES ('300', 'pjsip', 'PJSIP/300', 'fixed', '300', 'Nexus - Admin', ''); INSERT INTO users (extension, password, name, voicemail, ringtimer, recording, outboundcid, sipname, mohclass) VALUES ('300', 'Pass300!', 'Nexus - Admin', 'default', 20, 'dontcare', '', '', 'default'); INSERT INTO sip (id, keyword, data, flags) VALUES ('300', 'account', '300', 0), ('300', 'accountcode', '', 0), ('300', 'allow', 'ulaw,alaw,g722,opus', 0), ('300', 'avpf', 'no', 0), ('300', 'callerid', 'Nexus Admin <300>', 0), ('300', 'context', 'from-internal', 0), ('300', 'device_state_busy_at', '0', 0), ('300', 'direct_media', 'no', 0), ('300', 'disallow', '', 0), ('300', 'dtlsenable', 'no', 0), ('300', 'dtmfmode', 'rfc4733', 0), ('300', 'email', '', 0), ('300', 'emergency_cid', '', 0), ('300', 'encryption', 'no', 0), ('300', 'force_rport', 'yes', 0), ('300', 'icesupport', 'no', 0), ('300', 'mailboxes', '300@device', 0), ('300', 'match', '', 0), ('300', 'max_contacts', '1', 0), ('300', 'media_encryption', 'no', 0), ('300', 'media_use_received_transport', 'no', 0), ('300', 'message_context', '', 0), ('300', 'namedcallgroup', '', 0), ('300', 'namedpickupgroup', '', 0), ('300', 'outbound_proxy', '', 0), ('300', 'qualifyfreq', '60', 0), ('300', 'record_in', 'Always', 0), ('300', 'record_out', 'Always', 0), ('300', 'rtp_symmetric', 'yes', 0), ('300', 'secret', 'Nexus300!', 0), ('300', 'send_connected_line', 'yes', 0), ('300', 'send_rpid', 'no', 0), ('300', 'sipdriver', 'chan_pjsip', 0), ('300', 'transport', '0.0.0.0-udp', 0), ('300', 'trust_rpid', 'no', 0), ('300', 'type', 'friend', 0), ('300', 'vmexten', '*97', 0); " echo "Creando IVR principal..." mysql -u "$DB_USER" -p"$DB_PASS" asterisk -e " DELETE FROM ivr_entries WHERE ivr_id=1; DELETE FROM ivr_details WHERE id=1; INSERT INTO ivr_details (id, name, description, announcement, directdial, invalid_loops, invalid_retry_recording, invalid_destination, timeout_enabled, invalid_recording, retvm, timeout_time, timeout_recording, timeout_retry_recording, timeout_destination, timeout_loops, timeout_append_announce, invalid_append_announce, timeout_ivr_ret, invalid_ivr_ret, alertinfo, rvolume, strict_dial_timeout, accept_pound_key) VALUES (1, 'MenuPrincipal', 'IVR Principal - 3 Empresas', NULL, 'disabled', '3', 'default', 'app-blackhole,hangup,1', NULL, 'default', '0', 10, 'default', 'default', 'app-blackhole,hangup,1', '3', 1, 1, 0, 0, '', '', 2, 0); INSERT INTO ivr_entries (ivr_id, selection, dest, ivr_ret) VALUES (1, '1', 'from-did-direct,100,1', 0), (1, '2', 'from-did-direct,200,1', 0), (1, '3', 'from-did-direct,300,1', 0); " echo "Recargando FreePBX..." fwconsole reload echo "Extensiones e IVR creadas correctamente."