Archives 2021

How to – Scratch instructions for Vicidial(Vicibox9) on OpenSuSE Leap 15.2

Leap15.2

How to – Scratch instructions for Vicidial(Vicibox9) on OpenSuSE Leap 15.2

So, I have installed Vicidial on Leap 15.2 and wrote up an instructions step by step and wanted to share it for others to try and make sure it works for you as well. I have tested this on an EC2 instance. If you prefer a video rather than text, scroll down to the bottom to watch HBTutorials (Harold) YouTube video.

zypper ar https://download.opensuse.org/repositories/home:vicidial:asterisk-13/openSUSE_Leap_15.2/home:vicidial:asterisk-13.repo
zypper ar https://download.opensuse.org/repositories/home:/vicidial/openSUSE_Leap_15.2/home:vicidial.repo
zypper addrepo https://download.opensuse.org/repositories/devel:languages:python:Factory/openSUSE_Leap_15.2/devel:languages:python:Factory.repo
zypper ar https://download.opensuse.org/repositories/home:/zippy:/jx:/packages-ready/openSUSE_Leap_15.2/ home_zippy_jx_packages-ready
zypper ar http://download.opensuse.org/distribution/leap/15.2/repo/oss/ openSUSE-Leap-15.2-Oss
zypper ar http://download.opensuse.org/repositories/devel:/languages:/perl/openSUSE_Leap_15.2/ openSUSE-Leap-15.2-PERL
zypper ar http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_Leap_15.2/ openSUSE-Leap-15.2-PHP-Applications
zypper ar http://download.opensuse.org/update/leap/15.2/oss/ openSUSE-Leap-15.2-Update
zypper ar https://download.opensuse.org/repositories/home:/vicidial:/vicibox/openSUSE_Leap_15.2/home:vicidial:vicibox.repo


zypper ref
zypper up
zypper in asterisk* dahdi dahdi-linux dahdi-linux-devel dahdi-tools libpri-devel voicesync voicesync-kmp-default

zypper install sqlite3-devel mariadb-server mariadb make patch gcc gcc-c++ subversion php7 php7-devel php7-gd gd-devel php7-mbstring php7-mcrype php7-imap php7-ldap php7-mysql php7-odbc php7-pear php7-xml php7-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel httpd libpcap libpcap-devel libnet ncurses ncurses-devel screen mysql-devel ntp mutt wget nano unzip sipsak sox libuuid-devel httpd php-common php-pdo mod_ssl perl-DBI perl-DBD-MySQL perl-Digest-HMAC perl-YAML perl-ExtUtils-ParseXS perl-NetAddr-IP perl-Crypt-SSLeay perl-Curses perl-DBD-Pg perl-Module-ScanDeps perl-Text-CSV perl-HTML-Template perl-IO-Compress perl-Text-Glob perl-Jcode perl-Test-Script perl-Archive-Tar perl-Test-Base perl-OLE-Storage_Lite perl-Archive-Zip perl-Net-Server perl-Convert-ASN1 perl perl-Compress-Raw-Zlib perl-Digest-SHA1 perl-Data-Dumper perl-Error perl-ExtUtils-CBuilder perl-Test-Tester perl-Parse-RecDescent perl-Spiffy perl-IO-Zlib perl-Module-Build perl-HTML-Parser perl-Net-SSLeay perl-Proc-ProcessTable perl-TermReadKey perl-Term-ReadLine-Gnu perl-Digest-SHA perl-Tk perl-Net-SNMP perl-Test-NoWarnings perl-XML-Writer perl-Proc-PID-File perl-Compress-Raw-Bzip2 perl-libwww-perl perl-XML-Parser perl-File-Remove perl-Parse-CPAN-Meta perl-Set-Scalar perl-Probe-Perl perl-File-Which perl-Package-Constants perl-Module-Install perl-File-HomeDir perl-Spreadsheet-ParseExcel perl-Mail-Sendmail perl-Spreadsheet-XLSX asterisk-perl perl-version perl-Crypt-DES perl-URI perl-Net-Daemon perl-IO-stringy perl-YAML-Tiny perl-HTML-Tagset perl-Socket6 perl-BSD-Resource perl-IPC-Run3 perl-Text-CSV_XS perl-Unicode-Map perl-Net-Telnet perl-PAR-Dist perl-Date-Manip perl-JSON perl-rrdtool lame screen iftop htop perl-GD apache2-mod_php7 vicibox* git certbot

systemctl enable mariadb;systemctl enable apache2
systemctl start mariadb;systemctl start apache2

zypper in libjansson4 (change vendor to vicidial version)

perl -MCPAN -e 'my $c = "CPAN::HandleConfig"; $c->load(doit => 1, autoconfig => 1); $c->edit(prerequisites_policy => "follow"); $c->edit(build_requires_install_policy => "yes"); $c->commit'

cpan -i String::CRC Tk::TableMatrix Net::Address::IP::Local Term::ReadLine::Gnu Spreadsheet::Read Net::Address::IPv4::Local RPM::Specfile Spreadsheet::XLSX Spreadsheet::ReadSXC MD5 Digest::MD5 Digest::SHA1 Bundle::CPAN Pod::Usage Getopt::Long DBI DBD::mysql Net::Telnet Time::HiRes Net::Server Mail::Sendmail Unicode::Map Jcode Spreadsheet::WriteExcel OLE::Storage_Lite Proc::ProcessTable IO::Scalar Scalar::Util Spreadsheet::ParseExcel Archive::Zip Compress::Raw::Zlib Spreadsheet::XLSX Test::Tester Spreadsheet::ReadSXC Text::CSV Test::NoWarnings Text::CSV_PP File::Temp Text::CSV_XS Spreadsheet::Read LWP::UserAgent HTML::Entities HTML::Strip HTML::FormatText HTML::TreeBuilder Switch Time::Local MIME::POP3Client Mail::IMAPClient Mail::Message IO::Socket::SSL readline 

cd /usr/bin/
curl -LOk http://xrl.us/cpanm
chmod +x cpanm
cpanm -f File::Which
cpanm -f File::HomeDir
cpanm CPAN::Meta::Requirements
cpanm -f CPAN
cpanm -f DBD::mysql
cpanm User::Identity --force
cpanm YAML MD5 Digest::MD5 Digest::SHA1 Curses Getopt::Long Net::Domain Term::ReadKey Term::ANSIColor HTML::FormatText MIME::Decoder Mail::POP3Client Mail::Message Crypt::Eksblowfish::Bcrypt

mkdir -p /var/lib/swap
dd if=/dev/zero of=/var/lib/swap/swapfile bs=1M count=4096
mkswap /var/lib/swap/swapfile
swapon /var/lib/swap/swapfile
cat /proc/swaps
nano /etc/fstab
paste this: /var/lib/swap/swapfile swap swap defaults 0 0
save and exit

mysql
SET GLOBAL connect_timeout=60;
CREATE DATABASE `asterisk` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'cron'@'localhost' IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@'%' IDENTIFIED BY '1234';
CREATE USER 'custom'@'localhost' IDENTIFIED BY 'custom1234';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,LOCK TABLES on asterisk.* TO custom@'%' IDENTIFIED BY 'custom1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@localhost IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,LOCK TABLES on asterisk.* TO custom@localhost IDENTIFIED BY 'custom1234';
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
GRANT RELOAD ON *.* TO custom@'%';
GRANT RELOAD ON *.* TO custom@localhost;
flush privileges;
exit

mkdir /usr/src/astguiclient
cd /usr/src/astguiclient
svn checkout svn://svn.eflo.net:3690/agc_2-X/trunk

mysql
SET GLOBAL connect_timeout=60;
use asterisk;
\. /usr/src/astguiclient/trunk/extras/MySQL_AST_CREATE_tables.sql
\. /usr/src/astguiclient/trunk/extras/first_server_install.sql
ALTER TABLE phones ALTER template_id SET DEFAULT '';
quit

