Monday, October 2, 2023

QLC+ Information

Custom Fixture location Windows

 C:\Users\USERNAME\QLC+\Fixtures


Start QLC with web controller: 

add --web to the target name.


Default port for the web client is 9999


USE QLC to activate DMX based on clock time of day

Set a clock timer in QLC+ that, at a given time, triggers a sequence which lasts X amount of time.

EXAMPLE:
At 8:30AM power up the DMX lights, then leave them powered up for 5 hours, at which time, they will turn off.

You can do this with QLC+ (free) some junk laptop (windows/mac) and likely a $25 USB/DMX adapter.

You can set QLC to launch/run automatically minimized. Assuming computer is on the network, you can use a phone/tablet/computer to remotely turn the lights off/on or other DMX type functions.

1 - Add a DMX fixture in QLC


2 - Create a sequence

3 - Create a clock sequence


4- start the app
5 - Modify the startup of QLC to run this all automatically.
Save the above work.  I've called it "testsequence"

Modify the target and add --open FILENAME.qxw

Set it for MINIMIZED if you want to hide QLC as much as possible.


Give it a try!




Thursday, September 7, 2023

Chauvet Vivid 4 Information

 This is some info on the vivid 4 wall panels.  

Panel files

Right from Chauvet site

Or local files

Upgrading "rcfgx" Configuration files using Novastar app

Launch it



User -. Advanced Synchronous system user login

password "ADMIN"

Goto "screen configuration"

Select "NEXT" (assuming you have a com port selected for your wall)

Select receiver, then select your file and update.  Dont forget to click save at the bottom when the process is done.


=================================

Had another situation where one of my screens went into factory reset.  The light on the back of the panel was solid yellow, vs a red/greed blink that it normally does

Went into NovaCTL, logged in as admin under the "USER" menu, then you type ADMIN again and a hidden menu shows up.

For ME, I had to upload the following file:  Once i uploaded it, screen was working.     

17\A5s_MCU_Data_V1.0.3.4 OnboardFlash speed 1.5M





Thursday, May 11, 2023

Controlling OBS using PowerPoint

Controlling OBS using PowerPoint with VBA code

This is a document in progress, mostly for me to remember how I did this, I'll update as I go.

This document explains how I make PowerPoint control OBS scenes.  It goes with this video

So in our church, we use PowerPoint, as slides are advanced for the service, to send commands to OBS to move the cameras (PTZoptics) and change the different scenes in OBS to reflect the scene we want.

In our building, we use 2 different computers, one for PowerPoint, one for OBS.

1> The first part was to install OBSwebsocket plugin into the OBS computer.  Pretty straight forward install, activate it and setup a password. 


WebSocket allows OBS to listen on port 4444 for commands from other devices.

2> Install OBSwebsocket plugin onto the PowerPoint computer.  This basically allows the .exe component of obswebsocket to be present to send remote commands via .bat files 

3> Create a PowerPoint document, create a VBA macro and paste the following code into it.  Here's a googledrive link to the basic code VBA script

4> Create .BAT files on the powerpoint computer with syntax similar to the following:

OBSCommand.exe /server=OBSipADDRESS:4444 /password="YOURpassWORD" /scene="SCENEnameEXACT Spelling"

Save this file something like 001.bat.   You can test this right now by running the .bat, you should see OBS change to the secene in you have selected.

5> In your PowerPoint Document put in the first line of the presenter notes the following:

cmd-001-000

6> Start your presentation, then activate the macro.  

7> Go to that slide, you should see the slide change

Now add more .bat files with different scene.  For example 002.bat

In your PowerPoint you can put 2 commands per slide

cmd-001-002

When you run this above command, OBS should goto the scene in your 001.bat file, then about 2 seconds later, goto the scene in 002.bat file.


;tl;dr at the bottom.

OBSwebsocket plugin running on OBS and on the PowerPoint computer 

PowerPoint with this VBA script

Create a PowerPoint and put in the presenter notes this:  cmd-000-000

Replace the 000 with names of for matching .bat files in the path.

Tuesday, February 14, 2023

Import SPOUT and capture it in OBS

SPOUT is an output mechanism that some programs use to output video.  I think its (mostly) used by DJ world that generate video backgrounds. I dunno, thats where I've encountered it.

I use Synesthesia.live to generate background for an LED wall.  I run them through OBS to use it as a scaler and to allow me to intermix video elements generated through OBS to my video wall.

Synesthesia can output its generated backgrounds as a "SPOUT" feed, and with the proper plugin, OBS can import it.  Its really similar to NDI.

In Synesthesia, I activated the SPOUT server.



In OBS i installed a plugin for this location.

Backup location for the file exe

I installed that

Then created a Scene, and in that scene added an Source "Spout2Capture"



