argument('trunk_name')) ){ $trunk_name = $this->ask('Enter the trunk name'); }else{ $trunk_name = $this->argument('trunk_name'); } if(empty($this->argument('caller_id')) ){ $caller_id = $this->ask('Enter the caller id (DID)'); }else{ $caller_id = $this->argument('caller_id'); } if(empty($this->argument('sip_server')) ){ $sip_server = $this->ask('Enter the sip server (Trunk vpn IP)'); }else{ $sip_server = $this->argument('sip_server'); } // if(empty($this->argument('sip_server_port')) ){ $sip_server_port = "5060"; // }else{ // $sip_server_port = ""; // } // if(empty($this->argument('context')) ){ $context = "from-pstn"; // }else{ // $context = ""; // } $this->insertTrunk($trunk_name,$caller_id,$sip_server,$sip_server_port,$context); return 0; } private function insertTrunk($trunk_name,$caller_id,$sip_server,$sip_server_port,$context){ try { // As trunks id is not auto incremental column, we have to get the last id and increment it by 1 $last_id = @DB::table('asterisk.trunks')->orderBy('trunkid', 'desc')->first()->trunkid; if(is_null($last_id)){ $last_id = 0; } $last_id++; $trunk_id = $last_id; // Insert the trunk first then return the id to use it with pjsip_data_array $trunk_array = [ 'trunkid' => $trunk_id, 'tech' => 'pjsip', 'channelid' => $trunk_name, 'name' => $trunk_name, 'outcid' => $caller_id, 'keepcid' => 'off', 'maxchans' => '', 'failscript' => '', 'dialoutprefix' => '', 'usercontext' => '', 'provider' => '', 'disabled' => 'off', 'continue' => 'off', 'routedisplay' => 'on', ]; // Insert the trunk and get the id DB::table('asterisk.trunks')->insert($trunk_array); $this->info($trunk_id); $pjsip_data_array = [ [ 'id' => $trunk_id, 'keyword' => 'allow_unauthenticated_options', 'data' => 'off', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'aor_contact', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'aors', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'auth_rejection_permanent', 'data' => 'off', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'auth_username', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'authentication', 'data' => 'off', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'client_uri', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'codecs', 'data' => 'ulaw,alaw,gsm,g726,g722,h264,mpeg4', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'contact_user', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'context', 'data' => $context, 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'dialopts', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'dialoutopts_cb', 'data' => 'sys', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'direct_media', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'disabletrunk', 'data' => 'off', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'dtmfmode', 'data' => 'auto', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'expiration', 'data' => '3600', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'extdisplay', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'failtrunk_enable', 'data' => '0', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'fatal_retry_interval', 'data' => '30', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'fax_detect', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'forbidden_retry_interval', 'data' => '30', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'force_rport', 'data' => 'yes', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'from_domain', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'from_user', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'hcid', 'data' => 'on', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'identify_by', 'data' => 'default', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'inband_progress', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'language', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'match', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'max_retries', 'data' => '10000', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'maxchans', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'media_address', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'media_encryption', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'message_context', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'npanxx', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'outbound_proxy', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'peerdetails', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'pjsip_line', 'data' => 'true', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'qualify_frequency', 'data' => '60', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'register', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'registration', 'data' => 'none', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'retry_interval', 'data' => '60', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'rewrite_contact', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'rtp_symmetric', 'data' => 'yes', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'secret', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'send_connected_line', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sendrpid', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'server_uri', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sip_server', 'data' => $sip_server, 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sip_server_port', 'data' => $sip_server_port, 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'support_path', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sv_channelid', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sv_trunk_name', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'sv_usercontext', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 't38_udptl', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 't38_udptl_ec', 'data' => 'none', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 't38_udptl_maxdatagram', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 't38_udptl_nat', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'transport', 'data' => '0.0.0.0-udp', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'trunk_name', 'data' => $trunk_name, 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'trust_id_outbound', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'trust_rpid', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'user_eq_phone', 'data' => 'no', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'userconfig', 'data' => '', 'flags' => 0 ], [ 'id' => $trunk_id, 'keyword' => 'username', 'data' => '', 'flags' => 0 ] ]; DB::table('asterisk.pjsip')->insert($pjsip_data_array); } catch (\Throwable $th) { $this->error($th->getMessage()); } } }