perl /usr/src/astguiclient/trunk/install.pl
perl /usr/share/astguiclient/ADMIN_area_code_populate.pl
perl /usr/src/astguiclient/trunk/bin/ADMIN_update_server_ip.pl


###Now edit the rc.local by typing the command line below and then pasting the entire section after that

nano /etc/rc.local

### paste this below: 

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

# OPTIONAL enable ip_relay(for same-machine trunking and blind monitoring)
/usr/share/astguiclient/ip_relay/relay_control start 2>/dev/null 1>&2

# Disable console blanking and powersaving
/usr/bin/setterm -blank
/usr/bin/setterm -powersave off
/usr/bin/setterm -powerdown

### start up the MySQL server
systemctl start mariadb.service
systemctl enable mariadb.service

### start up the apache web server
systemctl start apache2
systemctl enable apache2

### roll the Asterisk logs upon reboot
/usr/share/astguiclient/ADMIN_restart_roll_logs.pl

### clear the server-related records from the database
/usr/share/astguiclient/AST_reset_mysql_vars.pl

### load dahdi drivers
modprobe dahdi
/usr/sbin/dahdi_cfg -vvvvvvvvvvvvv

### sleep for 20 seconds before launching Asterisk
sleep 20

### start up asterisk
/usr/share/astguiclient/start_asterisk_boot.pl


############## END PASTE HERE ##################


crontab -e

### paste below:

### recording mixing/compressing/ftping scripts
#0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl --MIX
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_VDonly.pl
1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58 * * * * /usr/share/astguiclient/AST_CRON_audio_2_compress.pl --GSM
#2,5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59 * * * * /usr/share/astguiclient/AST_CRON_audio_3_ftp.pl --GSM

### keepalive script for astguiclient processes
* * * * * /usr/share/astguiclient/ADMIN_keepalive_ALL.pl --cu3way

### kill Hangup script for Asterisk updaters
* * * * * /usr/share/astguiclient/AST_manager_kill_hung_congested.pl

### updater for voicemail
* * * * * /usr/share/astguiclient/AST_vm_update.pl

### updater for conference validator
* * * * * /usr/share/astguiclient/AST_conf_update.pl

### flush queue DB table every hour for entries older than 1 hour
11 * * * * /usr/share/astguiclient/AST_flush_DBqueue.pl -q

### fix the vicidial_agent_log once every hour and the full day run at night
33 * * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl
50 0 * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl --last-24hours
## uncomment below if using QueueMetrics
#*/5 * * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl --only-qm-live-call-check

## uncomment below if using Vtiger
#1 1 * * * /usr/share/astguiclient/Vtiger_optimize_all_tables.pl --quiet

### updater for VICIDIAL hopper
* * * * * /usr/share/astguiclient/AST_VDhopper.pl -q

### adjust the GMT offset for the leads in the vicidial_list table
1 1,7 * * * /usr/share/astguiclient/ADMIN_adjust_GMTnow_on_leads.pl --debug

### reset several temporary-info tables in the database
2 1 * * * /usr/share/astguiclient/AST_reset_mysql_vars.pl

### optimize the database tables within the asterisk database
3 1 * * * /usr/share/astguiclient/AST_DB_optimize.pl

## adjust time on the server with ntp
30 * * * * /usr/sbin/ntpdate -u pool.ntp.org 2>/dev/null 1>&2

### VICIDIAL agent time log weekly and daily summary report generation
2 0 * * 0 /usr/share/astguiclient/AST_agent_week.pl
22 0 * * * /usr/share/astguiclient/AST_agent_day.pl

### VICIDIAL campaign export scripts (OPTIONAL)
#32 0 * * * /usr/share/astguiclient/AST_VDsales_export.pl
#42 0 * * * /usr/share/astguiclient/AST_sourceID_summary_export.pl

### remove old recordings more than 7 days old
#24 0 * * * /usr/bin/find /var/spool/asterisk/monitorDONE -maxdepth 2 -type f -mtime +7 -print | xargs rm -f

### roll logs monthly on high-volume dialing systems
#30 1 1 * * /usr/share/astguiclient/ADMIN_archive_log_tables.pl

### remove old vicidial logs and asterisk logs more than 2 days old
28 0 * * * /usr/bin/find /var/log/astguiclient -maxdepth 1 -type f -mtime +2 -print | xargs rm -f
29 0 * * * /usr/bin/find /var/log/asterisk -maxdepth 3 -type f -mtime +2 -print | xargs rm -f
30 0 * * * /usr/bin/find / -maxdepth 1 -name "screenlog.0*" -mtime +4 -print | xargs rm -f

### cleanup of the scheduled callback records
25 0 * * * /usr/share/astguiclient/AST_DB_dead_cb_purge.pl --purge-non-cb -q

### GMT adjust script - uncomment to enable
#45 0 * * * /usr/share/astguiclient/ADMIN_adjust_GMTnow_on_leads.pl --list-settings

### Dialer Inventory Report
1 7 * * * /usr/share/astguiclient/AST_dialer_inventory_snapshot.pl -q --override-24hours

### inbound email parser
* * * * * /usr/share/astguiclient/AST_inbound_email_parser.pl



################ END PASTE HERE ####################

a2enmod ssl
a2enflag SSL

nano /etc/apache2/httpd.conf

### add these lines to the top:

LoadModule php7_module /usr/lib64/apache2/mod_php7.so
AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

nano /etc/my.cnf

enter following line just below [mysqld]:
sql_mode=NO_ENGINE_SUBSTITUTION


reboot

go to http://127.0.0.1/vicidial/admin.php


Enjoy!!

-CarpeNox

How to – Setup FreePBX 15 & Asterisk 16 on a Raspberry Pi

RaspPi4-8GB

How to – Setup FreePBX 15 & Asterisk 16 on a Raspberry Pi 4

Creating a “Contact Center to Go”

For this setup I used the Raspberry Pi 4 Model B – 8 GB encased in the above casing. I will go over step by step instructions on what I just did to create a little “mini mobile call center to go” with FreePBX 15 and Asterisk 16.


Step 1 – Purchase a Raspberry Pi and micro SD card

Personally I went with Vilros.com for my purchase and was not disappointed.


Step 2 – Download RasPBX

You need to download RasPBX next, I downloaded it from the main source at http://www.raspberry-asterisk.org/downloads/ and then unzipped the file which gave me a raspbx-10-10-2020.img file


Step 3 – Download Win32DiskImager and begin installation

Install Win32DiskImager and then choose the raspbx.img and the drive you have your micro SD card on and click “write”.

32 GB Micro SD card

Step 4 – Start up your Rasperry Pi & updating it

Once you power on your device and let it start up, you will be prompted for a username and password. The user is “Pi” and the password is “raspberry”. After you login and make sure you have an internet connection, run “raspbx-upgrade” to update everything and check if Asterisk is running correctly.

freepbx

Step 5 – FreePBX

Lets get started on FreePBX setup now. Go to http://raspbx.ip and click on Admin > Admin Module and check online for updates

FreePBX
freepbx

You now have a “Contact Center to Go” in your pocket.

If you have any questions or comments, feel free to reply to this post or hit me up on Skype.

How to – Get phpMyAdmin working and secured on a Vicibox 9 installation

phpmyadmin

How to – Get phpMyAdmin working and secured on a Vicibox 9 installation

So you’ve tried to access phpMyAdmin after installing Vicibox 9 iso on your bare metal or virtual server and it’s not working…..and you’re wondering why? Well, as a security precaution, phpMyAdmin is not enabled by default and needs a symbolic link created, so let’s start there. If you don’t have it installed already, “zypper in phpMyAdmin”.

Creating the symbolic link

Type the following command into your Linux CLI:

ln -s /usr/share/phpMyAdmin /srv/www/htdocs/
phpMyAdmin
Type ll(LL) within the /srv/www/htdocs/ directory to make sure the symbolic link was created correctly

Now that we have created the symbolic link, we need to secure this directory to make sure any unwanted access isn’t permitted. We are going to accomplish this using .htaccess