Selected the Synesthesia SPOUT feed (that was configured in the Synesthesia "Live Source" example above

Click OK and voila!




Friday, February 10, 2023

MSWINSCK.OCX problems

First, make sure that file is in windows\syswow64

Then open a CMD prompt as administrator and enter in

regsvr32 \windows\syswow64\mswinck.ocx


That should take care of it.



The error 0x8002801c occurs when there’s a problem accessing the OLE (Object Linking and Embedding) registry. Insufficient system permissions will trigger this error code when the registration of an OCX (OLE control extension) file fails to complete. This is known to happen frequently when using regsvr32 via Command Prompt on Windows 7.

It’s a common occurrence to see this error code when trying to register an OCX file from C:\ Windows\ system 32. Most of the time, the call to the DLLRegisterServer fails because of a permission problem and has nothing to do with the actual OCX component that you are trying to register.

Fortunately, the error 0x8002801c can be avoided by copying the OCX file to C:\ Windows\ SysWOW64 and repeating the operation with administrator privileges. If you’re currently dealing with this issue, follow the step by step guide below to eliminate the error 0x8002801c and successfully register your OCX File.

Fixing Error 0x8002801c after OCX File Registration fail

  1. Open File Explorer and navigate to your Windows partition. Next, go to Windows > Windows 32 and use the search bar to look for the OCX file.
    Note: In this case, the file name is MSCOMCT2.OCX, but you can replicate this procedure any OCX component that fails to register.
  2. Copy the OCX file to your clipboard. Next, go back to the Windows folder and open up the folder named sysWOW64. Then, simply paste the OCX file there.
  3. Open the Start menu (bottom-left corner) and type “cmd“. Then, right-click on Command Prompt and click on Run as Administrator.
  4. In the Elevated Command prompt, type regsvr32 + the OCX component. In our case, the final command would be “regsvr32 MSCOMCT2.OCX”. Upon hitting enter, you will be prompted with a message telling you the file was successfully registered.

That’s it. You can use these four steps to grant proper permissions to any OCX file that is causing the 0x8002801c error code. Most of the time it will allow you to register the ActiveX component and eliminate the issue.


Tuesday, February 7, 2023

Sony SRG-x120 VISCA pinout

 Here's a link to the PDF this comes from:






Some general Asterisk dialpaln code

Save a Voice recording into a MySQL database

Here is an example of an Asterisk dialplan that asks for a voice recording and then saves it into a MySQL database:

[macro-record-and-save]

exten => s,1,Answer()
exten => s,2,Record(recording:/tmp/recording)
exten => s,3,System(mysql -u [username] -p[password] -h [host] [database] -e "INSERT INTO recordings (filename) VALUES ('/tmp/recording')")
exten => s,4,Hangup()

Replace the square bracket placeholders with the values for your setup
MySQL username, password, host, and database name. 



Example IVR dialplan for Asterisk:

[ivr]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Playback(welcome-to-our-company)
exten => s,4,Wait(1)
exten => s,5,Background(press-1-for-sales)
exten => s,6,Background(press-2-for-support)
exten => s,7,Background(press-3-for-billing)
exten => s,8,Background(or-stay-on-the-line)
exten => s,9,WaitExten(10)

exten => 1,1,Goto(sales,s,1)
exten => 2,1,Goto(support,s,1)
exten => 3,1,Goto(billing,s,1)

[sales]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Playback(sales-department)
exten => s,4,Wait(1)
exten => s,5,Background(sales-representative)
exten => s,6,WaitExten(10)

[support]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Playback(support-department)
exten => s,4,Wait(1)
exten => s,5,Background(support-representative)
exten => s,6,WaitExten(10)

[billing]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Playback(billing-department)
exten => s,4,Wait(1)
exten => s,5,Background(billing-representative)
exten => s,6,WaitExten(10)

When a call comes in, they here a welcome message followed by options to press 1 for sales, 2 for support, or 3 for billing.

If the caller presses 1, they are transferred to the sales extension.
If the caller presses 2, they are transferred to the support extension.
If the caller presses 3, they are transferred to the billing extension.
If the caller does not press a key, they stay on the line for 10 seconds before being disconnected.

Each department extension plays a message indicating which department the caller has been transferred to and then waits for 10 seconds for a representative to answer.


Dialplan that asks a user for their passcode and performs a MySQL lookup to compare it:

[passcode-lookup]
exten => s,1,Answer()
exten => s,2,Background(enter-passcode)
exten => s,3,WaitExten(10)
exten => s,4,GotoIf($[${LEN(${EXTEN})} = 4]?check)
exten => s,5,Background(invalid-passcode)
exten => s,6,Goto(s,2)

; check the passcode against the database
exten => s,n(check),Set(DB_RESULT=${MYSQL(SELECT id FROM passcodes WHERE passcode='${EXTEN}')})
exten => s,n,GotoIf($[${DB_RESULT} = 0]?incorrect)
exten => s,n,Background(passcode-accepted)
exten => s,n,Hangup()

; play "incorrect passcode" and go back to the beginning
exten => s,n(incorrect),Background(incorrect-passcode)
exten => s,n,Goto(s,2)

The Answer command answers the caller.
The Background command plays a message asking the caller to enter their 4 digit passcode. The WaitExten command waits for 10 seconds for the caller to enter a 4-digit passcode.

The GotoIf command is used to check the length of the entered passcode. If the length of the entered passcode is not 4 digits, the dialplan will play "invalid passcode" prompt and go back to the beginning.

The Set command is used to perform a MySQL lookup to compare the entered passcode against the passcodes in the database. The MYSQL function returns the id of the passcode if it is found in the database, and 0 if it is not found.

The GotoIf command is used to check the result of the MySQL lookup. If the result is 0, the dialplan plays an "incorrect passcode" message and goes back to the beginning. If the passcode is found in the database, the dialplan plays a "passcode accepted" message and hangs up the call.

Note: This dialplan assumes that you have a MySQL database set up with a table named passcodes containing a column named id and a column named passcode. You will need to modify the MySQL query to match the structure of your database.

Sunday, February 5, 2023

Setting up Sony SRG X120 X400 cameras with RM-IP controllers

This is a kind of high-level setup of X120 cameras.  

Essentially:

Cameras will need to be accessible from the IP network as the controller.  You can  HTTP to each camera's ip address and lock in an IP address.

Then use the IP controller app SONY PTZ SRG-X120 - Google Drive called "RM-IP" 

Make sure that you have the cameras setup into group and with unique names.  The group number coincides with the RM-IP10 controller.

On the controller itself there are two rows of DIP switches.  Bottom row, #8, you set to on to allow writing.  Power cycle the controller, the lights on the controller will blink continuously.

Go to the RMIP app, and you should be able to select the controller (assuming all on same network).
under "CAMERA TABLE" what I do is select the spots that I want to occupy a camera, then use "AUTO ASSIGN" then assign the IP range(s) of the cameras I want.

Apply it, and then once you have done that.  Flip the switch 8 on the controller back to normal position and power cycle it.  Should be good to go.

Sunday, January 22, 2023

Multiple rtsp on Sony SRG-X120

Here's how you get multiple RTSP streams working on a SRG-X120 camera

By Default, 1 RTSP stream is configured.  All you have to do to make it work is go to your device that you want to get the video and create a rtsp connection like this:

rtsp://IP_of_CAM/video1  rtsp://IP_of_CAM/video2 and rtsp://IP_of_CAM/video3

You have to activate video2 and video3.

Go to SETTINGS -> VIDEO -> VIDEO CODEC


You'll see "Image 1" is configured, but by default, "Image 2" and "Image 3" are not.

In the drop box, select "H.264" and then you can adjust the other settings if you want. 
Default might be enough.

Click on "OK"

Here's an example in OBS connecting to the second RTSP stream using a "MEDIA Source

put in the URL (same url for VMIX)

rtsp://IP_of_CAM/video2  /video2 or /video3

Remove "INPUT FORMAT" entry.



Click on "OK" 

Couple of seconds later you should see video!

SRT setup on a Sony SRG-X120 SRG-X400

 Here's a bit of info on how to setup a SRT config on an SRG-X120 camera.

First, you'll need version 3.0 of the firmware

You can go to Sony's page to get the firmware and instructions how to update

1> First, to get SRT activated, go to  Settings-> Audio-> SEND = Enabled -> OK



2> Then you go into your camera, go to SETTINGS - STREAMING




3> In Streaming mode, pick if you are a Caller or a Listener


Caller = You are going to have the camera connect to an IP and send the video
Listener = External device is going to connect to the camera IP to receive the video. 

SRT-LISTENER MODE AND SRT-CALLER MODE

#############    SRT-LISTENER MODE   ######################
I find "LISTENER" mode more robust.  If there's a network hiccup, OBS will attempt to automatically reconnect to the camera stream.

1> On the SRG-X120 interface go to SETTINGS - STREAMING

2> select Streaming Mode "SRT-LISTENER

In our example, we are leaving everything default, we are just giving it port 4201 for our example


3> Click on "OK" at the bottom

This example uses OBS as the video switcher that is going to reach out to the camera and get the feed.  So the OBS instance will be using "CALLER MODE" to match the camera's "LISTENER" mode.

4> In OBS we are going to create a scene called SRT Caller
then we are going to select a "MEDIA SOURCE"


5> Inside MEDIA SOURCE we'll UNCHECK "Local File"

7> in the "INPUT" box we'll put in the following syntax

srt://SRT_Source_IP:PORT?mode=caller&latency=5000

The SRG X120 camera's IP is 192.168.0.14, so that is the IP we put in the OBS system.  We'll define the port, we are using 4201 in this example.  So the Syntax will look like:

srt://192.168.0.14:4201?mode=caller&latency=5000



8> Click on "OK"

You should now see the source video automatically appear


One thing to note:  I've noticed that sometimes the video won't appear right away, this might be from just doing some different configs, but something to try is bouncing the SRG-X120 streaming mode "OFF" then "ON" again.



Make sure that you select "OK" at the bottom of the selection window to activate the different selection modes.


###########              SRT-CALLER MODE            ###########
Caller mode does not support an automatic retry if the destination (OBS) becomes unavailable.

In this example, we'll have the camera SEND the video to a device, in our example, OBS

1> We'll select SRT-Caller
2> in "DESTINATION" entry box we'll put in the following syntax

    srt://Destination_IP:PORT

In the case of the example, the OBS computer receiving the video is 192.168.0.5 and it will listen on port 4501

srt://192.168.0.5:4501


For simplicity in our example, we'll leave all the other values as default and 

3> press OK at the bottom

4> In OBS, we'll create a new scene called called "SRT LISTENER

and inside sources we'll create a Media Source 


5> Inside MEDIA SOURCE UNCHECK "Local File"

6> Uncheck "Restart playback when source becomes active"

7> in "INPUT" we'll put in the following syntax

srt://LocalOBS_IP:PORT?mode=listener&latency=5000

In this example, OBS is running on a computer with the ip of 192.168.0.5, so that is the IP we put in the OBS system.  We'll define the port, we are using 4501 in this example. 
The Syntax will look like:

srt://192.168.0.5:4501?mode=listener&latency=5000



8> Select OK

10> Now go back to your SRG-X120 camera GUI

9> Click on LIVE at the top

then down a bit in STREAMING 

10> click on "STREAM NOW".  You should see the destination IP and port.



10> You will be asked to confirm that you want to stream


In the SRG-X120 screen you will see (assuming everything was configured correctly) the screen give a red outline to indicate its streaming:


And if you go to OBS (or whatever system you are receiving the video) it should show up

Saturday, January 21, 2023

Sony SRG-X120 Firmware upgrade

Settings - Initialize -

Select the firmware you want to apply om tje 
Version Up section



You'll get prompted the transfer is happening.


Within 2 minutes (usually less) you will see this message:

If your camera is stuck in the "transferring" dialog window shown above, after 5 minutes, in my experience its safe to power cycle the camera and try again.


After about 10 minutes the light goes from blinking red to blinking green, then steady green, then 2 steady green lights.  After about 2 minutes the camera should be accessible again.

Factory HTML Password

Username: admin 

Password: Admin_1234

Tuesday, January 10, 2023

Hantec 1008C scope

Software can be found here SETUP

Hantek 1008C PC Scope

Setting Up an AudioCodes MP118 FXS with Asterisk using Web Interface

This doc was copy/pasted from another site, I dont remember.  I saved it incase the source disappeared.  

This is a quick and dirty configuration process for Asterisk setup and AudioCodes MP-118 Gateway SIP/Analog FXS.
> Reset
1) Disconnect network cable (mandatory !)
2) Press the reset button for more than 6 sec.
3) Wait until the Fail light is off and then reconnect network cable.
> Configure
4) Connect to web interface
Default ip
IP Address: 10.1.10.10
Subnet: 255.255.0.0
Gateway 0.0.0.0
Account: Admin
Password: Admin
5) Change ip address/GateWay/DNS: in the panel, click the Configuration button on the upper left, and then VoIP -> Network -> IP Settings
6) Save the config: In the upper click on Device Action -> Reset -> Click on button Reset
7) Reconnect to the web interface, and VoIP -> Coders and Profiles -> Coders: here you can define codecs to use in order of priority.
(Att: Silence suppression: Disabled, Packetization Time: 20)
8) We can now configure the AudioCodes MP-118 to detect your Asterisk Server. VoIP -> SIP Definitions-> Proxy & Registration. Here set Use Default Proxy to Yes and Enable Registration to Enable.
9) Here there is a button for Proxy Set Table, click, and to open a new window where you can set the asterisk ip address, and Transport Type UDP, and Enable Proxy Keep Alive using Options.
10) VoIP -> SIP Definitions-> Proxy & Registration.
Registrar Name:
Registrar Ip Address:
Registrar Transport Type: UDP
Registrar Name:
Gateway Name:
Gateway Ip Address:
Subscription Mode: Per EndPoint
Cnonce: asterisk
Registration Mode: Per Endpoint
11) VoIP->GW and IP to IP->Analog Gateway->Authentication. Here you can configure your Extensions (1->8) and password.
12) VoIP->GW and IP to IP->Hunt Group->EndPoint Phone Number
Channels: 1 – Phone Nr: <ext number for FXS1> – Hunt Group ID: – Tel Profile ID: 0
Channels: 2 – Phone Nr: <ext number for FXS2> – Hunt Group ID: – Tel Profile ID: 0
…….
13) Incoming call – GW & and IP to Ip -> Hunt Group -> Hunt Group Settings -> Channel Select Mode: By Dest Phone Number
14) Save Config (see 6)
Att: To configure you must use only Explorer & Firefox. I’ve found that Safari does not work correctly !
..last but not least…. to use fax with T.38….
Voip->Media->Fax/Modem/CID Settings
– Fax Transport Mode: T.38 Relay
– Fax CNG Mode: Sends on CNG or v8-cn
– CNG Detector Mode: Relay
– Fax Relay ECM Enable: Enable
– Fax Relay Max Rate: 14400bps
SIP Definitions->General Parameters
– Enable Early Media: Enable
– Session Expires Method: re-INVITE
– Fax Signaling Method: T.38 Relay
…and if you prefer without T.38…..
Voip->Media->Fax/Modem/CID Settings
– Fax Transport Mode: ByPass
– Fax/Modem Bypass Coder Type: g771 alaw
– CNG Detector Mode: Disable
SIP Definitions->General Parameters
– Fax Signaling Method: No Fax
Linkografia