Securing phpMyAdmin using Htaccess

Edit your phpMyAdmin.conf file in /etc/apache2/conf.d

phpmyadmin
phpMyAdmin.conf
nano /etc/apache2/conf.d/phpMyAdmin.conf

### change the following:

<Directory /usr/share/phpMyAdmin>

    Options FollowSymLinks
    AllowOverride All   #This was "None"

    <IfVersion < 2.4>
        Order Deny,Allow
        Allow from all
    </IfVersion>


###  save and exit ###

nano /usr/share/phpMyAdmin/.htaccess

####Enter the following:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpMyAdmin/.htpasswd
Require valid-user

###save and exit

zypper install apache2-utils

htpasswd -c /etc/phpMyAdmin/.htpasswd whatever.username.u.want
Password: enter the password u want

##restart apache
service apache restart or systemctl restart apache

###go to your phpmyadmin

https://server.ip/phpMyAdmin


##Enjoy

Hopefully this will help some of you avoid some easier hacks. For more information on securing your servers, check out our free security audit!

Useful Commands to manage everyday tasks on Asterisk/Vicidial Servers

useful tools

Useful Commands to manage everyday tasks on Asterisk/Vicidial Servers

I wanted to put together a list of commands that I use often or daily that may help other people manage their days easier. If you have anything you use or think others would find useful, please comment below and I will add them with credit to you and your website or blog if you’d like. Ok so these commands will go over things for services such as Apache, MySQL, Vicidial, Asterisk, and more.

MySQL Commands and examples:

### repair a broken Database Table
repair table vicidial_live_agents use_frm;


### get level 9 users in vicidial
mysql asterisk -u cron -p1234 -e "select user,pass,active from vicidial_users where user_level='9'"

### check and repair mysql
mysqlcheck -p --auto-repair --all-databases

### show what IP's are in the Dynamic Portal IP set
use asterisk;
select computer_ip from vicidial_user_log where event = 'VICIBOX' group by computer_ip;


### reset a user whos locked out due to too many login attempts through mysql instead of GUI (Thanks Venkat from vicidial.sh)
mysql -e "use asterisk; update vicidial_users set failed_login_count='0' where user='6666'";


### How to create a user in mysql - change user(cron) and pass(1234)
CREATE USER 'cron'@'localhost' IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@'%' IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@localhost IDENTIFIED BY '1234';
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;

### change root password(to delete it leave it BY '')
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

### check a user groups permissions(replace 'ADMIN' accordingly)
mysql -u cron -p1234 asterisk -e "select * from vicidial_user_groups where user_group='ADMIN'\G"

####### if leads wont load or you get "no one in your session"
nano /etc/my.cnf
Look for sql_mode and change it to sqlmode=""
mysql -u cron -p1234 asterisk -e “select * from vicidial_user_groups where user_group=’ADMIN’\G”

Other useful commands

### watch asterisk messages thru linux cli ######
tail -f /var/log/asterisk/messages


####### apache tools ############
check web connections: netstat -tuna | grep ":80" | wc -l


##### Useful Vicidial Commands for Linux ##########
/usr/share/astguiclient/ADMIN_keepalive_ALL.pl --cu3way
/usr/share/astguiclient/AST_manager_listen.pl --debugX
/usr/share/AST_DB_action.pl --debugX

#### Check if Dahdi(Meetme/Vicidial Conferences) is running ####
dahdi_cfg -vv
If its not run this command: 
modprobe dahdi


### check keepalives
cat /etc/astguiclient.conf | grep VARactive_keepalives



##### viciphone time for autologin 
$webphone_call_seconds = '5 ; in options.php in agc dir



### upgrade vici ####
cd /usr/src/astguiclient
svn checkout svn://svn.eflo.net:3690/agc_2-X/trunk
cd trunk
perl install.pl

mysql -p -f --database=asterisk < /usr/src/astguiclient/trunk/extras/upgrade_2.14.sql


### certbot renewal command #####
certbot certonly --cert-name cyburityllc.com -d sunfun.cyburityllc.com -d mail.cyburityllc.com -d sunfunnow.cyburityllc.com -d cyburity.ml -d cyburity.ga -d cyburity.gq -d cyburity.cf -d informationtechnology.gq -d cyburityllc.com -d www.cyburityllc.com -d cyburhack.com -d cyburhacker.com -d cyburshield.com -d cyberdialer.net -d www.cyburdial.com -d www.cyberdialer.net -d cyburphone.com -d dialer.one -cyburdialer.com -d contactcentersrus.com -d fldream.cyburityllc.com -d www.contactcentersrus.com -d portal.contactcentersrus.com -d cyburdialer.com-d cyburdial.com



### to check whats eating all the ram
ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20

#### cpu usage
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -11

## check HDD space
df -h

### find the largest files and folders on your linux server(good to see whats taking up space) - This will find the top 20 files and folders, try it from /
du -ah | sort -hr | head -n 20

### check processors
grep processor /proc/cpuinfo | wc -l

### tcp dump for ports(change accordingly) #####
tcpdump -nttv -s 0 -i eth0 port 80

#### check connections to a port ##########
netstat -tuna | grep ":5038" | wc -l


###clear dns cache
/etc/init.d/nscd restart

###For a "live" view showing the logic involved in dialing:
screen -r ASTVDauto

ctrl-a - ctrl-d to get out of it.

###perl install based on asterisk version
perl install.pl --copy_sample_conf_files --asterisk_version=11.X

### start up asterisk
/usr/share/astguiclient/start_asterisk_boot.pl

/usr/share/astguiclient/ADMIN_keepalive_ALL.pl --cu3way



###VOLUME FOR AST13########
With Asterisk 13, the mechanism in Asterisk that allowed for volume changes and muting of meetme participants had been causing random crashes in Asterisk. We now disable this functionality by default, but if you want to enable it, all you have to do is use the agc/options.php setting of "$ast13_volume_override = '1';"

    

####USEFUL SVN TOOLS#######


Beware of the version in system settings. To be absolutely certain to version match:

SVN is used to manage the "install directory" (/usr/src/astguiclient/trunk)

The install directory has a group of sql files that are used to upgrade from the first version to NOW (based on the svn revision level presently in THAT directory).

When your last sql upgrade file has a last line indicating that the db schema value should be what is presently shown in your System Settings ... you have a match. All your code will match your entire DB if you run install.pl with that version loaded.

Anything else is more of a "sort of" match. That's the only truly reliable method. How you get there is a matter of experience and knowledge of svn. But upgrading/downgrading that svn repository until you get lucky and it matches is the easiest amateur way to get a lock-on match of your present db schema.

start here:

CODE: 
tail /usr/src/astguiclient/trunk/extras/upgrade_2.14.sql | grep db_schema_version
mysql -u cron -p1234 asterisk -e "select * from system_settings\G" | grep schema
cd /usr/src/astguiclient/trunk
svn info | grep Revision

Compare the db schema in system settings to the db schema in the upgrade.sql file.
Note the svn revision level.
Increase or decrease the svn revision level with "svn up -r ####" and ... try again until the db schema in the sql file and system settings match. Example:

svn up -r 2946

Then run perl install.pl. Example:
CODE: SELECT ALL
cd /usr/src/astguiclient/trunk
perl install.pl --copy_sample_conf_files


Note that --copy_sample_conf_files will overwrite the .conf files presently in the system. Any that you have edited will need to be re-edited. Such as externip=xxx.xx.xx.x in sip.conf. While updating these isn't always necessary, NOT updating them has been known to blow an entire workday for simple "missed" change that's very difficult to find otherwise. Skip copy_sample_conf_files at your own risk. 8-)

### for webrtc phone issue with chrome 87 update
zypper in ncurses-devel libxml2-devel sqlite-devel libsrtp-devel libuuid-devel openssl-devel
 


How to – Fix Dahdi errors(no sounds) in relation to Vicidial

dahdi error

How to – Fix Dahdi errors(no sounds) in relation to Vicidial

What is Dahdi’s function in Vicidial?

Dahdi is essentially what controls the meet-me conferences(Vicidial Conferences as shown below) for Vicidial. So when this is not running, you will get all types of errors, such as, time sync errors, “no one in your session” , no sound and other various issues. If you do not hear the “You’re the only one in this conference” sound when you login or any customer voice, then dahdi is probably not loaded correctly. The reason for this is because the meetme conferences link the audio channel from the carrier to the meetme conference. With no meetme confernce(dahdi) then the system will not work correctly.

VICIDIAL Conferences(Meet Me)

Typical Error: WARNING[5123][C-00000007]: app_meetme.c:1663 build_conf: Unable to open DAHDI pseudo device

[Feb 12 15:21:47] == Using SIP RTP CoS mark 5
[Feb 12 15:21:47] -- Called 1001
[Feb 12 15:21:47] -- SIP/1001-00000003 is ringing
[Feb 12 15:21:47] -- SIP/1001-00000003 is ringing
[Feb 12 15:21:51] > 0x7fa04800f470 -- Strict RTP learning after remote address set to: 192.168.0.1:29040
[Feb 12 15:21:51] -- SIP/1001-00000003 answered
[Feb 12 15:21:51] -- Executing [8600051@default:1] MeetMe("SIP/1001-00000003", "8600051,F") in new stack
[Feb 12 15:21:51] WARNING[5123][C-00000007]: app_meetme.c:1663 build_conf: Unable to open DAHDI pseudo device

What to do? Well, first let’s check if dahdi is running by using the command “dahdi_cfg -vvv” which should output as below after seeing the above error:

dahdi
Dahdi_cfg -vvv

So how do we fix it? Type “modprobe dahdi” and check again

dahdi
modprobe dahdi

Now this status shows we have Dahdi running correctly in Linux. So lets make sure this doesn’t happen anymore. Add this following line to your crontab:

* * * * * /usr/sbin/modprobe dahdi

This will attempt to run dahdi every minute in the case it does crash from now on, it will automatically recover. I hope this article helps.

-Nox

How to – Update your Vicidial version with subversion

SVN Update
The version number shows in the top right corner.

Updating Vicidial

This is a pretty simple process. Only a few commands needs to be run in order to update your vicidial/cyburdial version via the Linux Command Line Interface(CLI)

cd /usr/src/astguiclient
svn checkout svn://svn.eflo.net:3690/agc_2-X/trunk
cd trunk
perl install.pl

Then you may need to update your DB Schema using the following command which only be ran on your DB server in a cluster environment.

mysql -p -f --database=asterisk < /usr/src/astguiclient/trunk/extras/upgrade_2.14.sql

Incorrect DB Schema Error: Code expects different schema

If you receive this error, you can see how to fix that here

How to – Backup and Restore your Vicidial server

Cyburity - vicidial hosting

How to – Backup and Restore your Vicidial server

Why would you need to backup and restore your vicidial server? Suppose you need to migrate or duplicate Vicidial data (campaigns, leads, phones and so on) from one Vicibox server to another. In case two Vicidial boxes of the same versions the process will be simpler. In case the source server has older Vicibox version than the destination one you will have to perform additional steps to get the destination server working. Both cases are covered in the article below.

Backup / restore Vicidial data between the same version of Vicibox

Basically, to get the Vicidial backup you will need to run /usr/share/astguiclient/ADMIN_backup.pl script that has the following options:



/usr/share/astguiclient/ADMIN_backup.pl --help
allowed run time options:
  [--db-only] = only backup the database
  [--db-settings-only] = only backup the database without leads, logs, servers or phones
  [--db-without-logs] = do not backup the log tables in the database
  [--db-without-archives] = do not backup the archive tables in the database
  [--dbs-selected=X] = backup only selected databases, default uses conf file db only to backup databases X and Y, use X---Y, can use --ALL-- for all dbs on serveryou can use --ALLNS-- for all non-mysql dbs(will ignore 'test', 'mysql','information_schema')
This feature will NOT work with '--db_raw_files_copy' option
  [--conf-only] = only backup the asterisk conf files
  [--without-db] = do not backup the database
  [--without-conf] = do not backup the conf files
  [--without-web] = do not backup web files
  [--without-sounds] = do not backup asterisk sounds
  [--without-voicemail] = do not backup asterisk voicemail
  [--without-crontab] = do not backup crontab
  [--ftp-transfer] = Transfer backup to the 'REPORTS' FTP server
  [--ftp-server=XXXXXXXX] = OVERRIDE FTP server to send file to
  [--ftp-login=XXXXXXXX] = OVERRIDE FTP user
  [--ftp-pass=XXXXXXXX] = OVERRIDE FTP pass
  [--ftp-dir=XXXXXXXX] = OVERRIDE remote FTP server directory to post files to
  [--debugX] = super debug
  [--debug] = debug
  [--test] = test
  [--db_raw_files_copy] = if set the backup won't be a mysql dump. It will tar the /var/lib/mysql folder. WARNING, THIS OPTION WILL STOP THE MYSQL SERVER!
  [--archive_path=/PATH/FROM/ROOT] = absolute path to store the resulting backup

As you see it is capable to create partial backup, but in my example I run it like this to get a full backup of Vicidial:

# /usr/share/astguiclient/ADMIN_backup.pl --archive_path=/root
 
----- Archive path set to /root -----
 
 
----- Mysql dump -----
 
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
script execution time in seconds: 48     minutes: 0.8

If the server has address 192.168.10.3 this will create 192.168.10.3_ALL_1.tar.gz archive that contains a set of archives with database dump and configuration files in their respective paths.

Now transfer it to the destination server (192.168.10.4) via SCP or any other suitable method. For example:

1# scp /root/192.168.10.3_ALL_1.tar.gz root@192.168.10.4:/

Now on the destination server navigate to / folder and extract the Vicidial backup archive:

1# tar -zxvf 192.168.10.3_ALL_1.tar.gz

Inside the main archive there will be separate archives for different parts of Vicidial system:

# ls -l /
[...]
192.168.10.3_BIN_1.tar
192.168.10.3_CONF_1.tar
192.168.10.3_LINUX_1.tar
192.168.10.3_SOUNDS_1.tar
192.168.10.3_VOICEMAIL_1.tar
192.168.10.3_WEB_1.tar
192.168.10.3asterisk1.gz
[...]

In tar archives config files are packed in their respective paths so in order restore Vicidial configuration files just unpack the .tar archives:

1# tar -xvf *.tar

Now extract and restore Vicidial database dump:

1
2
3
# gunzip 192.168.10.3asterisk1.gz
192.168.10.3asterisk1
# mysql -u root asterisk < 192.168.10.3asterisk1

At this point you have configuration files and database from the old server applied on the new one. We must change IP addresses in all configuration files and in database before we can use the new server.

To change IP address in all Vicidial configuration files and database run:

# /usr/share/astguiclient/ADMIN_update_server_ip.pl
Previous astGUIclient configuration file found at: /etc/astguiclient.conf
 
Would you like to use interactive mode (y/n): [y]
 
STARTING SERVER IP ADDRESS CHANGE FOR VICIDIAL...
 
Old server IP address or press enter for default: [192.168.10.4] 192.168.10.3
 
server IP address or press enter for default: [192.168.10.4]
 
  old server_ip:      192.168.10.3
  new server_ip:      192.168.10.4
 
Are these settings correct?(y/n): [y]
Writing change to astguiclient.conf file: /etc/astguiclient.conf
 
STARTING DATABASE TABLES UPDATES PHASE...
  Updating servers table...
     |0E0|UPDATE servers SET server_ip='192.168.10.4' where server_ip='192.168.10.3';|
	 [...]

This script is interactive and will guide you through the process.
Make sure there are no errors in the script’s output.
Now reboot your server and check functionality!

Migrate Vicidial data from Vicibox 8 to Vicibox 9

1. Upgrade database schemaVicibox 9 has new and altered tables and functions so you will have to add them to the restored database before you can use system