ISSABEL PBX GUI Customization

Just some reference stuff I used to customize the Issabel PBX GUI software circa 2018

 Here's the changes to customize Issabel after install
what is geoip
=============================================================================
Update Main Login Page webpage title name (the one at the top) (confirmed)
sed -i -r 's/<title>Issabel -/<title>COMPANYNAME -/' /var/www/html/themes/tenant/_common/login.tpl
=============================================================================
Service name (dashboard service names) (confirmed)  $arrSERVICES["Dialer"]["name_service"]     = "Issabel Call Center Service";
sed -i -r 's/Issabel Call Center Service/Contact Center Service/' /var/www/html/modules/dashboard/applets/ProcessesStatus/index.php
=============================================================================
Main browser's text name (confirmed)         <title>Issabel</title>
sed -i -r 's/<title>Issabel</<title>COMPANYNAME</' /var/www/html/themes/tenant/_common/index.tpl
=============================================================================
Change Agent Console title (confirmed)         'WELCOME_AGENT'         =>  _tr('Welcome to Agent Console'),
sed -i -r 's/Welcome to Agent Console/COMPANYNAME Agent Console/' /var/www/html/modules/agent_console/index.php
================================================================================
Change title in agent desktop from "END SESSION" to "End Calls and Logout" (confirmed)         'BTN_FINALIZAR_LOGIN'           =>  _tr('End session'),
sed -i -r 's/End session/End Calls and Logout/' /var/www/html/modules/agent_console/index.php
===================================================================================
Change "Take Break" to "Go NotReady"  (confirmed)             
exists in multiple spots
change button name only    'BTN_BREAK'                     =>  _tr('Take Break'),
'break_commit'              =>  _tr('Take Break'),
sed -i -r 's/Take Break/Make Not Ready/' /var/www/html/modules/agent_console/index.php
====================================================================================
Change Vtiger CRM (confirmed)          'BTN_VTIGERCRM'                 =>  file_exists('/var/www/html/vtigercrm') ? _tr('VTiger CRM') : NULL,
sed -i -r 's/VTiger CRM/Ticket CRM/' /var/www/html/modules/agent_console/index.php
==================================================================================================
Portal "username title and password"  (confirmed)  placeholder="Username"   &   placeholder="Password"
sed -i -r 's/Password/GUI Password/' /var/www/html/themes/tenant/_common/login.tpl
sed -i -r 's/Username/GUI Username/' /var/www/html/themes/tenant/_common/login.tpl
=====================================================================================
modules/sec_advanced_settings/index.php  (CONFIRMED)
sed -i -r 's/ IssabelPBX/ PBX/' /var/www/html/modules/sec_advanced_settings/index.php
===========================================================================================================
change the name of the popupbox title info  (confirmed)      $smarty->assign('ABOUT_ISSABEL_CONTENT', _tr('About Issabel Content'));
sed -i -r 's/Change Issabel /Change Contact Center /' /var/www/html/modules/_issabelutils/index.php
sed -i -r 's/About Issabel Content/About Contact Center/' /var/www/html/modules/_issabelutils/index.php
=========================================================================
Change password title (confirmed)          "CHANGE_PASSWORD"           =>  _tr("Change Issabel Password"),
sed -i -r 's/Change Issabel Password/Change Contact Center Password/' /var/www/html/themes/tenant/themesetup.php
================================================================================================
Exists in mutliple locations (confirmed)
set "End Break" to "Make Ready"
            'BTN_BREAK'                     =>  _tr('End Break'),