2. Run /usr/share/astguiclient/ADMIN_update_server_ip.pl again

3. Try to log in as agent. If you have the error There is a time synchronization problem with your system, please tell your system administrator – fix it as described here.

4. If you have the error Delays on agent login No one is on your session 8600051 check that in Admin -> Servers you have correct Asterisk Version set:

For Vicibox 8 it will be 11.21.2.-vici  but for Vicibox 9 it should be at least 13.29.2-vici up to 13.38.0-vici

Correct version of the Asterisk you can obtain by:

1# asterisk -rx “core show version”

Set the correct version in Vicidial’s settings make sure the error is gone.

backup

That’s all there is to it. If you have any questions feel free to comment here.

-Chris

How to – Set the time zone for PHP and DB in the reports page for Vicidial

PHP Time

How to – Set the time zone for PHP and DB in the reports page for Vicidial

Syncing your time zone for ViciDial or CyburDial

This is a pretty simple process, but if you are unfamiliar with linux, it can be quite overwhelming to figure out how to solve this issue when it relates to vicidial. The steps below will go over how to fix this issue:

ViciDial Cluster
ViciDial Cluster

Login to your server and follow these commands:

  • cd /etc/php7/cli
  • nano php.ini
  • pg dn about 24 times until you see the picture below
Vicibox10

Do the same thing for /etc/php7/apache

  • cd /etc/php7/apache
  • nano php.ini
  • pg dn 24 times and change accordingly

That’s all there is to it. Check out our blog for other useful information on vicidial

And that’s it, you’re finished

Quantum Mechanics broken down in such a way that someone of average intelligence can actually understand it

A “no math” (but seven-part) guide to modern quantum mechanics

Welcome to “The curious observer’s guide to quantum mechanics”–featuring particle/wave duality.

MIGUEL F. MORALES – 1/10/2021, 9:00 AM

Quantum mechanics is complex, fold-your-brain stuff. But it <em>can</em> be explained.
Enlarge / Quantum mechanics is complex, fold-your-brain stuff. But it can be explained.Aurich Lawson / Getty Images

Exploring the quantum world

View more stories

Some technical revolutions enter with drama and a bang, others wriggle unnoticed into our everyday experience. And one of the quietest revolutions of our current century has been the entry of quantum mechanics into our everyday technology. It used to be that quantum effects were confined to physics laboratories and delicate experiments. But modern technology increasingly relies on quantum mechanics for its basic operation, and the importance of quantum effects will only grow in the decades to come.

As such, the time has come to explain quantum mechanics—or, at least, its basics.

My goal in this seven(!)-part series is to introduce the strangely beautiful effects of quantum mechanics and explain how they’ve come to influence our everyday world. Each edition will include a guided hike into the quantum mechanical woods where we’ll admire a new—and often surprising—effect. Once back at the visitor’s center, we’ll talk about how that effect is used in technology and where to look for it.

Embarking on a series of quantum mechanics articles can be intimidating. Few things trigger more fear than “a simple introduction to physics.” But to the intrepid and brave, I will make a few promises before we start:

  • No math. While the language of quantum mechanics is written using fairly advanced math, I don’t believe one has to read Japanese before you can appreciate Japanese art. Our journey will focus on the beauty of the quantum world.
  • No philosophy. There has been a fascination with the ‘meaning’ of quantum mechanics, but we’ll leave that discussion for pints down at the pub. Here we will focus on what we see.
  • Everything we encounter will be experimentally verified. While some of the results might be surprising, nothing we encounter will be speculative.

If you choose to follow me through this series of articles, we will see quantum phenomena on galactic scales, watch particles blend and mix, and see how these effects give rise to both our current technology and advances that are on the verge of making it out of the lab.

So put on your mental hiking boots, grab your binoculars, and follow me as we set out to explore the quantum world.

What is quantum mechanics?

My Mom once asked me, “What is quantum mechanics?” This question has had me stumped for a while now. My best answer so far is that quantum mechanics is the study of how small particles move and interact. But that’s an incomplete answer, since quantum effects can be important on galactic scales too. And it is doubly unsatisfactory because many effects like superconductivity are caused by the blending and mixing of multiple particles.Advertisementhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

In many ways, the role of quantum mechanics can be understood in analogy with Newtonian gravity and Einstein’s general relativity. Both describe gravity, but general relativity is more correct—it describes how the Universe works in every situation we’ve managed to test. But 99.99 percent of the time, Newtonian gravity and general relativity give the same answer, and Newtonian gravity is much easier to use. So unless we’re near a black hole, or making precision measurements of time with an optical clock, Newtonian gravity is good enough.

Similarly classical mechanics and quantum mechanics both describe motions and interactions. Quantum mechanics is more right, but most of the time classical mechanics is good enough.

What I find fascinating is that “good enough” increasingly isn’t. Much of the technology developed in this century is starting to rely on quantum mechanics—classical mechanics is no longer accurate enough to understand how these inventions work.

So let’s start today’s hike with a deceptively simple question, “How do particles move?”

Kitchen quantum mechanics

Some of the experiments we will see require specialized equipment, but let’s start with an experiment you can do at home. Like a cooking show, I’ll explain how to do it, but you are encouraged to follow along and do the experiment for yourself. (Share your photos in the discussion below. Bonus points for setting the experiment up in your cubicle/place of work/other creative setting.)

To study how particles move, we need a good particle pea shooter to make lots of particles for us to play with. It turns out a laser pointer, in addition to entertaining the cat, is a great source of particles. It makes copious amounts of photons, all moving in nearly the same direction and with nearly the same energy (as indicated by their color).

If we look at the light from a laser pointer, it exits the end of the laser pointer and moves in a straight line until it hits an obstacle and scatters (or hits a mirror and bounces). At this point, it is tempting to guess that we know how particles move: they exit the end of the laser like little ball bearings and move in a straight line until they hit something. But as good observers, let’s make sure.

Let’s challenge the particles with an obstacle course by cutting thin slits in aluminum foil with razor blades. In the aluminum foil I’ve made a couple of different cuts. The first is a single slit, a few millimeters long. For the second I’ve stacked two razor blades together and used them to cut two parallel slits a few tenths of a millimeter apart.Advertisementhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

Horizontal slits in aluminum foil made with razor blades. The upper slit is from a single blade, while the lower is from two blades taped together.
Enlarge / Horizontal slits in aluminum foil made with razor blades. The upper slit is from a single blade, while the lower is from two blades taped together.Miguel Morales

In a darkened room, I setup my laser pointer to shoot across the room and hit a blank wall. As expected I see a spot (provided the cat’s not around). Next, I put the single slit in the aluminum foil in the laser’s path and look at the pattern on the wall. When we send the light through the single slit, we see that the beam dramatically expands in the direction perpendicular to the slit—not along the slit.

Laser light passing through the single horizontal slit is spread vertically
Enlarge / Laser light passing through the single horizontal slit is spread verticallyMiguel Morales

Interesting. But let’s press on.

Now let’s put the closely spaced slits into the laser beam. The light is again spread out, but now there is a stripey pattern.

Laser light passing through the two horizontal slits produces the distinctive stripes of quantum mechanics.
Enlarge / Laser light passing through the two horizontal slits produces the distinctive stripes of quantum mechanics.Miguel Morales

Congratulations! You’ve just spotted a quantum mechanical effect! (whoo hoo animated emoji) This is the classic double-slit experiment. The stripey pattern is called interference, and is a telltale signature of quantum mechanics. We will see a lot of stripes like these.

Now you have probably seen interference like this before, since water and sound waves show exactly this kind of striping.

Water waves from two sources (one visible in green, the other hidden behind the presenter). The circular waves overlap into regions of extra strength (bright stripes) and regions where the waves cancel each other out (dark bands). The formation of stripes is a signature of wave motion.
Enlarge / Water waves from two sources (one visible in green, the other hidden behind the presenter). The circular waves overlap into regions of extra strength (bright stripes) and regions where the waves cancel each other out (dark bands). The formation of stripes is a signature of wave motion.Veritasium