sed -i -r 's/End Break/Make Ready/' /var/www/html/modules/agent_console/index.php
========================================================================
Exists in 3 places.  (CONFIRMED)
sed -i -r 's/Dismiss/Cancel/' /var/www/html/modules/agent_console/index.php
=====================================================================================
Change title (confirmed)
sed -i -r 's/Issabel - /Contact Center - /' /var/www/html/admin/views/issabel_advice.php
============================================================
Change "No active call" to "Ready for call"
exists in mutliple locations (confirmed)      'TEXTO_ESTADO_AGENTE_INICIAL'   =>  _tr('No active call'),
sed -i -r 's/No active call/Ready for call/' /var/www/html/modules/agent_console/index.php
===========================================================================
Change "On break" to "Not ready"
Exists in multiple locations (confirmed)               'TEXTO_ESTADO_AGENTE_INICIAL'   =>  _tr('On break').': '.$estado['pauseinfo']['pausename'],
sed -i -r 's/On break/Not ready/' /var/www/html/modules/agent_console/index.php
=========================================================================
Change title for make busy codes (Confirmed)
'TITLE_BREAK_DIALOG'            =>  _tr('Select break type'),
sed -i -r 's/Select break type/Not Ready Reason/' /var/www/html/modules/agent_console/index.php
============================
confirmed 
This adds a space above the entry "CAMPAIGN" in the INFORMAITON window

sed -i -r 's/<tbody>/<tbody><br>/' /var/www/html/modules/agent_console/themes/default/agent_console_atributos.tpl
##################################################
===========================================

CONFIRMED  (data pulled form the CSV file uploaded is displayed with these variables
This will insert a line under the "SCRIPT" box to give it a little white space and make it look cleaner.

sed -i -r 's/llamada-script">/llamada-script"><br>/' /var/www/html/modules/agent_console/themes/default/agent_console.tpl
confirmed
This ads a whitespace line under "FORMS" in agent console to make it look cleaner

sed -i -r 's/llamada-form">/llamada-form"><br>/' /var/www/html/modules/agent_console/themes/default/agent_console.tpl
#############################################################
this changes forms entry from "national ID" to something you prefer.  Like "Customer Number"
sed -i -r 's/National ID/Customer No/' /var/www/html/modules/agent_console/index.php
################################################################
CONFIRMED
This updates an "ARE YOU SURE?" message from spanish to english.  Its when you upload the customer CSV file

sed -i -r 's/¿Está seguro de subir la información escogida?/Are you sure you want to upload the information now/' /var/www/html/modules/client/libs/js/base.js
###################################################
Confirmed
Alter the description of the customer CSV file you can upload
sed -i -r 's/Phone","Identification Card","Name/CallerID#","UniqueID#","First Name/' /var/www/html/modules/client/index.php
########################################
This alters the login menu slightly to show COMPANYNAME instead of CALLBACK
sed -i -r 's/Callback Login/COMPANYNAME Queue/' /var/www/html/modules/agent_console/index.php
sed -i -r 's/Callback Extension/COMPANYNAME Extension/' /var/www/html/modules/agent_console/index.php
###############################################
=================================================================================================
Change the colors of the agent Desktop to be a little more meaningful   (CONFIRMED)

Change the Agent desktop color status bar

READY FOR CALL (GREEN)
.issabel-callcenter-class-estado-ocioso {
    background-color: #094895   -------> Change to #248f24
sed -i -r 's/background-color: #094895/background-color: #248f24/' /var/www/html/modules/agent_console/themes/default/css/issabel-callcenter.css

ON CALL - BLUE
.issabel-callcenter-class-estado-activo {
    background-color: #06640D;   ----------> change to 0066ff
sed -i -r 's/background-color: #06640D/background-color: #0066ff/' /var/www/html/modules/agent_console/themes/default/css/issabel-callcenter.css

NOT READY ORANGE
.issabel-callcenter-class-estado-break {
    background-color: #BD0000;   --------->changeto e68a00
sed -i -r 's/background-color: #BD0000/background-color: #e68a00/' /var/www/html/modules/agent_console/themes/default/css/issabel-callcenter.css
==================================================================================================
Top Menu - change to purple  (CONFIRMED)
/var/www/html/themes/tenant/_common/_menu.tpl

current dark gray
<div style="height:83px;background-color:#373e4a;padding:15px;">

Change value to "PURPLE" #522b76
sed -i -r 's/373e4a/522b76/' /var/www/html/themes/tenant/_common/_menu.tpl
========================================================================================================================
This is the campaign montioring tool.  this is the live view names.  (Confirmed)
Can't easily SED these because there are other reference names. 

Edit this file:
/var/www/html/modules/campaign_monitoring/lang/en.lang

Find this list:
'Placing'   =>  'Placing',
'Dialing'   =>  'Dialing',
'Ringing'   =>  'Ringing',
'OnQueue'   =>  'On queue',
'online'    =>  'Free',
'offline'   =>  'Logged out',
'oncall'    =>  'Busy',
'paused'    =>  'On break',
'oncall'    =>  'Busy',

'OnQueue'   =>  'On queue', =--> changej the "On queue" to "Waiting"
'oncall'    =>  'Busy',     =--> change "Busy" to "On Call"
========================================================================
Agent reporting (Confirmed)
Change the title
/var/www/html/modules/rep_agent_information/lang/en.lang

sed -i -r 's/No. Agent/Agent Ext/' /var/www/html/modules/rep_agent_information/lang/en.lang
============================================================================
Incoming call monitoring (confirmed)
/var/www/html/modules/rep_incoming_calls_monitoring/lang/en.lang

sed -i -r 's/=> "Answered"/=> "On Calls"/' /var/www/html/modules/rep_incoming_calls_monitoring/lang/en.lang
sed -i -r 's/=> "Entered"/=> "Total Each Queue"/' /var/www/html/modules/rep_incoming_calls_monitoring/lang/en.lang
sed -i -r 's/=> "Total"/=> "Total All"/' /var/www/html/modules/rep_incoming_calls_monitoring/lang/en.lang
=============================================

This changes the callers "phone nubmer" heading to "CALLER ID" (avoids confusion)
sed -i -r 's/'LBL_CONTACTO_TELEFONO'         =>  _tr('Phone number'),//' /var/www/html/modules/agent_console/index.php

CHANGE THES  ()
           $traduccion = array(
                'first_name'    =>  _tr('First name'),
                'last_name'     =>  _tr('Last name'),
                'phone'         =>  _tr('Contact No'),
                'cedula_ruc'    =>  _tr('Customer No'),

Change this tr heading to Caller ID
'LBL_CONTACTO_TELEFONO'         =>  _tr('Caller ID'),
######################################################
Update Error messaging
In modules/agent_console/index.php
and modules/agent_console/libs/paloSantoConsola.class.php

you can alter the messaging for the agent login to provide onscreen help.  Common problem is forgetting to put agent in Dynamic queue member
Will help future agent configs to remind what the likely problem is that they cant login to the gui

updated message
                modules/agent_console/libs/paloSantoConsola.class.php
$this->errMsg = '(internal) getagentstatus: '.$this->_formatoErrorECCP($connStatus). ' Verify agent is a dynamic queue member (IE S1002,0)?';

and
modules/agent_console/index.php
$respuesta['message'] = _tr('Agent login process not started. Verify agent is a dynamic queue member (IE S1001,0)');
############################################################


/var/www/html/modules/client/themes/default/form.tpl

Add <font size="+1"
in the line below (example shown)
<td class="letra12" align='left' colspan="2"><font size="+1"><b><a href="?menu={$MODULE_NAME}&amp;rawmode=yes&amp;action=csvdownload">{$ETIQUETA_DOWNLOAD} CSV&nbsp;&raquo;</a></b></tr>
This makes the DOWNLOAD CLIENTS link a little bigger in the window.

Also add CSV towards the end to help make it a little clearer


#############################################
make callback agent default screen  (CONFIRMED)
/var/www/html/themes/tenant/_common/index.tpl

find this section:

<><><><><><><><><><><><><
{$HEADER_MODULES}
    </head>
    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" "class="mainBody page-body" {$BODYPARAMS}>
    <div class="page-container">
<><><><><><><><><><><><><

Insert between:

<><><><><><><><><><><><><
{$HEADER_MODULES}

<script type='text/javascript'>
function checkTheBox()
{
document.getElementById("input_callback").click();
document.getElementById("input_callback").checked=true;
}
</script>

    </head>
<><><><><><><><><><><><><

Change next line and insert
onLoad="checkTheBox()"

    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="checkTheBox()" class="mainBody page-body" {$BODYPARAMS}>
==============================
Login Screen - Bottom advertisement flag  (CONFIREMD)
/var/www/html/themes/tenant/_common/login.tpl
Remark/Delete out this line for a security concern.  Dont want people knowing what system we use.
<!-- <a href="http://www.issabel.org" style="text-decoration: none;" target='_blank'>IIssabel</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a>. 2006 - {$currentyear}.</div>-->
================================================================================================================
Normal Screen - Bottom Flag  (CONFIRMED)
/var/www/html/themes/tenant/_common/index.tpl
looks like
<a href="http://www.issabel.org" style="color: #444; text-decoration: none;" target='_blank'>Issabel</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" target='_blank' style="color: #445; text-decoration: none;" >GPL</a>. 2006 - {$currentyear}.
Replace with this:
<style="color: #444; text-decoration: none;" target='_blank'>Contact Center</a>-<a href="" target='_blank' style="color: #445; text-decoration: none;" ></a> COMPANYNAME
===================================================================================================
MODIFY the LOGIN PAGE LOGO  (confirmed)

This is the reference file - changes it to the new name
The file is about 200x60 in size. 
sed -i -r 's/issabel_logo_mini.png/contactcenter_logo_mini.png/' /var/www/html/themes/tenant/_common/login.tpl
sed -i -r 's/alt="Issabel logo"/alt="ContactCenter Logo"/' /var/www/html/themes/tenant/_common/login.tpl

Put the new logo in
/themes/tenant/images/contactcenter_logo_mini.png


If you want a bigger image, the value below will double it will double it
sed -i -r 's/width="200"/width="400"/' /var/www/html/themes/tenant/_common/login.tpl
sed -i -r 's/height="62"/height="98"/' /var/www/html/themes/tenant/_common/login.tpl

or you can just make it use the default size of your imagine by modifyin this line in
<img src="{$WEBPATH}themes/{$THEMENAME}/images/contactcenter_logo_mini.png" width="400" height="98" alt="ContactCenter Logo" />
and just removed the WIDTH and HEIGHT portions
<img src="{$WEBPATH}themes/{$THEMENAME}/images/contactcenter_logo_mini.png"  alt="ContactCenter Logo" />

sed -i -r 's/width="400"//' /var/www/html/themes/tenant/_common/login.tpl
sed -i -r 's/height="62"/height="98"/' /var/www/html/themes/tenant/_common/login.tpl
=================================================================================
This is the logo in the upper left corner of the agent desktop  (Confirmed)

This is the code referencing it
admin/views/issabel_advice.php
themes/tenant/_common/_menu.tpl
issabel_warning_authentication.php

sed -i -r 's/issabel_logo_mini2.png/contactcenter_logo_mini2.png/' /var/www/html/admin/views/issabel_advice.php
sed -i -r 's/issabel_logo_mini2.png/contactcenter_logo_mini2.png/' /var/www/html/themes/tenant/_common/_menu.tpl
sed -i -r 's/issabel_logo_mini2.png/contactcenter_logo_mini2.png/' /var/www/html/issabel_warning_authentication.php

This is the file name and location
/themes/tenant/images/issabel_logo_mini2.png
UPdating with fille called "contactcenter_logo_mini2.png"

replace logos: delete these ones  (youc an use winscp)

./themes/tenant/images/issabel_logo_mini.png
./modules/registration/images/issabel_logo_mini.png

and upload these "contactcenter_logo_mini"
assuming changes above for file references

Delete these logs
./themes/tenant/images/issabel_logo_mini2.png
./images/issabel_logo_mini2.png

and upload the ones you want to replace assign
contactcenter_logo_mini2.png


Delete this file /modules/registration/images/issabel_logo_mini.png
sed -i -r 's/issabel_logo_mini.png/contactcenter_logo_mini.png/' /var/www/html/modules/registration/themes/default/_cloud_registered.tpl

##############################################################
vi /var/www/html/modules/registration/themes/default/_cloud_registered.tpl
Delete this line  <div class="cloud-footernote"><a href="http://www.issabel.org" style="text-decoration: none;" target='_blank'>Issabel</a> {$ISSABEL_LICENSED} <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a>. 2006 - {$currentyear}.</div>-->
==========================================================
verified

/var/www/html/favicon.ico 
This is the file that is in the tab.
Replace iwth you rown logo
##############################################
Increase the size of the AGENT color status bar.
sed -i -r 's/height: 1.3em;/height: 1.9em;/' /var/www/html//modules/agent_console/themes/default/css/issabel-callcenter.css
###############################################








===========================================
INFO button
themes/tenant/_common/_menu.tpl

<li><a href="http://www.issabel.org" target="_blank"><i class="fa fa-external-link"></i>Issabel WWebsite</a></li>
<li><a href="http://www.crm.com" target="_blank"><i class="fa fa-external-link"></i>CRM LInk</a></li>

themes/tenant/_common/index.tpl

<a href="http://www.issabel.org" style="text-decoration: none;" target='_blank'>Issabel</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a>. 2006 - {$currentyear}.</div>
<target='_blank'>Contact Center</a>

 vi themes/tenant/_common/login.tpl
<a href="http://www.issabel.org" style="text-decoration: none;" target='_blank'>Issabel</a> is licensed under <a href="http://www.opensource.org/licenses/gpl-license.php" style="text-decoration: none;" target='_blank'>GPL</a>. 2006 - {$currentyear}.</div>
<target='_blank'>Contact Center</a>
==========================================================================


/index.php   disabled the logout of the gui option until i can sort out how to logout of queue AND gui simultaneously
//if(isset($_GET['logout']) && $_GET['logout']=='yes') {
//    $user = isset($_SESSION['issabel_user'])?$_SESSION['issabel_user']:"unknown";
//    writeLOG("audit.log", "LOGOUT $user: Web Interface logout successful. Accepted logout for $user from $_SERVER[REMOTE_ADDR].");
//    session_destroy();
//   session_name("issabelSession");
//    session_start();
//    header("Location: index.php");
//    exit;
//}
=======================================================================
'title'                         =>  _tr('Agent Console').': '.
'title'                         =>  _tr('Engineer Console').': '.
================================================================================
hostnamectl set-hostname ysj-pbx-12
init 6
(system will reboot)

=========================================================
improtant

ORIGINAL CODE
#issabel-callcenter-llamada-paneles {
    position: relative;
    height: 32em;
    padding: 0;

Modified
#issabel-callcenter-llamada-paneles {
    position: relative;
    height: 532em;
    padding: 0;

This changes the actual "height of the agent control box window in relation to the main screen, it gives scroll bars but doesn't make the window bigger (yet)



This is the internal panel width for
themes/default/js/javascript.js
 $('#issabel-callcenter-llamada-paneles').layout({fxName: 'none', west: { size: 600 }});

This is the size of the SCRIPT panel, increasing this value decreases the information size
$('#issabel-callcenter-llamada-paneles-izq').layout({fxName: 'none', south: { size: 250 }});

    if ($('#issabel-callcenter-llamada-paneles').length > 0) {
        $('#issabel-callcenter-llamada-paneles').layout({fxName: 'none', west: { size: 400 }});
        $('#issabel-callcenter-llamada-paneles-izq').layout({fxName: 'none', south: { size: 200 }});
    }
#######################################################


confirmed
/var/www/html/modules/agent_console/index.php
alter these lines to add some spacess/adjustments for the agent console "INFORMATION screen" for "INTERNAL CALL ID".  It spreads out the data a little bit

        'TEXTO_CALL_ID'                 =>  $infoLlamada['calltype'].' - '.
            (isset($infoLlamada['campaign_id']) ? $infoLlamada['campaign_id'] : 'Que: '.$infoLlamada['queue']).' - '.
            (isset($infoLlamada['contact_id']) ? 'c'.$infoLlamada['contact_id'] : (isset($infoLlamada['callid']) ? $infoLlamada['callid'] : $infoLlamada['call_id'])),

something like :
Internal Call ID: incoming - 2 - 11
##################################################

confirmed but maybe incorporate into change already done by different sed
/var/www/html/themes/tenant/_common/login.tpl

<title>COMPANYNAME Contact Center {$PAGE_NAME}</title>
#######################
confirmed
$smarty->assign("PAGE_NAME", _tr('Login'));
/var/www/html/index.php


##########################
(reference info)
/var/www/html//modules/agent_console/themes/default/css/issabel-callcenter.css
This code adjusts the agent status bar.  You can make the phone bigger and the height of the actual status bar bigger etc.
In the code below i've increased the height to make the bar taller

#issabel-callcenter-estado-agente {
    position: relative;
    left: 0;
    width: 100%;
    height: 2.3em;
    padding: 0 0 0 0;
    font-size: 1.3em;
    color: #FFFFFF;
    font-weight: bold;
}
####################