In the photo above, each ball creates waves that move out in a circle. But a wave has both a peak and a trough. In some places the peak of the wave from one of the balls always coincides with the trough from the other (and vice versa). In these areas the waves always cancel out and the water is calm. In other locations the peaks of the waves from both balls always arrive together and add up to make a wave that is extra tall. In these locations the troughs also add up to be extra deep.

So does the fact that we are seeing stripes when our laser pointer goes through two slits mean that particles are waves? To answer that question, we’re going to have to look more closely.

ARS VIDEO

Quantum mechanics fractals – “chaotic systems” | Ars Technicahttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.htmlhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

The professional kitchen

The double slits served two purposes: each slit spread the beam out (as we saw when we went through just one slit), while the two closely spaced slits provided the particles with a choice as to which slit to pass through. We can use a different experimental setup to more clearly separate the act of spreading the beam and forcing a choice, and this bigger setup will allow us to study in detail what is happening. (This is the moment in the cooking show where they pull out some obscure cooking tool—like a crème brûlée torch—that you’re unlikely to have at home.)

The professional version of the two slits in aluminum foil. Here the light beam is split by a half silvered mirror and sent into left and right paths. These paths are then recombined to show stripes.
Enlarge / The professional version of the two slits in aluminum foil. Here the light beam is split by a half silvered mirror and sent into left and right paths. These paths are then recombined to show stripes.Miguel Morales

Keeping the laser, let’s use a lens to spread the beam out, and then a half-silvered mirror to give the particles a one-way-or-the-other choice. We then use a couple of good mirrors and another half-silvered mirror to recombine the beams before they reach a wall or screen, as shown above. If one of the mirrors is mis-aligned ever so slightly, we will again see stripes (places where waves add together and cancel out). In the 38 second video below I show the working version.https://player.vimeo.com/video/396805337?color=ff9933

What I find fun about this setup is that it is big. I don’t need a microscope to mess with it. For convenience, I made this table top sized, but we could have made it huge. In the LIGO experiment used to detect gravitational waves, the light is sent down arms 4 km long, and with radio light we’ve used the Cassini spacecraft as it approached Saturn as a mirror. Quantum mechanics is not limited to the microscopic world.

But let’s play with our human sized experiment, and see some more quantum mechanical effects.

Slow mo

The first thing I’d like to do is to look very carefully at the stripey pattern. Instead of just looking at the screen, let’s use a sensitive camera so we can watch it as it develops. When the laser is bright, the camera will immediately capture stripes. But if we make the room very dark and turn down the strength of the laser, we will notice that light is a not smoothly distributed, but appears at individual ‘points’—in slow motion we can see the arrival of individual photons. They look like small red paintballs hitting the camera sensor.Advertisementhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

Since this is a video camera, we have a record of where the photons hit. If we play the video, it looks like we are watching someone make a pointillism painting. Individual spots are appear on the screen without an obvious pattern. If we keep where they landed lit up by summing the video frames, the spots start to fill in the stripey pattern we saw when we had the laser turned all the way up.

The stripy pattern is there, even if we only generate it one photon at a time.

Which way did he go?

In both the double slit experiment and the bigger lab setup, the light can take two different paths: the left slit/path or the right slit/path. But what we see is the result of individual particles hitting the screen. So which path do the individual particles take?

If I block either of the paths, the stripes go away. The same thing happens with the aluminum foil if you block one of the slits with an index card (though this requires a very steady hand). We only see stripes if the light can travel both paths and interact before hitting the screen.

This gets even stranger if we turn down the intensity of the light. We can turn the laser down so low that only one particle of light is traveling through the experiment at a time. No matter how low we turn the light, the stripes only appear when each individual photon can take both paths. (Even if we limit it to one particle at a time as in the video above, the particles will slowly add up to the pattern seen above.)

Even though a single photon hits the screen like a little paintball, where it hits the screen (in the bright stripes) shows that that every photon took both paths.

If your head isn’t hurting yet, you’re not paying attention. But, it is important to register all of the markings on a strange bird before looking in the guidebook, so let’s look a little more closely before we explain what is happening.

Color

The stripes from sending red, orange, and green lasers through the same pair of slits. Notice how the green dots are closer together.
Enlarge / The stripes from sending red, orange, and green lasers through the same pair of slits. Notice how the green dots are closer together.MIT Dept. of Physics

What if we use a different color laser pointer? Replacing the red laser pointer with a green one, we see the same set of stripes but now the stripes are closer together. The stripes are even closer together for a blue laser pointer. As the wavelength of the light gets shorter, the spacing of the stripes gets narrower.Advertisement

We can repeat these experiments, looking at the arrival of the photons in slow mo and blocking different paths, and everything works the same way with the exception of the stripes being closer together.

But looking at the slow mo video of the particles hitting the camera begs the question of how hard are the photons hitting? Are there hard hits and soft hits? The standard camera sensor we’ve been using can’t measure how hard the photons hit. But there are (expensive) detectors that can measure how much each pixel heats up when it is hit by a photon. The heat deposited by the photon directly tells us how hard the photon hit—how much energy it had.

If we put one of these fancy detectors in our experiment, we will see that all of the red photons have the same energy. All green photons have more energy than the red photons, but the same energy as all the other green photons. Blue photons are even more energetic. The color directly tells us how hard a photon will hit the detector.

So we have a pair of observations associated with color. As the color becomes more blue, the spacing of the stripes becomes closer and the energy of each impact with the screen increases. Energy is closely associated with the spacing of the stripey patterns.

So what is happening?

The stripes we are seeing are a hallmark of waves. Sound waves and water waves both exhibit this kind of striping. If you have ever heard loud and quiet places at a concert or while listening to the stereo and walking around the room, you’ve heard the stripes of wave interference. You can recreate this experience by playing a single note from a synthesizer through a pair of stereo speakers. The two speakers act like the two slits in the aluminum foil; by moving your head left to right you can hear the loud (bright) and soft (dim) parts of the stripes (try a note a couple of octaves above middle C). We saw the same wave effect in water waves earlier.

As the pitch of the sound gets higher—or the water waves become shorter in length—the distance between the bright stripes will get closer, just like when we changed the laser color. And if we block the waves in one of the paths (by pulling the speaker cord on one of the speakers or stopping one of the sources of waves in water) the stripes will go away. All the experiments we did that tested how the particles moved from the laser pointer to the screen show that the particles move like waves.

However, we also saw the light hitting the screen like little paintballs. They hit at a spot and deposit a set amount of energy depending on their color. All of the experiments about how the particles hit the camera show that they behave like little ball bearings.

This is the fundamental mystery of quantum mechanics: particles move like waves and hit like particles.

The immediate question is whether this is something special associated with light particles, or whether it is true of all particles. The short answer is it is always true. It is true for any kind of particle, under any circumstance, all the time. Photons, electrons—even molecules. Particles always move like waves and hit like particles.https://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.htmlhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

Why physicists are rarely invited to parties

Clearly this statement—that all particles move like waves and hit like particles—requires intensive testing. My favorite example involves neutrons; we can repeat the experiment we did with laser light to see if neutrons behave the same way. To do this, we need two things: a good neutron pea shooter, and some neutron mirrors.

We are all very lucky that neutron laser pointers don’t exist. But there is a very good source of neutrons: your friendly neighborhood nuclear power plant. Nuclear reactors create copious amounts of neutrons, and the plant operators already pipe some of the neutrons out of the reactor area because they need to measure the neutrons to keep track of the reactor. If you bat your eyelashes and get security clearance, they will let you pipe off some of the neutrons too.

You then need to throw away both the low energy and high energy neutrons to make a stream of neutrons of the same energy (like photons of the same color in a laser). Once you’ve done that, you have a great neutron pea shooter that produces a lot of neutrons of nearly the same color (it is probably for the best that it is shackled to an immovable nuclear reactor).

Now we need some neutron mirrors. One can use crystals to reflect neutrons, but because the wavelength of the neutrons is very small, alignment of the mirrors becomes a critical issue. This is where the semi-conductor industry comes to our rescue. Computer chips are built on silicon wafers that are cut from large, perfect crystals.

Instead of slicing these crystals into wafers, we can cut away half of the crystal to leave three ‘fins’ that act like the mirrors of an interferometer and are held in perfect alignment by the remaining crystal.

  • A perfect crystal of silicon. These are usually sliced into thin wafers for making computer chips, but they can instead be machined to create a perfect crystal interferometer. De Agostini Editorial
  • The silicon after it’s been cut and polished to form an interferometer. NIST
  • The paths of the neutrons through the perfect crystal interferometer. Miguel Morales

Previous SlideNext Slide

When we send our single-energy neutrons through the crystal mirrors, we see exactly the same pattern of interference that we saw with light. We can repeat all of the experiments we did with light and we get exactly the same results. Even when we send one neutron at a time through the crystal, we see the wave-like stripes. With the right hardware, we can extend this beyond photons and neutrons to test many different kinds of particles. And when we do, we find that all particles move like waves and hit like particles.

Neutrons are a particularly interesting particle for several reasons. First, they’re heavy and slow. This makes them more sensitive to gravity. We can rotate the crystal so instead of left and right paths we have top and bottom paths as shown below. As a neutron climbs uphill, it slows down (becomes more red), and as it descends it speeds up (becomes more yellow). So the neutron wave on the upper path will travel more slowly than the neutron wave on the bottom path.Advertisementhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

We still see the stripes when the waves recombine, but because the neutron wave on the upper arm was slow and arrived a little late the stripes are shifted side-to-side. The amount of this shift is one way to measure the strength of gravity.

(While very precise, there are currently better ways of measuring gravity than with neutrons. However, many of them use exactly the same kind of experimental setup, just with the neutrons replaced with Rubidium atoms and mirrors made out of light.)

Neutrons are also interesting because they are composite particles—a neutron is made up of three quarks. Even though it is made up of sub-particles, it still moves like a wave. Modern experiments have taken this much farther and regularly send Cesium atoms (more than 180 protons+neutrons+electrons), and even large molecules like Bucky Balls (60 atoms) and phthalocyanine with thousands constituent particles through similar interferometer setups. Even these huge composite particles move like waves and produce the telltale stripes in an interferometer.https://cdn.arstechnica.net/wp-content/uploads/2020/03/Molecule-interference.m4v

While getting a narrow energy range becomes very hard as the mass increases, these large composite objects behave exactly the same way as the photons from our laser pointer. A single Bucky Ball will move like a wave and take all of the paths through the experiment, then hit like a particle. The telltale stripes of wave motion, and the energy-dependent stripe spacing, show that even larger objects move like a waves until they reach the detector, where they hit like particles.

Back at the Visitor’s Center

Congratulations on surviving your first guided walk through the spooky woods of quantum mechanics! So what did we see on our first excursion? We observed that when we send one particle at a time through an experiment, it will take both paths just like a wave, but when we detect it, it will hit like a particle. How hard it hits, its energy, is related to the wavelength of the wave. As the energy goes up (shorter wavelength), the stripes become more closely spaced. This behavior is consistent for all kinds of particles, from photons of light to electrons to composite particles like neutrons, atoms, or molecules. It is a fundamental feature of the way nature works.

Now that we’re back at the visitor’s center, let’s talk about how these observations apply to our technological world. The wave nature of particles appears everywhere. The iridescence of hummingbird feathers and soap bubbles, the anti-reflection coatings on camera lenses, and the optics of electron microscopes all rely on the wave-like quantum motion of particles.

But a good technological example is the optical gyroscope. Gyroscopic guidance systems are used in airplanes, satellites, and rockets. They originally used physical spinning hardware to keep track of orientation, but they have nearly all been replaced by optical gyroscopes because they are cheaper, more sensitive, and more reliable.

In the neutron interferometer, we noticed that the stripes shifted when the wave that went through the upper arm arrived at the final mirror a little late—in that case because gravity slowed down the neutrons in the upper arm. We can get a similar effect using light if the interferometer rotates while the photon is traversing the experiment.Advertisementhttps://946fac658dd4b954a829965fa9e63e19.safeframe.googlesyndication.com/safeframe/1-0-37/html/container.html

  • If we rotate the interferometer clockwise, because light takes some time to travel through the arms the clockwise path is a little longer than the counter-clockwise path. Like in the vertical neutron interferometer, the light waves in the clockwise path arrive a little late, causing the stripes to shift in position. How far the stripes shift depends on the rotation speed. Morales
  • Fiber optical gyroscopes can be incredibly compact and robust. Caltech

Previous SlideNext Slide

Because the final mirror has moved during the experiment, the clockwise arm is slightly longer than the counter-clockwise arm, so the clockwise wave arrives a little late and the interference pattern shifts. The faster the experiment rotates, the farther the stripes shift. Measuring how far the stripes shift directly tells us the rotation speed. Changes in orientation in whatever the device is attached to—be it a car, a plane, or a satellite—will rotate the interferometer, and add an additional shift to the stripes.

To make the gyroscope more robust, we can make all the lasers, mirrors, and paths out of fiber optics. And to make it more sensitive, we can have the light travel in many clockwise and counter-clockwise loops before recombining. Fiber gyroscopes work because a photon of light moves like a wave and will take both the clockwise and counter-clockwise paths and produce stripes when recombined. Fiber gyroscopes rely on quantum mechanics to work.

The coming weeks

One of my goals in these articles is to show some of the wonders hiding in the quantum mechanical woods. In this article we stayed pretty close to the nature path, but in the coming weeks I’d like to go deeper into the woods and show you things that are usually reserved for physics graduate students. I think we can do this without the math that is usually used, and really see some of the beauty that arises when you look closely at the natural world.

In next week’s article, we will expand on the idea of particle waves and look at particle mixing. This will lead us to understanding how continuous wave LIDAR works, and we’ll see one of the great inventions that’s only recently made its way out of the lab—the optical comb. In the subsequent weeks, we’ll look at particle introverts and extroverts, interference on extra-galactic scales, artificial atoms, quantum cryptography, and more. So come back next week for another hike into the quantum mechanical woods.

FAQ

But which path did the particle really take? The experiments show that the particles really take both paths. Despite much confusion (even among some physicists), this is the answer. But the question is based on a faulty mental image. The question assumes that a particle is really a little ball bearing, and thus must have chosen one path or the other. But this mental image is wrong. Particles really behave like waves when in motion. Asking which path a tsunami wave took when traveling between Hawaii and California really makes no sense—it is spread out. Similarly, asking which path the particle really takes makes no sense; it moves like a wave so it naturally takes all of the available paths.

But isn’t the stripy pattern we see with light a classical effect? Yes and no. In quantum mechanics, there is nothing special about a photon of light vs. any other kind of particle—they all move like waves and hit like particles and they will all make interference stripes. What is different is the history of our understanding. Before the invention of quantum mechanics there was a wave-theory of light—Maxwell’s electrodynamics.

But at the time electrons and protons were understood as little ball bearings, and no wave-like classical theory for electrons and protons was ever developed (all other particles were discovered after the invention of quantum mechanics). Our lack of a wave-like classical theory for electrons and protons is largely a fluke of history. So while quantum mechanics sees all particles as behaving in the same way, due to history, there is a simplified classical theory for photons but no simplified theory for the other particles. To me, the stripes clearly show the wavelike motion of particles, and this is one of the hallmarks of quantum mechanics, so it is a quantum mechanical effect.

Miguel F. Morales is a Professor of Physics at the University of Washington in Seattle.

Cloud Based Predictive Dialer: What to Know Before You Buy

Cloud Based Predictive Dialer: What to Know Before You Buy

Cloud Based Predictive Dialer: What to Know Before You Buy

There are four words that every business owner loves to hear: Save time and money. It’s not only music to their ears, but money in their pockets. That’s why so many business leaders are adding a cloud based predictive dialer to their marketing, sales, and customer management suites.

Increased call agent efficiency, real-time interactions, better customer experience, and improved lead management are just a few of the ways businesses are enjoying the benefits of their outbound dialer.

Make an informed decision about predictive dialing and the future of your enterprise. Keep reading to learn everything you need to know about these types of dialers.

What is a predictive dialer?

A predictive dialer is a software that dials a list of phone numbers quickly and accurately and can also return calls to your call center agents. It is a software designed to accurately predict agent availability, screen out busy signals, answering machines, and disconnected phones, and optimize the outbound call pace to connect sales representatives with leads fast. Think of it as IVR for outbound calling.manual vs. predictive dialer

Image Source

Sometimes called an “outbound dialer” or a “hosted dialer,” these systems use machine-learning algorithms so you can spend less time between conversations for your agents, as well as wait times for your customers when no agent is available. In the background, the software analyses answered calls, dropped calls, the number of active agents, and more, filtering out unproductive calls so your agents get more talk time.

While you can purchase physical on-premise hardware to accomplish these tasks, most modern companies use cloud hosted dialers instead, often integrating their software with their overall contact center platforms.

This software is a workhorse for your call center and sales strategy alike.

Why invest in a cloud based predictive dialer?

With so many business solutions being tossed at you daily, it can be hard to navigate and understand what will actually benefit your bottom line and provide a decent ROI. We think a dialer of this type can be a smart choice for any business currently using or considering adding a call center. 

1. You’re busy.

Managing your sales team, maximizing profits, delighting customers. Your plate is full. Unless you have a bunch of time to waste on hacking systems to maximize your call center agent’s task lists, you’re going to spend a lot of unnecessary energy training your staff to do mediocre rather than great work.

2. You want your sales team to be more efficient.

By automating the process of calling customers, your agents are no longer wasting their time dialing numbers. This increased efficiency means more output from your agents per hour, exponentially improving agents’ productivity by reducing their idle time and accelerating sales (your agents will spend more time connecting with potential customers than re-dialing dropped calls).

3. You want to manage your leads in a smart way.

You can integrate a cloud predictive dialer across different platforms such as phone, email, chat, mobile, social and more. This gives you better, smarter lead management. An outbound dialer can be core to unifying your messaging and communications across multiple channels.

4. You strive to provide exemplary customer service.

Cloud based dialers boast specific features that allow you to contact your leads at times that are convenient to them. Perhaps in the morning at home, over the weekend via an SMS / text message, or during the day at their office number. Or maybe, they just want to leave you a voicemail.

Stronger customer service = better brand affinity = more prospects for long term sales. You can turn your contact center into something powerful that delights your customers rather than annoys.

5. You want to reduce operational costs.

Who doesn’t? ?

With the help of a cloud based predictive dialer, you can reduce the number of agents on staff and call lines without sacrificing any results. 

One more time for the folks in the back: these types of dialers make it possible for your call center to make more live calls than ever with less staff to make it happen.

Progressive vs. Predictive vs. Auto dialer

Progressive, predictive, and auto dialers initiate outbound calls from a contact list automatically and sequentially while also transferring calls to live agents.

These types of dialers don’t wait for the agent to let the system know that they’re ready for the next call. Instead, they optimize their dialing modes to minimize the gap between your agent hanging up with one lead and connecting with the next.

Let’s say that the software has deduced that most phone calls last an average of 60 seconds. Moreover, it takes roughly 10 seconds for the system to dial a new telephone number and hear “Hello” from the person on the other end. In a predictive dialing system, the software will initiate the next call at the ~50-second mark. Once the agent hangs up with lead 1, they’ll be prepped and ready to great lead 2, sparing no idle second in between – which means you get real-time communication.

Progressive dialers, on the other hand, initiate outbound calls for each available agent. To meet the demand for increased outbound calls, they’ll need to deploy additional agents. Similarly, an auto dialer distributes connected calls among available reps, whereas a dialer that is predictive dials multiple contacts simultaneously to increase the odds of establishing a connection. For example, If the software has learned that an average of 1 out of every 4 calls picks up, it might dial four numbers at once.

Predictive Dialer Pricing

Through our rigorous research and testing, we have found that the typical dialer cost ranges from $100 per user per month and up. Most software systems will build custom quotes for you, your business, and your business goals, so don’t be surprised when the specifics around dialer pricing are hard to come by. 

A customized price is an industry norm, but you can find tiered pricing options available at hosted dialers like Genesys, ChaseData, CyburDial and dialerAI. A cheap dialer of this type can be uncovered with a little digging and comparing price plans.

CRM Integrations

You might think it is important to find a predictive dialer with a CRM, which can be a smart tactic to further arm your call agents with the right information they need to close a big sale. Luckily for you, most of these software systems can integrate seamlessly with popular CRMs like Salesforce.

The combination of a CRM + dialer means you’ll be able to quickly organize lead data, sales info, customer history, show the caller ID and create a superior customer engagement environment for them along the way.

Country-Specific regulations

Adhering to legal compliance can be a huge barrier to self-manage without the help of a cloud based predictive dialer. Just like call recording, there are specific legislations for automatic dialing as well.

In 1991, the Telephone Consumer Protection Act was passed, which prohibits the use of an automatic telephone dialing system to contact a telephone number without express prior consent, to hinder practices like telemarketing. This has continued to evolve into the National Do Not Call registry, also known as the DNC registry. You don’t want to dial numbers on this list—or those of parties who haven’t given you permission (dialing “accidents” aren’t an effective legal defense). With the right tool, you can easily adhere to these regulations without fear of penalties.

Here are few country-specific call center dialer regulations to be aware of:

The Best Predictive Dialers

When we set out to test the best predictive dialer software, we had three main criteria: 

  • Robust feature sets
  • Network reliability
  • Great customer support and service

After taking multiple dialer options for a spin, we’ve determined the following as the three best options on the market.

1. Five9

Five9 differentiates itself with its extensive cloud expertise and comprehensive set of integrated capabilities. They claim they can “make geniuses of your agents” and we fully agree. Not only will their solutions serve your customers well, but they’ll also serve you, as their customer, well—between instant chat, in-person training, and telephone support available 24/7/365, they’ll never leave your question unanswered.

five9 predictive dialer

2. Genesys 

Sales dialer reviews agree: Genesys is the Swiss army knife of omnichannel engagement, delivering a better customer experience while improving operations and reducing capital costs. Note that a power dialer is not included in this software.

genesys predictive dialer

3. NICE inContact

NICE inContact’s hosted call center software helps you excel at responding faster to consumer expectations. Customers typically love the various reporting functionalities (very customizable) and the overall useability of the software’s dashboard. Pro tip: With this platform, you can control which hold music the customer on the phone will get, which is a nice touch.

nice incontact predictive dialer

4. CyburDial

CyburDial’s cloud based contact center software is an all-in-one solution that gives you capabilities such as outbound/inbound/blended/press one/survey over VoIP, Chat or Email all integrated directly into the dialer. Along with built in softphone that requires no additional downloads such as Eyebeam or X-Lite. CyburDial also supports custom API integrations such as live leads directly to your agents.

CyburDial
CyburDial Agent Interface

Who else gets top marks?

While Five9, Genesys, CyburDial and NICE inContact rank as the best predictive dialers, we also thought AspectChaseDataConvoso, Cyberdialer and dialerAI were up to snuff. 

Benefits of a cloud dialer can’t be understated

A cloud based dialer can improve productivity and increase your contact rate while respecting compliance regulation. It takes the heavy-handedness out of routing calls according to agent availability, maximizing efficiency, and giving you the time, space, and energy to focus on bigger goals. The right software will give you a single number to take calls on, keep data and communications in sync across devices, and unify your phone, text, and social content seamlessly, while offering some key features your team needs, such as caller ID, callback and many others.