Category Archives: VOIP

Shared Voicemail Boxes

1/ Case: 

I have one voicemail box that I would like to share across many extensions, with S500 endpoints. I’ve created a virtual extension with VM, and have set the mailbox to the virtual extension voicemail mailbox for each extension.

The MWI works, the BLF I’ve created works, the only thing that does not work is the physical voicemail hard button on the phone. it lights and flashes correctly, but just dials *97, which does not work since the extensions do not have their voicemail is setup.

can I reprogram the hard button for vm? to *98###? or is there another option?

2/ Solution:

MWI and VM hard button working with a shared VM box + Sangoma Phones

Application => Extensions => Advanced
Mailbox ####@device (your shared VM)
Voicemail Extension *98#### (your shared VM)

Settings => Endpoint Manager =>Basefile Edit (Scroll down to the bottom) => Sangoma >S###  (your Sangoma phone type)
<P33>__voicemail__</P33> # Voice Mail UserID(UserID for voice mail system)
Changed to
<P33>__voicemailExt__</P33> # Voice Mail UserID(UserID for voice mail system)

Prevent hacking thankuohoh in Elastix/Freepbx – Many unwanted outgoing calls

Hack thankuohoh generates a high volume of outgoing calls on an Elastix switch which can cause a high cost in line billing.

The hack takes advantage of a vulnerability in the Elastix A2billing package (effect with elastix 2.x and old Freepbx version). When reviewing the call reports will appear something similar as the image:

thankuohoh

1/ This hack can be detected by reviewing the file /etc/asterisk/extensions_custom.conf and find the following lines:

[thanku-outcall]; thankuohoh
exten => _.,1,Macro(user-callerid,LIMIT,EXTERNAL,); thankuohoh
exten => _.,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}); thankuohoh
exten => _.,n,Set(_NODEST=); thankuohoh
exten => _.,n,Macro(dialout-trunk,2,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,3,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,4,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,5,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,6,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,7,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,8,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,9,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(outisbusy,); thankuohoh

-Once the malicious code was removed, it is recommended to apply a security layer in the portal’s web access as indicated in the following:

2/ Configure Apache in Elastix to request user and password when accessing the web portal

The following will show how to configure Apache in Elastix to request user and password every time someone tries to enter the web portal.

This is convenient on an Elastix switch since it adds an extra layer of security and prevents it from being scanned or indexed and that can take advantage of some vulnerability that has the html code.

-To begin with the configuration, enter the console of the server and type the following:

vi /etc/pam.d/su

-Once we enter the file, we uncomment the line “auth required pam_wheel.so use_uid” and record when exiting as it appears in the image:

Passwd_apache1
– We create the user that will be used to validate the entrance to the web page. For this step we created a User Wheel and its name would be “adminportal”. In console type the following:

adduser -G wheel -m -s /bin/bash adminportal

-We configure the password:

passwd adminportal

-We execute the following command line to edit the file:

vi /etc/httpd/conf.d/elastix.conf

-Localizamos the line “RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}” and we add the following code:

AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /usr/local/apache/wwwpasswd
Require user elastix adminportal

-We should stay as shown in the following image, and record:

Passwd_apache2

 

– We added the user to apache authentication and configured his password by executing the following lines:

mkdir /usr/local/apache

htpasswd -c /usr/local/apache/wwwpasswd adminportal

– Finally, we restart the Apache service so that the changes are applied:

service httpd restart

-With this, we can already try to enter the door of Elastix and ask us for password only when entering the site.

Passwd_apache3

3/ Moving/Deleting A2billing and VtigerCrm in /var/www/html

 

For more information, you can access the following link:

Http://bugs.elastix.org/view.php?id=2169

I hope this guide is useful to you. (Source from Internet of miguelmuzquiz)

 

 

 

 

 

 

 

 

 

How to reset FreePBX admin GUI password.

#amportal a u xxxxxxxxxxxxxxxx

– The amportal a u command will unlock the GUI login of FreePBX to let you into the FreePBX GUI without the username and password.  This is handy if you lost or misplaced your FreePBX GUI username or password and need to get into the GUI to change or setup a new user.  You need to replace the xxxxxxx with your PHP session ID.  Follow the steps below.

  • Bring up the main login page to FreePBX in your browser.  Such as http://192.168.0.2/admin
  • Do a “ctrl a” to highlight the whole page and look to the left center of the screen for some text.  This is your unique php session ID.  Copy this into your clipboard.
  • Go into the linux CLI and type the following command replacing the session ID below with your own.
    [root@localhost ~]# amportal a u ppnr8l1vle32s3q8b79s4n1sp7
    Please wait...
    session unlocked!
    [root@localhost ~]#
  • Go refresh your browser page and it will log you in this one time automatically for you based on that php session ID. Now you can go add or change the FreePBX admin users.

How to get Session ID from Chrome.

#Settings/Advanced Settings/Privacy/Content Settings/All cookies and site data

and then click PHPSESSID

screenhunter_01-feb-09-13-33

Another solution is update column password_sha1 in table ampusers of asterisk database (non-official solution)

#mysql -D asterisk -e “INSERT INTO ampusers (username,password_sha1,sections) VALUES (‘verysafeuser’,’echo -n 'easypassword'|sha1sum|cut -d ' ' -f 1‘,’*’ )”

will work for those without a root password set in mysql, add the -p and -u as appropriate if you have a more secure system.

#Tags: reset freepbx admin password, recovery freepbx admin password, unlock freepbx admin password.

How to integrate Vicidial with Vtiger

Vicidial 2.0.5 Open Source Call Center Suite now includes more integration options with Vtiger 5.0.4:

– ViciDial Agent screen search for lead/account/vendor
– User synchronization of VICIDIAL users to Vtiger user database
– User Group synchronization of VICIDIAL user groups to Vtiger Groups
– Added activity event option(call logging in Vtiger) when going from VICIDIAL to Vtiger Accounts
– Ability to click-to-dial a phone number from a record in Vtiger Account screen to the vicidial agent screen
– Optional script to bulk load leads into Vtiger from a CSV file since Vtiger only seems to want to load 500 at a time:
Vtiger_IN_new_accounts_file.pl (we’ve loaded 10,000s at a time)
– Batch Account synchronization through script to output new leads from Vtiger and update existing leads in the VICIDIAL system:
Vtiger_OUT_sync2VICIDIAL_file.pl then you run the VICIDIAL_IN_new_leads_file.pl script to load the new leads

#################

There are three things in this guide
1-For MySQL
2-Installation of Vtigercrm 5.0.4
3-Integration with VICIDIALNOW VERSION: 2.0.5-173

Let we take these steps one by one.

1-For MySQL

CODE: SELECT ALL
#mysql -u root -p   (it will ask for root password default is vicidialnow)
mysql>GRANT ALL on vtigercrm504.* TO vtiger@'%' IDENTIFIED BY 'vtuser';
mysql>GRANT ALL on vtigercrm504.* TO vtiger@localhost IDENTIFIED BY 'vtuser';
mysql>create database vtigercrm504;
mysql>quit

2-Installation of Vtigercrm 5.0.4

CODE: SELECT ALL
#cd /var/www/html
#rm -r -f vtigercrm
#wget http://voxel.dl.sourceforge.net/sourceforge/vtigercrm/vtigercrm-5.0.4.tar.gz
#gunzip vtigercrm-5.0.4.tar.gz
#tar xvf vtigercrm-5.0.4.tar
#chmod -R 0777 vtigercrm
#cd vtigercrm

* in browser go to the following URL: http://ip-address/vtigercrm/index.php
* enter contact info and click the START button at the bottom of the screen
* in system configuration set the database host to: <ip-address>
* database user/pass: vtiger/vtuser
* database name: vtigercrm504
* change default admin(vtadmin) and standarduser(vtuser) passwords
* click to install vtiger, then follow the on-screen instructions

After successful install it will ask for login into vtiger crm, you can login to test if everything is fine. Password for admin to login is “vtadmin”, we have choosen this in aboive step.

Now we have to patch this new install of vtiger to work with VICIDIALNOW
Note: Make sure to execute these commands in vtigercrm folder

CODE: SELECT ALL
#wget http://www.eflo.net/files/Vtiger504_vicidial.patch
#patch -p1 < ./Vtiger504_vicidial.patch

After this goto admin interface for integration and user synchronization
Admin->System Settings

3-Integration with VICIDIALNOW

CODE: SELECT ALL
Enable Vtiger Integration:  1
Vtiger DB Server IP: <your ip>
Vtiger DB Name: vtigercrm504
Vtiger DB Login: vtiger
Vtiger DB Password: vtuser
Vtiger URL: <yout ip>/vtigercrm

Submit setting and click “Click here to Synchronize users with Vtiger”

This will synchronize all users with VTIGER

Note: After synchronization your VTIGER admin password is replaced wih your VICIDIALNOW admin password.

 

How to install Vicidial on Centos 6.7 (Scratch installation)

1/ Disable Selinux:

# /etc/selinux/config => SELINUX=disabled

2/ Update CentOS and then Reboot:

#yum -y update

#reboot

3/ Install dependencies, supporting software and Perl Modules installation:

#yum -y install rdate unzip zip make patch gcc gcc-c++ subversion php php-devel php-gd gd-devel php-mbstring  php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel httpd libpcap libpcap-devel libnet ncurses ncurses-devel screen mysql-server mysql-devel ntp kernel* mutt glibc.i686 conntrack-tools telnet

#Install php-mcrypt

yum -y install epel-release
yum -y install php-mcrypt
4/ Setup Mysql:

#/etc/init.d/mysqld start
#mysql_secure_installation
#chkconfig mysqld on

#service mysqld stop
#cp /etc/my.cnf /etc/my.cnf.original
#echo "" > /etc/my.cnf
#vi /etc/my.cnf

[mysql.server]
user = mysql
#basedir = /var/lib

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
datadir = /var/lib/mysql
#tmpdir = /home/mysql_tmp
socket = /var/lib/mysql/mysql.sock
user = mysql
old_passwords = 0
ft_min_word_len = 3
max_connections = 800
max_allowed_packet = 32M
skip-external-locking

log-error = /var/log/mysqld/mysqld.log

query-cache-type = 1
query-cache-size = 32M

long_query_time = 1
#slow_query_log = 1
#slow_query_log_file = /var/log/mysqld/slow-queries.log

tmp_table_size = 128M
table_cache = 1024

join_buffer_size = 1M
key_buffer = 512M
sort_buffer_size = 6M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 64M

max_tmp_tables = 64

thread_cache_size = 8
thread_concurrency = 8

# If using replication, uncomment log-bin below
#log-bin = mysql-bin

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
#log-error = /var/log/mysqld/mysqld.log
#pid-file = /var/run/mysqld/mysqld.pid

#########End of file#######

#mkdir /var/log/mysqld
#mv /var/log/mysqld.log /var/log/mysqld/mysqld.log
#touch /var/log/mysqld/slow-queries.log
#chown -R mysql:mysql /var/log/mysqld
#service mysqld restart

5/ Update Timezone and /etc/php.ini:

#rm /etc/localtime

#ln -s /usr/share/zoneinfo/Ameria/New_York /etc/localtime

#ntpdate pool.ntp.org

6/ Setup CPAN and install libraries

#yum -y install perl-CPAN
#yum -y install perl-YAML

#perl -MCPAN -e shell

just press “Enter” for all questions.

install CPAN::Meta::Requirements
install CPAN
reload cpan
install YAML
install MD5
install Digest::MD5
install Digest::SHA1
install readline
install Bundle::CPAN
reload cpan
install DBI
force install DBD::mysql
install Net::Telnet
install Time::HiRes
install Net::Server
install Switch
install Mail::Sendmail
install Unicode::Map
install Jcode
install Spreadsheet::WriteExcel
install OLE::Storage_Lite
install Proc::ProcessTable
install IO::Scalar
install Spreadsheet::ParseExcel
install Curses
install Getopt::Long
install Net::Domain
install Term::ReadKey
install Term::ANSIColor
install Spreadsheet::XLSX
install Spreadsheet::Read
install LWP::UserAgent
install HTML::Entities
install HTML::Strip
install HTML::FormatText
install HTML::TreeBuilder
install Time::Local
install MIME::Decoder
install Mail::POP3Client
install Mail::IMAPClient
install Mail::Message
install IO::Socket::SSL
install MIME::Base64
install MIME::QuotedPrint
install Crypt::Eksblowfish::Bcrypt
quit

At the end before I quit, i usually run all these commands once again to make sure its all installed and to make sure you get the following output for each module:
cpan> install Mail::Message
Mail::Message is up to date (2.115).
cpan> install MIME::QuotedPrint
MIME::QuotedPrint is up to date (3.13).

7/ Installing the Asterisk Perl module

Do NOT use the 0.09 or any newer version, they do not work with ViciDial.

cd /usr/src
yum install wget
wget https://sourceforge.net/projects/testling22/files/asterisk-perl-0.08.tar.gz
tar -zxf asterisk-perl-0.08.tar.gz
cd asterisk-perl-0.08
perl Makefile.PL
make all&& make install

8/ Installing additional software from source

lame, ttyload, iftop, mtop, mytop, htop, sipsak, ploticus and perl-IO-Socket-SSL

LAME is an MP3 encoder used to convert audio files from WAV to MP3. Some prefer GSM usually, but others have standardized on MP3 so you would need this utility to be loaded to use that option.

cd /usr/src
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -zxf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make &&make install

SoX is a cross-platform command line utility that can convert various formats of computer audio files in to other formats.

cd /usr/src
wget http://downloads.sourceforge.net/project/sox/sox/14.4.1/sox-14.4.1.tar.gz
tar -zxf sox-14.4.1.tar.gz
cd sox-14.4.1
./configure
make -s &&make install

ttyload is a simple terminal application that shows the processor load in a graphical time-based scrolling graph. I use it to view how loaded the system is and it visualizes load spikes very well.

cd /usr/src
wget http://download.vicidial.com/required-apps/ttyload-0.5.tar.gz
tar -xvzf ttyload-0.5.tar.gz
cd ttyload-0.5
vi ttyload.h
**insert this #include directive just above the #define directives.**
#include
Save and close the ttyload.h file
make
ln -s /usr/src/ttyload-0.5/ttyload /usr/bin/ttyload

iftop is a good console bandwidth visualization tool that shows you active connections, where they are going to/from and how much of your precious bandwidth they are using.

cd /usr/src
wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
tar -zxf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make &&make install

mtop is a great utility for real-time monitoring of mysql and the queries that are running in it.
Note: the root mysql password must be blank before installing this

cd /usr/src
wget http://download.vicidial.com/required-apps/mtop-0.6.6.tar.gz
tar -zxf mtop-0.6.6.tar.gz
cd mtop-0.6.6
perl Makefile.PL
make &&make install

mytop is is an optional utility for monitoring the threads and overall performance of mysql

Note: the root mysql password must be blank before installing this

cd /usr/src
wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz
tar -zxf mytop-1.6.tar.gz
cd mytop-1.6
perl Makefile.PL
make &&make test &&make install

htop is an interactive process viewer for Linux

cd /usr/src
wget http://downloads.sourceforge.net/project/htop/htop/1.0.2/htop-1.0.2.tar.gz
tar -zxf htop-1.0.2.tar.gz
cd htop-1.0.2
./configure
make &&make install

sipsak is an optional utility that VICIDIAL can use to send messages to an agent’s SIP-based phone(like the Snom 320) to display text on their LCD screen.

cd /usr/src
wget http://download.vicidial.com/required-apps/sipsak-0.9.6-1.tar.gz
tar -zxf sipsak-0.9.6-1.tar.gz
cd sipsak-0.9.6
./configure
make &&make install

ploticus is a free graph creation package that allows you to create line graphs within PNG files simply by creating a config file and a data file. ViciDial uses this package to generate server performance graphs that can be displayed real-time within the ViciDial reports page.

cd /usr/src
wget http://downloads.sourceforge.net/project/ploticus/ploticus/2.42/ploticus242_src.tar.gz
tar -zxf ploticus242_src.tar.gz
cd ploticus242/src/
make clean &&make &&make install
mkdir -p /var/www/html/vicidial/ploticus/
cp pl /var/www/html/vicidial/ploticus/

eACCELERATOR

cd /usr/src
wget http://downloads.sourceforge.net/project/eaccelerator/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make &&make install

#yum -y insatll perl-IO-Socket-SSL

9/ Edit file /etc/php.ini:

error_reporting = E_ALL & ~E_NOTICE
memory_limit = 48M
short_open_tag = On
max_execution_time = 330
max_input_time = 360
post_max_size = 48M
upload_max_filesize = 42M
default_socket_timeout = 360

date.timezone = Ameria/New_York

;Dynamic Extensions
zend_extension=”/usr/lib64/php/modules/eaccelerator.so”
;For CentOS 32-bit: zend_extension=”/usr/lib/php/modules/eaccelerator.so”
eaccelerator.shm_size=”48″
eaccelerator.cache_dir=”/tmp/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

########End of file######

Exit and save php.ini

#mkdir /tmp/eaccelerator
#chmod 0777 /tmp/eaccelerator

10/ Editing the Apache config file

vi /etc/httpd/conf/httpd.conf

To disable logging, change:

CustomLog logs/access_log common
to this:
CustomLog /dev/null common

To enable web browsing of Recordings on Asterisk server, add the below line at last line of httpd.conf

Alias /RECORDINGS/ "/var/spool/asterisk/monitorDONE/"
<Directory "/var/spool/asterisk/monitorDONE">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

Forcetype application/forcedownload

Restart the Apache web server to apply the changes

#service httpd restart
#chkconfig httpd on

11/ Installing DAHDI, LIBRI and Asterisk:

mkdir /usr/src/asterisk
cd /usr/src/asterisk

For asterisk 1.8 (Asterisk 1.8 for vicidial  is still in Beta , use under your own risk)
wget http://downloads.vicidial.com/required-apps/asterisk-1.8.23.0-vici.tar.gz
For asterisk 1.4 (Asterisk 1.4 tested and supported by vicidial)
wget http://downloads.vicidial.com/required-apps/asterisk-1.4.39.1-vici.tar.gz

Dahdi & Libpri
wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

wget http://download.vicidial.com/required-apps/asterisk-1.8.23.0-vici.tar.gz

tar -xvzf asterisk-1.8.23.0-vici.tar.gz
tar -xvzf dahdi-linux-complete-current.tar.gz (Please check kernel version via CLI “uname -r” of CentOS before downloading the correct version of dahdi else DAHDI service is not installed)
tar -xvzf libpri-1.4-current.tar.gz

LibPri installation
cd /usr/src/asterisk
cd libpri-1.4.14
make clean
make
make install
Dahdi Installation
cd /usr/src/asterisk/
cd dahdi-linux-complete-2.6.2+2.6.2/  # b/c my centos version 2.6 so I use dahdi version is 2.6.2
make all
make install
make config
=> Confirm the DAHDI modules are installed for your kernel version, go to /lib/modules/[kernel version]/dahdi/

cd /usr/src/asterisk/asterisk-1.8.23.0
./configure
make clean
make
make install
make samples
cp /usr/src/asterisk/asterisk-1.8.23.0/contrib/init.d/rc.redhat.asterisk /etc/init.d/asterisk

#chkconfig asterisk on

#service dahdi restart
#chkconfig dahdi on
#modprobe dahdi
#lsmod | grep dahdi
#dahdi_genconf
#dahdi_cfg -vvv
#dahdi_test

12/ Installing audio files

cd /usr/src
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-ulaw-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-wav-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-gsm-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-ulaw-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-gsm-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-ulaw-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-wav-current.tar.gz

cd /var/lib/asterisk/sounds
tar -zxf /usr/src/asterisk-core-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-wav-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-wav-current.tar.gz

mkdir /var/lib/asterisk/mohmp3
mkdir /var/lib/asterisk/quiet-mp3
ln -s /var/lib/asterisk/mohmp3 /var/lib/asterisk/default

cd /var/lib/asterisk/mohmp3
tar -zxf /usr/src/asterisk-moh-opsound-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-wav-current.tar.gz
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/moh
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/sounds
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/quiet-mp3
sox ../mohmp3/macroform-cold_day.wav macroform-cold_day.wav vol 0.25
sox ../mohmp3/macroform-cold_day.gsm macroform-cold_day.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-cold_day.ulaw -t ul macroform-cold_day.ulaw vol 0.25
sox ../mohmp3/macroform-robot_dity.wav macroform-robot_dity.wav vol 0.25
sox ../mohmp3/macroform-robot_dity.gsm macroform-robot_dity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-robot_dity.ulaw -t ul macroform-robot_dity.ulaw vol 0.25
sox ../mohmp3/macroform-the_simplicity.wav macroform-the_simplicity.wav vol 0.25
sox ../mohmp3/macroform-the_simplicity.gsm macroform-the_simplicity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-the_simplicity.ulaw -t ul macroform-the_simplicity.ulaw vol 0.25
sox ../mohmp3/reno_project-system.wav reno_project-system.wav vol 0.25
sox ../mohmp3/reno_project-system.gsm reno_project-system.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/reno_project-system.ulaw -t ul reno_project-system.ulaw vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.wav manolo_camp-morning_coffee.wav vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.gsm manolo_camp-morning_coffee.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/manolo_camp-morning_coffee.ulaw -t ul manolo_camp-morning_coffee.ulaw vol 0.25

13/ Installing astGUIclient (ViciDial)

First, login to mysql to create the database, add a couple users and assign privileges.
#mysql -u root –p

Enter theses MySQL commands
CREATE DATABASE `asterisk` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
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;
flush privileges;
quit

I am going to install the latest 2.x SVN trunk which happens to be version 2.8 at the time of writing this guide

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

or

#svn checkout svn://svn.eflo.net:3690/agc_2-X/trunk
cd trunk

perl install.pl
You will have to define various things like IP address of the server
It will also ask you where is the web root, use /var/www/html
Leave the other login settings as-is unless you already know how to update the database and other asterisk config files.

14/ Import sample data

Login to mysql to run some commands
#mysql -u root -p
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
\. /usr/src/astguiclient/trunk/extras/sip-iax_phones.sql
quit

In the Linux terminal, enter these commands
#/usr/share/astguiclient/ADMIN_area_code_populate.pl
#cp /usr/src/astguiclient/trunk/extras/performance_test_leads.txt /usr/share/astguiclient/LEADS_IN/

#chmod 744 /usr/src/astguiclient/trunk/bin/VICIDIAL_IN_new_leads_file.pl

#./usr/src/astguiclient/trunk/bin/VICIDIAL_IN_new_leads_file.pl –forcelistid=107 –forcephonecode=1

15/ Final adjustments

Make several entries in the rc.local of your system.
vi /etc/rc.d/rc.local
#!/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
/etc/init.d/mysqld start
### start up the apache web server
/etc/init.d/httpd start
### 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

Make several entries in the crontab of your system:
cd /usr/src/astguiclient

#service crond start

#chkconfig crond on

#crontab –e

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 of file#############

16/ Update /etc/asterisk/sip.conf and manager.conf 

Next, it is important to change the externip and localnet values in the /etc/asterisk/sip.conf

The externaddr needs to be the public facing ip of your server.
The localnet will consist of the public facing ip and netmask of your server.

####/etc/asterisk/sip.conf

externip = xxx.xxx.xxx.xxx
localnet = xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx

####/etc/asterisk/manager.conf

[general]
enabled = yes
;webenabled = yes
port = 5038
bindaddr = 0.0.0.0

[cron]
secret = 1234
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

[updatecron]
secret = 1234
read = command
write = command

[listencron]
secret = 1234
read = system,call,log,verbose,command,agent,user
write = command

[sendcron]
secret = 1234
read = command
write = system,call,log,verbose,command,agent,user

17/ Run this perl script to update the server_ip fields in the asterisk tables

#/usr/share/astguiclient/ADMIN_update_server_ip.pl --old-server_ip=10.10.10.15

Update music on hold configuration
/etc/asterisk/musiconhold.conf
remove the word “old”

#reboot

18/ Check log after rebooting:

tail -f -n 50 /var/log/asterisk/messages
tail -f -n 50 /var/log/messages
more /var/log/dmesg
tail -f -n 40 /etc/httpd/logs/error_log
tail -f -n 40 /var/log/maillog
tail -f -n 40 /var/log/cron

screen -ls

The output should look similar to this: 9or 10 sockets
There are screens on:
2307.ASTVDauto (Detached)
2147.astshell20140626063212 (Detached)
2105.ASTVDadapt (Detached)
2304.ASTlisten (Detached)
2301.ASTsend (Detached)
2153.asterisk (Detached)
2109.ASTconf3way (Detached)
2107.ASTfastlog (Detached)
2310.ASTVDremote (Detached)
2298.ASTupdate (Detached)
10 Sockets in /var/run/screen/S-root.

Start using vicidial
Login to vicidial and configure it.
Add users, campaigns, in-group, DID’s, server, etc….
Go to: http://youripaddress/vicidial/admin.php
The default username is: 6666 and the password is: 1234

Setup trunk with Maxo Telecom

 

1/ Enter the following into PEER Details:

context=from-trunk
fromdomain=sip.maxo.com.au  => (or pbx.maxo.com.au)
fromuser=
ext
host=sip.maxo.com.au => (or pbx.maxo.com.au)
insecure=very
secret=
extpassword
type=peer
username=ext

2. Type your ext into “User Context”

3. Enter the following into USER Details:

context=from-trunk
insecure=very
secret=
extpassword
type=user

4. Enter this into your register string:

ext:secret@sip.maxo.com.au/ext =>(or ext:secret@sip.maxo.com.au/DID)

5. Example:

register=70001:12345@sip.maxo.com.au/70001 or (70001:12345@sip.maxo.com.au/17273456789)

[70001]
type=user
secret=12345
insecure=very
context=from-trunk

[maxo]
username=70001
type=peer
secret=12345
insecure=very
host=sip.maxo.com.au
fromuser=70001
fromdomain=sip.maxo.com.au

Installing Elastix 2.5 on CentOS 5.x VPS

Step 1: login to your VPS and update your CentOS

# yum -y update

Step 2: Download the required Elastix ISO

wget https://sourceforge.net/projects/elastix/files/Elastix%20PBX%20Appliance%20Software/2.5.0/Elastix-2.5.0-Stable-x86_64-bin-21oct2014.iso –no-check-certificate

Step 3. Mount the ISO

# mkdir /mnt/iso
# mount -o loop Elastix-2.5.0-Stable-x86_64-bin-21oct2014.iso /mnt/iso
# cd /mnt/iso

 

Step 4. Create the elastix repo file
# vi /etc/yum.repos.d/elastix-cd.repo

Copy and paste lines below:

[elastix-cd]
name=Elastix RPM Repo CD
baseurl=file:///mnt/iso/
gpgcheck=0
enabled=1

Step 5: Install Elastix
# yum install -y asterisk* elastix*

Step 6:  Reboot your vps. take note you will get disconnected. Log back in. 
# Reboot

Step 7: Start services

#service httpd start

#service mysqld start

#chkconfig –level 345 mysqld on
#chkconfig –level 345 httpd on

Step 8: type the following command to change elastix admin and mysql root password

# /etc/rc3.d/S66elastix-firstboot start

Step 9: secure mysql server

#mysql_secure_installation

Step 10: Reboot again and login

Reboot

 

Creating a Standby Freepbx Server for High Availability

Terminology used

HA = High Availability.  Does not necessarily imply automatic failover.  Just less potential unavailability.

Primary server = Live production server currently in use.

Secondary server = Standby server with periodically restored configuration/data of primary server.

SIP Trunk = Session Initated Protocol Trunk.  A Voice over Internet Protocol (VoIP) virtual phone line over an IP network.  The main difference between a SIP trunk and a traditional phone line is that a SIP trunk is a logical connection rather than a dedicated circuit.   You can have multiple simultaneous calls on one SIP trunk all sharing the same IP network connection.

DID = Direct Inward Dialing.  In the context of VoIP and SIP trunks, the SIP trunk provider supplies one or more trunks to the customer for connection to the customers PBX. They can also allocate a telephone number or range of numbers to this trunk (or trunks) and forward all calls to such numbers to the trunk(s).

DNS = Domain Name System.  A system for translating human-friendly computer hostnames into IP addresses.

Failover considerations

DNS
Using DNS names instead of IP’s for your extensions and configurations has advantages and disadvantages.  Some DNS providers have automatic failover of the DNS by monitoring the availability of your primary server.  So this could go a long way to providing automatic failover.  Otherwise you would have to make the change manually. A disadvantage of using DNS failover is that changes do not take effect immediately.  You could set a very low TTL (Time To Live) to try minimize the delay but it could still be awhile before changes take effect.  Anywhere from minutes to hours.

Extensions
If you do not use DNS or your phones do not support that you will have to change the IP address of the server that your extensions point to.   There may be a delay until the next time the phone re-registers with the server or you may have to reboot the phone after the change.

Trunks
If you are using SIP trunks it will vary depending on the provider.  Using IP authentication on 2 subaccounts on the SIP trunk provider end is one possibility if supported.  That allows the trunk to be live for outgoing calls on both servers at all times.  If using username/password authentication you will also likely need 2 separate subaccounts that use different usernames/passwords.  Fortunately, the HA backup/restore feature in FreePBX accounts for that possibility. It allows you to optionally disable restored trunks on the secondary server if they include a registration string.

Inbound Calls
DID numbers allow inbound calls and are typically assigned to one trunk and one subaccount.  If you are using a single registration string you would have to enable the trunk(s) on the secondary server when the primary is not functioning.  The DID’s should become active on the secondary server as soon as the trunks register.  If using IP authentication, the DID number(s) will need to be switched over to the secondary server on the SIP trunk provider end. Some SIP trunk providers support automatic failover for this.

Extension Provisioning
If you provision extensions with TFTP you need to add the tftp folder to the backup schedule. If you do not use DNS, the TFTP IP address will need to be manually changed on the phone.  The IP addresses used in the TFTP configurations files on the standby server would need to be changed if you are not using DNS. However, this may not present a problem in the short term because the phones will keep their existing configuration if they cannot find a TFTP server.

Call Detail Records and Voicemail
This procedure is not a realtime mirrored solution so CDR and voicemail will not be current.  Since this HA solution is meant to be temporary until the primary server is up and running again, there isn’t much reason to restore CDR on the secondary server. If you do, keep in mind you will erase existing CDR information not present on the primary server each time you restore.

Setting up the SSH connection

I used user asterisk on primary and secondary server.  You could use root user but there are security implications.  This procedure assumes Apache/FreePBX  run as user asterisk in the home directory /var/lib/asterisk.  You can check all usernames, home directories, and shell settings by running cat /etc/passwd.

On primary server:
#chsh -s /bin/bash asterisk
#passwd asterisk
somepassword
#chmod 755 /var/lib/asterisk

On secondary server:
#chsh -s /bin/bash asterisk
#su asterisk
$ssh-keygen
Do NOT enter a passphrase when asked.

That last command will create the rsa 2048 bit key pair and save the 2 files in /var/lib/asterisk/.ssh/

Still running in a shell on the secondary server as user asterisk, create the remote directories, remote public key (authorized_keys) file, and set permissions for everything with this one command.

$ssh-copy-id -i asterisk@primaryServerIP
or if using ssh port other than 22
$ssh-copy-id -i '-p xxxx asterisk@PrimaryServerIP'

To test

$ssh asterisk@PrimaryServerIP
or if using ssh port other than 22
$ssh -p xxxx asterisk@PrimaryServerIP

If the secondary server logs into the primary server without asking for a password then the keys are working. First time it will ask to add host fingerprint.  It will not work on it’s own in the background until that is done.

Now that keys and fingerprint are added and working remove asterisk password on primary server.   SSH login using usernames is not possible by default if there is no password.

On primary server:
#passwd -d asterisk

——————————-
Fix for permission problems

The current version of ssh-copy-id sets permissions with group write which SSH StrictModes does not allow.  In addition to this, Freepbx currently resets /var/lib/asterisk folder permission to 775 after each reload. This also violates StrictModes permission limits and causes key authentication to fail.

The simplest solution is to disable SSH StrictModes on the primary server by editing /etc/ssh/sshd_config.
Uncomment and set to no.
StrictModes no

Alternatively you can change asterisk user home directory to /home on both servers and redo this procedure, substituting in the new directory.  Then on the primary server as root run the following to fix permissions.

#chmod 700 /home/asterisk
#chmod 700 /home/asterisk/.ssh
#chmod 600 /home/asterisk/.ssh/authorized_keys

——————————-

Create the SSH server

Now that we have an SSH connection to the primary server we can create the SSH server in the FreePBX Backup & Restore module on the secondary server.  Go to Admin>Backup & Restore>Servers>New SSH Server on the secondary server and enter the relevant information.  As shown in screenshot below, the private key file we generated when we ran ssh-keygen is /var/lib/asterisk/.ssh/id_rsa .

SSH server setup

Select Backup Items

Go to Backups>New Backup and give it a name.  Select what you want to backup/restore from the primary server by dragging and dropping the templates.  Assuming you want everything you would select the following templates.  Full Backup, Exclude Backup Settings, System Audio, Voicemail.  You would also go to the bottom and add /tftpboot directory if you are using that.

Adding the “Exclude Backup Settings” template is very important otherwise you will lose all the backup settings we just created when you do the backup/restore from the primary server.

Backup path settings

Select the Backup Server, Restore here, local storage, and run schedule.  The screen shot below should be self explanatory for that.  After selecting ‘Save’ at the bottom you can select ‘Run’ to test.  If you are using a registration string for your trunks the ‘Disable Registered Trunks’ box should be checked because you generally cannot have the same registration string for a trunk on two different live PBX servers at the same time.  The idea is that you would manually enable it on the secondary server when your primary server is down and you need to switch over.

Consider whether you want to backup/restore Mysql CDR.  If you were to make calls on the secondary server they would be logged only on the secondary server CDR.  The next time the backup/restore runs it will overwrite those call logs.

Note (Standby Server):

-Exclude NAT Settings.

-Exclude Backup Settings.

-Asterisk Sip Settings: Check If External address and Local Networks are correct?

screenhunter_02-nov-25-10-25

screenhunter_01-nov-25-10-24

Configure DNSmadeeasy:

http://help.dnsmadeeasy.com/dns-failover/configure-dns-failover/configure-dns-failover/

dnsfailover

Incredible PBX GUI for Raspberry Pi

http://nerdvittles.com/?p=17094

http://nerdvittles.com/?p=14787

INCREDIBLE PBX 13 WITH RASPBIAN 8 “JESSIE” FOR RASPBERRY PI 2 & 3 1.

https://sourceforge.net/projects/pbxinaflash/files/IncrediblePBX13-Raspbian8%20for%20Raspberry%20Pi%202%2B3/

https://www.raspberrypi.org/documentation/installation/installing-images/windows.md

1. Download incrediblepbx13-raspbian8.zip (now includes Incredible Fax) OR Download incrediblepbx13-raspbian8-oauth.zip (with GV OAuth and Fax)

2. unzip incrediblepbx13-raspbian8.zip OR incrediblepbx13-raspbian8-oauth.zip

3. Burn .img file of your choice to a microSD card (Tutorial for Mac, Linux, Windows here: http://nerd.bz/1Qptgb8)

4. Boot new SDcard image from Raspberry Pi 2 or 3

5. From display/keyboard/network connected to Raspberry Pi, login as pi with password: raspberry (DO NOT USE SSH)

6. Go through the automatic setup procedure and resize SD card

7. After reboot, use SSH/Putty to login to RasPi, login as root with default password: password

8. Complete setup steps by resetting your passwords when prompted

9. Run “raspi-config” and then select “Expand file system

10. Optionally, install Incredible Fax: /root/incrediblefax13_raspi3.sh

=> Run 2 commands below before executing  /root/incrediblefax13_raspi3.sh

#apt-get install apt-transport-https

#apt-get update && apt-get upgrade -y

 

TUTORIAL PLUS BUG FIXES AND ENHANCEMENTS: http://nerdvittles.com/?p=17094

GOOGLE VOICE OAUTH TUTORIAL: http://nerdvittles.com/?p=14787 (Steps 8-10)

FREE SUPPORT AVAILABLE AT http://incrediblepbx.com/community/forums/

FOR WIFI CONNECTIVITY, edit /etc/wpa_supplicant/wpa_supplicant.conf:

1. Insert your WiFi credentials in the following section:

network={

ssid=”YourSSID”

psk=”YourSSIDpassword”

key_mgmt=WPA-PSK scan_ssid=1

}

2. Stop and restart the wireless network adapter: ifdown wlan0 ifup wlan0

3. Wait 15 seconds or more. Then decipher your wlan0 network address: ifconfig OR pbxstatus

Asterisk phone cisco 79xx Business PBX Solutions

A guide for configuring a variety of Cisco IP Phone models (79XX series) to work with Asterisk PBX systems. All configuration file examples are available as well. Available online and in PDF format:
Online version: http://minded.ca/default/2009-12-16/configure-cisco-ip-phones-with-asterisk/
PDF version: http://www.minded.ca/default/wp-content/uploads/2009/12/Asterisk-With-Cisco-IP-Phones.pdf

Configuring Cisco 79xx phones with Asterisk

This page documents how you configure a Cisco IP phone with Asterisk.

By default most Cisco VoIP phones come configured for Call Manager, which uses the ‘Skinny’ protocol – SCCP.
Asterisk has 2 implementations for this channel (required for the 7910/20):

  • Skinny implements a very basic set of telephone functions and ships with asterisk.
  • SCCP has implemented more of the SCCP protocol, so some class 5 features (hold, transfer, forward, etc) should work.

However, the 7905/7912 and 7940/60 can be reconfigured to use SIP (recommended for use with Asterisk):http://www.cisco.com/en/US/products/hw/phones/ps379/products_tech_note09186a0080094584.shtml

The 7905 doesn’t have Speakerphone (only a speaker for call monitoring or on-hook dialing), its SIP image has by far the best user interface of all cisco SIP phones, plus it’s nicely compact, and the display even has a higher resolution than that of the 7960. The 7912 is the same as the 7905, but with a built-in ethernet switch.

The 7912/05 phones use a different configuration file format and syntax; for more information about configuring these phones please refer to Cisco 7905/7912 IP Phones.

With the right Cable, 79xx series phones can use standard POE injectors. They also work out of the box with Aironet power injectors. (N.B., the wrong cable may damage your phone!)

TFTP Manager for FreePBX

Cisco IP Phones use a TFTP server for its configuration files and firmware. A FreePBX module for managing TFTP server files has been created and available on the developers website, http://minded.ca/default/2010-06-06/freepbx-module-tftp-manager/ or from the FreePBX Trac ticket #1032


LATEST FIRMWARE VERSION

Version 8.12 is now released (29 May 2009)
There are a few minor bugs fixed. (For Cisco Discovery Protocol (CDP), the VoIP capabilities bit is missing during initial boot)
There is a guide to installing and updating to this firmware here: http://wiki.siftah.com/Cisco_7960G_IP_Phone_on_Asterisk.
V8.12 Release Notes:http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/7960g_7940g/firmware/sip_cucm/8_12/english/release/notes/796040sip_812.html
V8.12 Download available at: http://radiotwenterand.nl/~graver/cisco/SIP-7960/P0S3-8-12-00.zip

Version 8.11 is now released (9 Feb 2009)
There are a few minor bugs fixed. This version has correctly been loaded on an older 7960.
There is a guide to installing and updating to this firmware here: http://wiki.siftah.com/Cisco_7960G_IP_Phone_on_Asterisk.
V8.11 Release Notes:http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/7960g_7940g/firmware/sip/8_11/english/release/notes/796040sip_811.html
V8.11 Download available at: http://radiotwenterand.nl/~graver/cisco/SIP-7960/P0S3-08-11-00.zip

Version 8.10 has been released (21 Oct 2008) then quickly removed and no longer avaiable.

Version 8.9 is now released.
That was the latest as of June 26, 2008
V8.9 Download available at: http://radiotwenterand.nl/~graver/cisco/SIP-7960/P0S3-08-9-00.zip

Version 8.8 is now released (a few minor bugfixes)
V8.8 Download available at: http://radiotwenterand.nl/~graver/cisco/SIP-7960/P0S3-08-8-00.zip

Version: v8.7 is now released as per this security advisory.
http://www.cisco.com/warp/public/707/cisco-sr-20070821-sip.shtml
V8.7 Download available at: http://radiotwenterand.nl/~graver/cisco/SIP-7960/P0S3-08-7-00.zip

V8.6 Download available at: http://radiotwenterand.nl/~graver/cisco/P0S3-08-6-00.zip

v8.5

v8.4

Version: v8.3
The file from cisco is designed for the cisco call manager software and is a “.cop” file.
The file from cisco is designed for the cisco call manager software and is a “.cop” file. This file is just a GZIP compressed TAR file. Just ungzip and untar the file to extract the the new files for the phone. It installs just like the version 7 software with a loader and an application file. The standard ZIP file should be released soon.

  • No longer lists server IP on display for caller’s number.
  • At least on the 7960, this release seems to break the Asterisk qualify sip.conf setting. The phone shows as unreachable just after it registers. If you set “qualify=no” it works.
  • I have also seen some other phone display strangeness with this release on the 7960

Version: v8.2

  • Using the existing config files (that worked with v7.x) it seems to work, execpt the CID now displays the IP address also.
  • new config params:
    • line1_contact: number, changes the username part that is sent in the sip Contact: header
    • transfer_onhook_enabled: 1 or 0. If enabled, a call will be transferred when the handset is hung up (rather than having to press the Trnsfr button again. The original behaviour still works.)
    • call_manager1_addr and call_manager1_sip_port, not sure what difference these make
    • dscpForAudio: id, tag audio packets for qos with this dscp id, replace tos_media field
    • connection_monitor_duration: sec
    • encrypt_key: 32hexdigits, careful with this one, some config encryption support or similar
    • xml_card_dir and xml_card_file, actually these appeared earlier, doesnt seem to try load the card.xml over tftp for this, anyone know?
    • Current bug: There appears to be a bug in v8.2 that causes the phone to be unable to register with Broadvoice’s SIP proxy. Downgrading the firmware appears to resolve the issue.

Version: v7.5

  • There seems to be a bug in the 7.5 SIP software (at least on the 7960) that cause the phones to drop registration with Asterisk and not re-register. A phone reboot forces them to reregister for a time. 7.4 with the same configuration does not seem to have the same registration problem. It’s unclear exactly where the issue exists (phone config, asterisk, time settings, etc). – doretel
  • Firmware 7.5 breaks RFC compliance, by not ACKing a 487. http://bugs.digium.com/view.php?id=5336. Also, we have experienced 7940/60 phone hangs/reboots related to “XML Parse Error” displayed on phone screens. Reverting to v.7.4 eliminated these problems. -vechers (The “XML Parse Error” problem and the previously mentioned fix confirmed by rrizzi7210)

v7.4

v7.3

v7.2

v7.1

v7.0 and up:

  • A new design approach is used to store the existing software base in the Cisco 7940 and Cisco 7960 telephones. The new approach utilizes a “run from flash” design to use the Flash and RAM memory available more efficiently.
  • Bugfix: Media takes 0.4 sec to be set up (finally…)
  • Bugfix: HTTP requests fail, sysbufs get hung
  • Numerous other bug fixes, too many to mention (see release notes below)

Click here to see a step by step guide to upgrading to sip version 7.x Cisco 7940-7960 upgrade to version 7.x

CISCO’S RELEASE NOTES
http://www.cisco.com/en/US/products/hw/phones/ps379/prod_release_notes_list.html#anchor12

ARCHIVED IMAGES
http://radiotwenterand.nl/~graver/cisco/SIP-7960/


Cisco 7940/7960 SIP Phone Software Images
Cisco‘s SIP phone software images including versions 3.0, 4.4, 5.3, 6.x – 8.x work well with Asterisk. Features have been implemented and caveats (earlier problems) corrected with each release. Staring from v5.x images have incorporated a software security feature that makes it impossible to revert back to earlier images, although reverting to earlier versions is possible within the same major release (i.e. 7.5 firmware can be rolled back to 7.4 firmware with no problems). Version 6.0 SIP image has been very stable for many Asterisk users. The new 7.x – 8x images feature mainly bug fixes, not new features.

It appears to be impossible to upgrade directly from v3.x to v8.x (probably any version prior to v6.x), I had to upgrade to v6.3 first. It is very hard to find a copy of this the v6.3 firmware (not even on Cisco site). Search for P0S3-06-3-00.zip or get it at http://www.xs4all.nl/~graver1/cisco/SIP-7960/P0S3-06-3-00.zip

The v6.0 software has implemented:

  • Alert-Info (play internal ring tones based on Alert-Info within the SIP header)
  • Auto Answer (2-way paging conversation without picking up handset)
  • DHCP Option 66
  • Directory Enhancements (user can add/change/delete entries in Personal Directory)
  • DSP (new digital signal processor)
  • DSP Alarms, Debugging Aids, and Logging (help diagnose problems)
  • Enhanced Tone and Ring Support (support for more complex tones and ringing patterns)
  • Hot Line / Speeddials (each line button can be programmed to act as a speeddial button)
  • Local Call Forwarding (redirects incoming calls to another extension/URL)
  • Message Waiting Stutter Tone
  • Multiple Call Appearance (receptionist style, all lines have the same extension)
  • Outbound Proxy Redesign (improves use of outbound proxy based on multiple DNS records)
  • SIP Call Statistics (call statistics sent in BYE / 200 OK messages)
  • Resolved Caveats (several previously documented problems have been resolved)

Note: Cisco software images are only available from Cisco’s web site and are protected by copyright laws. Access to their web site requires an account be established. The easiest way to do that is to purchase a Maintenance Agreement from Cisco for approximately $8 per year (US).

Cisco 7941/7961 SIP Phone Software Images

Cisco‘s SIP phone range now includes the 7941/7961, as new firmware v8.0(1) came out for these that supports SIP in March 2006. Previously some v7.0 releases of SCCP had been released. These phones look physically identical to the 7940 phone with the exception of the much better quality display which can display grey shades, however the software for the 7941/7961 appears to have major differences to the 7940/7960 software.

Release notes for 7941/7961 are at http://www.cisco.com/en/US/products/hw/phones/ps379/prod_release_notes_list.html#anchor10

Note that the release notes clearly state at the top of the document that “This SIP firmware was designed and tested to interoperate with Cisco call control, most notably Cisco Unified CallManager version 5.0. Although this SIP deployment is IETF RFC 3261 compliant, it is not supported by Cisco TAC or Engineering for use with non-Cisco call control systems.”. So YMMV if you call the TAC for support.

The v8.0 software for the 7941/7961 has these significant differences over the v8.0 software for the 7940/7960:

  • The built-in web server previously only in the non-SIP images is now in the v8.0 SIP builds
  • The phone does not appear to support the old style config files, all configs for this phone need to be in XML
  • The phone does not appear to support telnet, but instead supports SSH-2.0, although this appears to be undocumented on CCO. At this stage unsure what the default user/password is
  • The config file name is therefore now SEP<mac-address>.cnf.xml
  • Upgrading the firmware load involves the phone uploading 5 signed binary files:jar41sip.8-3-4-16.sbn, cnu41.8-3-4-16.sbn, apps41.8-3-4-16.sbn, dsp41.8-3-4-16.sbn, and cvm41sip.8-3-4-16.sbn (this was for release load version 8-3-4-16 which is the latest as of late April 2008). These phones can be upgraded and the protocol support changed via the normal means of adding <loadInformation>term41.default</loadInformation> to the .cfg.xml file

At this stage, documentation on the format of the xml config file for SIP has proven to be extremely hard to find. Cisco are likely assuming that all adopters of this phone will be running it in a CallManager environment whereby the configs are automatically generated by the CCM. If you do find some or have access to a CallManager 5.0 which can generate these files, please document the basic format so others can configure these phones for SIP in a non CCM environment.

More information on this new config file format and this new series of phones can be found at the 79×1 xml config page Please edit it and improve it as much as you can as information of the nature in that document has not to date been easy to find.

Firmware packing/unpacking utility

There is an utility to pack/unpack CNU firmware files (7941/7961 and some others):

Project page: http://virtualab.ru/en/projects/cnu-fpu

Researcher’s notes: http://virtualab.ru/en/category/projects/cnu-fpu

You can use it to get full root access on devices or just to look deeper in the firmware. There are still much work to do with kernel/root FS image, but it is suitable for most needs.

Software Upgrade Requirements

All software images are upgraded through a TFTP server at your location. If you don’t have one, several free Unix and Windows packages are available via the Internet. The specific instructions as to exactly how to accomplish the upgrade should be reviewed from Cisco’s web site as the exact steps (and possible backout steps) may change from version to version.

The TFTP server directory must include the following files as a minimium (most are upper/lower case sensitive):

  • OS79XX.TXT (The content of this file is solely the software image filename stripped of the .bin, i.e. P0S3-06-1-00)(Contains the universal application loader image in 7.x)

Note:(The 7.1 image upload needs to be spelled P003-07-1-00 in the OS79XX.TXT and P0S3-07-1-00 in the SIPDefault.cnf)
Note:(7941G does not fetch OS79XX.TXT when upgrading from SCCP 8.x to SIP 8.x)
Note:(7940G/7960G SIP v8.x and above does not fetch OS79XX.TXT at all)

  • P003-xx-y-zz.bin (Nonsecure universal application loader for upgrades from pre-5.x images.)
  • P003-xx-y-zz.sbn (Secure universal application loader for upgrades from images 5.x or later.)
  • P0a3-xx-y-zz.loads (File that contains the universal application loader and application image, where “a” represents the protocol of the application image loads file 0-SCCP, S-SIP, M-MGCP.)
  • P0a3-xx-y-zz.sb2 (Application firmware image, where “a” represents the application firmware image.)
  • SIPDefault.cnf (Contains generic parameters for all Cisco phones at your location)
  • SIP00036BAAD139.cnf (Where the last 12 hex digits is the MAC address of your Cisco phone) Sample php script to create the cnf file.

In addition, the following optional files may also be present in the TFTP directory:

  • dialplan.xml (contains entries like “9,1….” that cause the phone to automatically dial after a match)
  • RINGLIST.DAT (a list of ringing tones to be downloaded, like ringer1.pcm)
  • ringer1.pcm (a ringing tone to be downloaded to the phone)

See also: John Todd’s examples

*** Simplify Updates (Auto-Loader Support) ***

This will save you alot of wasted time trying to update newer firmware! For easiest, direct firmware updates from say factory installed SCCP images direct to latest SIP firmware (e.g. SCCP v3.1 to SIP v7.4) — add the following files to your TFTP directory to assist the SCCP based generic Auto-Loader added as of v5.x to Cisco’s SIP/SCCP images:

  • XMLDefault.cnf.xml
  • xmlDefault.CNF.XML

Due to inconsistent coding by Cisco, different firmware may look for different case-sensitive versions of the same file, thus the need for at least the two variations above to cover new phones and a good portion of older one’s. Additionally, here is a usable example of the XML content that should be inserted into the files (be sure and update with the firmware version you wish to load, and match the SIPDefault.cnf and SIPxxxxxxx.cnf file’s “image_version=” entries to match!):

Just add the loadInformation lines relevant to the phone that you have.


<Default>
   <callManagerGroup>
      <members>
         <member priority="0">
            <callManager>
               <ports>
                  <ethernetPhonePort>2000</ethernetPhonePort>
                  <mgcpPorts>
                     <listen>2427</listen>
                     <keepAlive>2428</keepAlive>
                  </mgcpPorts>
               </ports>
               <processNodeName></processNodeName>
            </callManager>
         </member>
      </members>
   </callManagerGroup>
   <loadInformation30002  model="Cisco 7920">cmterm_7920.4.0-03-02</loadInformation30002>
   <loadInformation30006  model="Cisco 7970">SCCP70.8-3-1S</loadInformation30006>
   <loadInformation115  model="Cisco 7941">SCCP41.8-3-1S</loadInformation115>
   <loadInformation30016  model="Cisco IP Communicator"></loadInformation30016>
   <loadInformation30032  model="SCCP gateway virtual phone"></loadInformation30032>
   <loadInformation308  model="Cisco 7961G-GE">SCCP41.8-3-1S</loadInformation308>
   <loadInformation309  model="Cisco 7941G-GE">SCCP41.8-3-1S</loadInformation309>
   <loadInformation30019  model="Cisco 7936">cmterm_7936.3-3-13-0</loadInformation30019>
   <loadInformation12  model="Cisco ATA 186">ATA030203SCCP051201A</loadInformation12>
   <loadInformation412  model="Cisco 3951">SIP3951.8-0-1</loadInformation412>
   <loadInformation365  model="Cisco 7921">CP7921G-1.0.3</loadInformation365>
   <loadInformation30007  model="Cisco 7912">CP7912080003SCCP070409A</loadInformation30007>
   <loadInformation30035  model="IP-STE"></loadInformation30035>
   <loadInformation369  model="Cisco 7906">SCCP11.8-3-1S</loadInformation369>
   <loadInformation30018  model="Cisco 7961">SCCP41.8-3-1S</loadInformation30018>
   <loadInformation20000  model="Cisco 7905">CP7905080003SCCP070409A</loadInformation20000>
   <loadInformation446  model="Cisco 3911"></loadInformation446>
   <loadInformation307  model="Cisco 7911">SCCP11.8-3-1S</loadInformation307>
   <loadInformation4  model="Cisco 12 S"></loadInformation4>
   <loadInformation3  model="Cisco 12 SP"></loadInformation3>
   <loadInformation2  model="Cisco 12 SP+"></loadInformation2>
   <loadInformation1  model="Cisco 30 SP+"></loadInformation1>
   <loadInformation5  model="Cisco 30 VIP"></loadInformation5>
   <loadInformation30  model="Analog Access">A001C030</loadInformation30>
   <loadInformation47  model="Analog Access WS-X6624">A002H024</loadInformation47>
   <loadInformation51  model="Conference Bridge WS-X6608">C00104000001</loadInformation51>
   <loadInformation40  model="Digital Access">D001M022</loadInformation40>
   <loadInformation43  model="Digital Access WS-X6608">D00404000029</loadInformation43>
   <loadInformation42  model="Digital Access+">D00303010033</loadInformation42>
   <loadInformation61  model="H.323 Phone"></loadInformation61>
   <loadInformation7  model="Cisco 7960">P00308000500</loadInformation7>
   <loadInformation100  model="Load Simulator"></loadInformation100>
   <loadInformation111  model="Media Termination Point Hardware">M00104000004</loadInformation111>
   <loadInformation120  model="MGCP Station"></loadInformation120>
   <loadInformation121  model="MGCP Trunk"></loadInformation121>
   <loadInformation348  model="Cisco 7931">SCCP31.8-3-1S</loadInformation348>
   <loadInformation9  model="Cisco 7935">P00503021600</loadInformation9>
   <loadInformation431  model="Cisco 7937"></loadInformation431>
   <loadInformation375  model="Cisco TelePresence"></loadInformation375>
   <loadInformation30008  model="Cisco 7902">CP7902080002SCCP060817A</loadInformation30008>
   <loadInformation11  model="Cisco VGC Virtual Phone"></loadInformation11>
   <loadInformation10  model="Cisco VGC Phone"></loadInformation10>
   <loadInformation6  model="Cisco 7910">P00405000700</loadInformation6>
   <loadInformation8  model="Cisco 7940">P00308000500</loadInformation8>
   <loadInformation30027  model="Analog Phone"></loadInformation30027>
   <loadInformation124  model="7914 14-Button Line Expansion Module">S00105000300</loadInformation124>
   <loadInformation119  model="Cisco 7971">SCCP70.8-3-1S</loadInformation119>
   <loadInformation437  model="Cisco 7975"></loadInformation437>
   <loadInformation404  model="Cisco 7962"></loadInformation404>
   <loadInformation435  model="Cisco 7945"></loadInformation435>
   <loadInformation302  model="Cisco 7985">cmterm_7985.4-1-4-0</loadInformation302>
   <loadInformation434  model="Cisco 7942"></loadInformation434>
   <loadInformation30028  model="ISDN BRI Phone"></loadInformation30028>
   <loadInformation358  model="Cisco Unified Personal Communicator"></loadInformation358>
   <loadInformation335  model="Motorola CN622"></loadInformation335>
   <loadInformation436  model="Cisco 7965"></loadInformation436>  <authenticationURL></authenticationURL>
  <directoryURL></directoryURL>
  <idleURL></idleURL>
  <informationURL></informationURL>
  <messagesURL></messagesURL>
  <servicesURL></servicesURL>
</Default>

 

Misc

See reboot.pl A perl script to handle remote rebooting of the 79xx class phones (useful for multiple-phone upgrades). Requires Net::Telnet.

NOTE: (Sept 2009): Cisco phones with SIP firmware version SIP41-8-4-1S and 8-3-xx using asterisk over UDP do NOT respond to the SIP NOTIFY message!! You can get around this using Emulated User Interaction and a PHP script that essentially presses “Settings -> **#**” for you. In the SEP<MAC>.cnf.xml file, make sure that the authorization page returns authorized for the username and password in the script. You can download it at phonepush.zip. This script must be run on the asterisk box because it asks asterisk to convert the extension into a valid IP address via SIP SHOW PEERS. The syntax is like this: php phonePush.php <command> <extension>. You can add other operations to the script as well by editing the array. The first part is the button you want the phone to press and the second is the delay, or how long to wait before sending the next command.

So you blew up your 7940/7960 trying to load new firmware

Tone Parameters

When connecting to the 79xx range of phones (Tested on 7912) through the web browser, you are able to change the cadance settings etc for different locations via the “Tone Parameters” screen.
This sets call progress indication, such as the busy tone, system busy tone, and ring tone etc.

The default US are as follows: US


SigTimer
0x01418564
RingOnOffTime
2,4,25
DialTone
2,31538,814,30831,2032,0,0,0,0,0,0
DialTone2
2,30743,1384,29864,1252,0,0,0,0,0,0
BusyTone
2,30467,1104,28959,1404,1,4000,4000,0,0,0
ReorderTone
0,2,30467,1104,28959,1404,0,0,1,2000,2000,0,0,0,0,0,0
RingBackTone
2,30831,2032,30467,1104,1,16000,32000,0,0,0
CallWaitTone
1,30831,2412,0,0,1,2400,2400,0,0,4800

The Settings for the United Kingdom settings are: UK


SigTimer
0x01418564
RingOnOffTime
2,4,25
DialTone
2,31537,1833,30830,2287,0,0,0,0,0,0
DialTone2
2,31537,1833,30830,2287,0,0,0,0,0,0
BusyTone
1,31163,1657,0,0,1,3000,3000,0,0,0
ReorderTone
0,1,31163,1657,0,0,0,0,2,3200,2800,1800,4200,0,0,0,0
RingBackTone
2,31163,1173,30742,1314,2,3200,1600,3200,16000,0
CallWaitTone
1,30831,2412,0,0,1,2400,2400,0,0,4800 

 

Logo Displayed on 79XX Screen

A non-Cisco logo can be displayed on the 79XX screen. Cisco’s documentation suggests the logo be a Windows Bitmap form (*.BMP) with 256 colors and 90 x 56 pixels in size. Only two colors are displayed, black or white. The image must be saved in greyscale format. In GIMP it is Image->Mode->Greyscale. If the size of the logo is larger then this specification, the phone will rescale to fit (within reason). Microsoft Paint and many other applications can be used to create the logo image.

Once the image is created, place the *.BMP file on any web site available to you (suggest /asterisk/mylogo.bmp, where the /asterisk directory is not freely advertised).
Modify the SIPDefault.cnt file entry to point to the web site:
logo_url: “http://www.mywebserver.com/asterisk/logo.bmp&#8221;
and reboot the Cisco phone.
Note: the smaller the logo file, the quicker it will load. Typcial logo files should be around 10k bytes.

Note: 7940/7960 phones actually display two colors at 2-bit depth, or four solid colors. For best results creating images/logos that don’t dither and degrade, use #000000 (black) and #FFFFFF (white or clear on the LCD display), then #404040 (dark grey) and #808080 (light gray) as your alternate solid colors (or as the antialiasing colors for excellent results).

Company Telephone Directory

The 79XX phones have four panel keys labeled as Messages, Services, Directories, and Settings. The Directory key can be programmed to view your company’s telephone directory by displaying Names and Telephone Numbers that are stored on any web site available to you.
Modify the SIPDefault.cnf file entry to point to the web site:
directory_url: “http://www.mywebserver.com/asterisk/directory.xml&#8221;
The phone must be rebooted in order to read the above file.
The web site file /asterisk/directory.xml should include xml entries like:

  
  <CiscoIPPhoneDirectory>       
    <Title>IP Telephony Directory</Title>
    <Prompt>People reachable via VoIP</Prompt>                    
    <DirectoryEntry>                                              
      <Name>Rich</Name>         
      <Telephone>3000</Telephone>
    </DirectoryEntry>                                      
    <DirectoryEntry>             
      <Name>Todd</Name>       
      <Telephone>3001</Telephone>                                            
    </DirectoryEntry>      
  </CiscoIPPhoneDirectory>

Note: Each time a user presses the Directory key and accesses the External Directory option from the menu, the phone will access the contents of this html file and display whatever text entries included in it. Therefore, changes to the html file do not require any futher rebooting of the Cisco phone. Cisco has published Cisco IP Phone Services Application Development Notes (CMXML_App_Guide.pdf ) that further explains options and file contents.

Asterisk Cisco 79XX XML Services

Services Button

The 79XX phones have four panel keys labeled as Messages, Services, Directories, and Settings. The Services key can be programmed to execute CGI scripts that are stored on any web site available to you. The CGI scripts can perform any action that you are capable of programming. None are provided by Cisco.
Modify the SIPDefault.cnf file entry to point to the web site:
services_url: “http://www.mywebserver.com/asterisk/myscriptpage.html&#8221;
The phone must be rebooted in order to read the above file.
The web site file /asterisk/myscriptpage.html should include entries for each service that you plan to make available to your phone users. The exact content and syntax is also documented in the Cisco IP Phone Services Application Development Notes (CMXML_App_Guide.pdf ) noted above.

Messages Button

When the Messages button is pressed, you can cause the phone to directly dial an extension in your asterisk dialplan. Just configure the phone as:
messages_uri: “<extension>”
where <extension> is what you wish the phone to dial when the Messages button is pressed. You can then catch the call in either a standard VoiceMailMain() invocation a la
exten => _42,1,VoiceMailMain()
or, be cute and bypass entry of mailbox number and password a la
exten => _42,1,VoiceMailMain(s<mbox num>)
To make the Messages button work for any extension (assuming your extensions are numbered appropriately), use:
exten => _42,1,VoiceMailMain(s${CALLERIDNUM})

Asterisk Cisco 79XX XML Services

Ringtones

http://www.cisco.com/en/US/products/sw/voicesw/ps2156/products_administration_guide_chapter09186a0080087511.html#1042487
The Cisco SIP IP phone ships with two ring types: Chirp1 and Chirp2. By
default, your ring type options will be those two choices. However,
using the RINGLIST.DAT file, you can customize the ring types that are
available to the Cisco SIP IP phone users.

Step 1
Create a pulse code modulation (PCM) file of the desired ring
types and store the PCM files in the root directory of your TFTP server.
PCM files must contain no header information and comply with the
following format guidelines:

  • 8000 Hz sampling rate
  • 8 bits per sample
  • ulaw compression
  • 240 – 16080 samples long ( 0.03 sec – 2.01 sec )

For example, to use sox to generate the tones, use


sox -t wav in.wav -t raw -r 8000 -U -b -c 1 out.raw resample -ql 

Step 2
Using a ASCII editor, open the RINGLIST.DAT file and for each
of the ring types you are adding, specify the name as you want it to
display on the Ring Type menu, press Tab, and then specify the filename
of the ring type. For example, the format of a pointer in your
RINGLIST.DAT file should appear similar to the following:

Ring Type 1 ringer1.pcm

Step 3
After defining pointers for each of the ring types you are
adding, save your modifications and close the RINGLIST.DAT file.

Caveat:

If you have configured a secondary tftp-server(ie. dyn_tftp_addr : 192.168.1.10) in SIPDefault.cnf, or SIP<MACADDR>.cnf which cannot be reached then the phone will not attempt to download the RINGLIST.DAT file.

Controlling ring tones from Asterisk

By setting the Asterisk variable ALERT_INFO before you call Dial, Asterisk will add ringer tone info to the SIP invite that is sent to the phone. Note that this only seems to work for the internal ringtones and not for any custom ringtones.

Asterisk version <1
exten => 3010,1,SetVar(__ALERT_INFO=<Bellcore-dr1>)

Assterisk 1.0 and 1.2
exten => 3010,1,SetVar(_ALERT_INFO=<Bellcore-dr1>)

Asterisk 1.4
exten => 3010,1,SIPAddHeader(Alert-Info: <Bellcore-dr1>)

Available ring tones by default

Bellcore-BusyVerify
Bellcore-Stutter
Bellcore-MsgWaiting
Bellcore-dr1
Bellcore-dr2
Bellcore-dr3
Bellcore-dr4
Bellcore-dr5

While examining the firmware for the 7940/7960 I found the following strings. I have not verified if these are in fact ringtones because I don’t have a phone to test them with at the moment but they might be worth a try. {I have tried them, and they don’t seem to do anything on the 7940 with


Bellcore-Inside
Bellcore-Outside
Bellcore-Busy
FBellcore-Alerting
FBellcore-BusyVerify
Bellcore-Stutter
Bellcore-MsgWaiting
Bellcore-Reorder
Bellcore-CallWaiting
Bellcore-Cw2
Bellcore-Cw3

Bellcore-Cw4
Bellcore-Hold
FBellcore-Confirmation
FBellcore-Permanent
Bellcore-Reminder
FBellcore-None
Bellcore-dr1
Bellcore-dr2
Bellcore-dr3
Bellcore-dr4
Bellcore-dr5

FCisco-ZipZip
Cisco-Zip
FCisco-BeepBonk

 

DialPlan Notes (dialplan.xml)

The dialplan.xml file controls the phone’s matching of digits. By default, the file contains an entry that causes the phone to wait 5 seconds after you dial the last digit. You can add additional TEMPLATE entries to cause the phone to dial after a shorter time, or to dial immediately when a specific pattern is entered. When creating rules, you can use the wildcards “*” and “.”. “*” matches anything and “.” matches only one digit (ie: “1* will match any dialstring that begins with 1, while “1..” will match any three character string that begins with “1”. If you specify a timeout greater than “0”, users must push ‘Dial’ or ‘#’ to cause the phone to dial without waiting. For a variety of reasons, not least of which being that most phone users are not accustomed to pressing ‘Dial’ on their office phones, it may be desirable to configure a dial plan for your organization. Be careful with setting an entry to dial immediately, as that can cause trouble if you need to dial a longer number that matches that string (ie: if you match “1..” for extensions 100-199, and dial immediately, the phone number “18005551212” will match that pattern and you may not be able to dial it.).

If you wish to use the hash (by default it will immediately dial the number entered) include it explicitly as part of a pattern in DIALPLAN.XML
<DIALTEMPLATE>
<TEMPLATE MATCH=”#…” Timeout=”5″ User=”Phone” /><!– Hash, plus three digits, Wait 1 second, then dial. >
<TEMPLATE MATCH=”*” Timeout=”5″ User=”Phone” /><!– Anything else. –>
</DIALTEMPLATE>

If you wish to use the star key (*), such as for entries like “*86″, you must escape the ‘*’ in the XML, like below:
<DIALTEMPLATE>
<TEMPLATE MATCH=”\*..” Timeout=”5″ User=”Phone” /><!– Feature Codes, like *86 –, Dial immediately. >
<TEMPLATE MATCH=”*” Timeout=”5″ User=”Phone” /><!– Anything else. –>
</DIALTEMPLATE>

In another example, we immediately match 9+10digits or 9+1+10digits, and match 5+2digits as internal extensions
<DIALTEMPLATE>
<TEMPLATE MATCH=”5..” TIMEOUT=”0″/><!– Internal Extensions 500 to 599. Dial immediately. –>
<TEMPLATE MATCH=”9,1……….” TIMEOUT=”0″ Tone=”Bellcore-Alerting”/><!– 9+1+10-digits. Dial immediately. –>
<TEMPLATE MATCH=”9,……….” TIMEOUT=”0″/><!– Anything else. –>
</DIALTEMPLATE>

In the above example, a secondary dial tone is invoked by the comma character. If the Tone attribute is left blank, the default will be used. Or you can specify one of the following:

  • Bellcore-Alerting
  • Bellcore-Busy
  • Bellcore-BusyVerify
  • Bellcore-CallWaiting
  • Bellcore-Confirmation
  • Bellcore-dr1
  • Bellcore-dr2
  • Bellcore-dr3
  • Bellcore-dr4
  • Bellcore-dr5
  • Bellcore-dr6
  • Bellcore-Hold
  • Bellcore-Inside
  • Bellcore-None
  • Bellcore-Outside (default)
  • Bellcore-Permanent
  • Bellcore-Reminder
  • Bellcore-Reorder
  • Bellcore-Stutter

 

  • CallWaiting-2
  • CallWaiting-3
  • CallWaiting-4

 

  • Cisco-BeepBonk
  • Cisco-Zip
  • Cisco-ZipZip

Here is an example for US phones that sets entries for Extensions 100-299, plus 7-digit dialing, 10-digit dialing, and 1+10-digit dialing, plus “*86″ for voicemail access.

<DIALTEMPLATE>
<TEMPLATE MATCH=”1..” TIMEOUT=”1″/><!– Internal extensions 100 to 199. Wait 1 second, then dial. –>
<TEMPLATE MATCH=”2..” TIMEOUT=”1″/><!– Internal extensions 200 to 299. Wait 1 second, then dial. –>
<TEMPLATE MATCH=”…….” TIMEOUT=”1″/><!– 7 digits. Wait 1 second, then dial. –>
<TEMPLATE MATCH=”……….” TIMEOUT=”1″/><!– 10 digits. Wait 1 second, then dial. –>
<TEMPLATE MATCH=”1……….” TIMEOUT=”0″/><!– 1+10 digits. Dial immediately –>
<TEMPLATE MATCH=”\*86″ TIMEOUT=”0″/><!– *86 (*VM) for voicemail. Dial immediately. –>
<TEMPLATE MATCH=”*#” TIMEOUT=”0″ REWRITE=”%1″/><!– Dial immediately after pressing #. –>
<TEMPLATE MATCH=”*” TIMEOUT=”5″/> <!– Anything else –>
</DIALTEMPLATE>

The above example includes a line to cause the phone to dial immediately after pressing “#”. This is not needed for the 7940/7960, as that functionality is built-in. However, it is needed for some other phones that may also download this file, namely the 7970 and others.

Notes: This file is case sensitive in some firmware versions; all elements and attributes should be uppercase (except Tone) or the entries may be ignored. According to Cisco, the phone will always match the LONGEST expression.

Call Waiting Feature

The 79XX series phones have a good way of handling SIP registrations provided the Call Waiting feature isn’t turned off. Most other SIP phones require an individual SIP username and password for each line appearance. Instead, the 79XX will automatically roll-over to the next available line. So, for example, on a 7960 you can have all six lines programmed to the same SIP username/password and the phone will automatically handle the call waiting function. Note: If you use any other method of ringing multiple lines on the phone (i.e. dialing SIP/123&SIP/456) your phone will show a confusingly high number of missed calls.

For example:

 

SIPXXXXX.cnf:

# Line 1 Settings
line1_name: “510” ; Line 1 Extension\User ID

line1_displayname: “x510” ; Line 1 Display Name
line1_shortname: “x510” ; Comment next to the button
line1_authname: “510” ; Line 1 Registration Authentication
line1_password: “test” ; Line 1 Registration Password

# Line 2 Settings
line2_name: “510” ; Line 2 Extension\User ID
line2_displayname: “x510” ; Line 2 Display Name
line2_shortname: “x510” ; Comment next to the button
line2_authname: “510” ; Line 2 Registration Authentication
line2_password: “test” ; Line 2 Registration Password

In your sip.conf:

[510]
type=friend
username=510
secret=test
host=dynamic
dtmfmode=rfc2833
context=whatever
canreinvite=no
nat=no
mailbox=510@default
callerid=<510>

In your extensions.conf:

exten => 510,1,Dial(SIP/510,20,mTt)
exten => 510,2,Voicemail(u510@default)
exten => 510,3,Hangup
exten => 510,102,Voicemail(b510@default)
exten => 510,103,Hangup

Asterisk Configuration File Examples

 

sip.conf

[3014]
type=friend ; This device takes and makes calls
host=dynamic ; This host is not on the same IP addr every time
username=3014 ; Username programmed into Cisco phone
secret=mypassword ; Password for device
context=from-sip ; Inbound calls from this phone go to this context
nat=yes ; nat=yes if this phone is behind a NAT box or firewall
callgroup=2 ; the group to which this phone belongs for *8 phone ringing pickup
pickupgroup=2 ; the pickup group allowed from this phone when *8 is dialed
mailbox=3014 ; Activate the message waiting light if this voicemailbox has messages in it

extensions.conf

exten => 3014,1,Dial(SIP/3014,15,t) ; see “show application dial” for options and formats
exten => 3014,2,Voicemail2(u3014) ; go to Voicemail2 if phone is “U”nanswered
exten => 3014,102,Voicemail2(b3014) ; go to Voicemail2 if phone is “B”usy
exten => 3014,103,Hangup ; and then hangup.

voicemail.conf

format=gsm
servermail=mail.myserver.com

attach=no
maxmessage=120
maxsilence=10
pbxskip=yes
fromstring=NPI VM
emailbody=\nVM for x ${VM_MAILBOX} from ${VM_CALLERID} dur: ${VM_DUR} \n
[default]

Note
following sends a text message to a cell phone telling me someone left a voicemail

3014 => 3014,FirstName LastName,4015719329@vtext.com

Troubleshooting Phone Registration

NOTE: 7940/7960 phones (and similar) seem to be limited to a password of 30 characters or less, but recent versions of FreePBX automatically generate 32 character random passwords when creating new extensions. You must modify the auto-generated FreePBX password to be 30 characters or less, or the phones will complain of an error parsing the SIP<mac>.cnf configuration file and fail to register.

From the asterisk command line, execute “sip show peers” and “sip show users” to display the current status of the Cisco phone. If no entries appear in the list for this phone, then review the “username=3014” and “secret=mypassword” in sip.conf to ensure they match the entries programmed into the Cisco phone.

  • CLI> sip show peers

Name/username Host Mask Port Status

3014/3014 67.11.89.61 (D) 255.255.255.255 5060 Unmonitored

  • CLI> sip show users

Username Secret Authen Def.Context A/C
3014 mypassword md5,plaintext from-sip No

Troubleshooting Cisco Phone

The Cisco 79XX phones support telnet. (Enable telnet_level: 2 in the config) To diagnose problems with the Company Directory function noted above (as an example), telnet to the phone’s IP address using the login password provided in the SIP00036BAAD139.cnf file noted above. For example, to diagnose a possible http problem, do the following:

SIP Phone> debug http
Enabling bug logging on this terminal – use ‘tty mon 0’ to disable
debugs: http timestamp
SIP Phone> [11:39:39] Connect2WWWIPPort called IpAddr[0], port[80], hostName[www.mydomain.com]
[11:39:39] Connect2WWWIPPort Sending Request to IpAddr[207.212.93.75], port[80]
[11:39:39] HTTP RECV (ACK CMD)
[11:39:39] HTTP RECV (OPEN CMD)
[11:39:39]
HTTP Send [178] Bytes of Data
Data Packet is:
===============
GET /asterisk/directory.html?name=SIP00036BC38B88 HTTP/1.1
User-Agent: Allegro-Software-WebClient/3.10b1
Host: http://www.mydomain.com
Connection: Close

Troubleshooting Cisco Phone Configuration issues.

 

  • Any configuration parse error warnings are shown in the phone menu (Settings – Status – Status messages). Or from the telnet CLI, you can type “show status”

 

  • Check the file that it reports a problem with. Check the permissions on the TFTP server that it can read the file.

 

  • Carefully check the config file for obvious errors (missing speechmarks, spurious spaces etc.)

If you still cannot locate the problem, you can do the following to erase the phone config and debug it when it loads it back in again:
(Unfortunately this will delete any speed dial keys configured on the handset, and also auto answer setting as these cannot be put back again via TFTP.)

  • Telnet to the phone:

telnet 192.168.1.100

Connected to 192.168.1.100.
Escape character is ‘]’.

Password :*****

Cisco Systems, Inc. Copyright 2000-2005
Cisco IP phone MAC: 000a:8a2c:864a
Loadid: SW: P0S3-08-6-00 ARM: PAS3ARM1 Boot: PC030301 DSP: 4.0(2.0)[A0]
SIP Phone> show status

Current Phone Status
——————–
W350 unprovisioned proxy_backup
W351 unprovisioned proxy_emergency
W310 1 Error(s) Parsing: SIPDefault.cnf

Phone has reported an error parsing the SIPDefault.cnf, but unfortunately does not say exactly what it was!
The warnings about proxy_backup and proxy_emergency are normal in my case because I do not use that feature.

Now (Make sure your TFTP files are in place and that your DHCP server is set to tell your phone the next-server of it.)

SIP Phone> debug xml-events
SIP Phone> debug xml-vars
SIP Phone> erase protflash

Now among the (copious) output you will see the phone parsing the config:

[00:28:46:4136406] —LIST—
[00:28:46:4136407] href=basic
[00:28:46:4136407] card=status
[00:28:46:4136407] icon=WAIT
[00:28:46:4136407] status=Requesting Configuration
[00:28:46:4136408] ——
[00:28:46:4136408] XML Event: href=basic, event=(null), target=(null), action=(null), card=status
[00:28:46:4136410] TFTP: Request file:SIPDefault.cnf from: <x.x.x.x>
[00:28:48:4136630] TFTP: File received successfully!

[00:28:48:4136633] Parse error: var: wibble_foo not found in table
[00:28:48:4136636] Parse error: 1 Errors found

[00:28:48:4136636] %W350 unprovisioned proxy_backup
[00:28:48:4136637] %W351 unprovisioned proxy_emergency
[00:28:48:4136637] %W362 No Valid Line Names Provisioned
[00:28:48:4136649] %W310 1 Error(s) Parsing: SIPDefault.cnf
[00:28:48:4136650] TFTP: Request file:SIP0009E8B4AE3E.cnf from: <x.x.x.x>
[00:28:48:4136668] TFTP: File received successfully!
[00:28:48:4136672] %W350 unprovisioned proxy_backup
[00:28:48:4136673] %W351 unprovisioned proxy_emergency
[00:28:48:4136685] upgrade_check(P0S3-08-6-00)

In this case it did not like my “wibble_foo: thing” in SIPDefault.conf !

Asterisk + SIP + Cisco 7931

The 7931 are a great phone, with a smallish screen and lots of BLF buttons. However, there are no hard buttons for options like settings. The 7931 will configure in a very similar manner to all of the other 79xx phones except for these buttons.

To configure an Applications button (to access directories, missed calls, settings etc), include the following into your SEPmac.cnf.xml:


            <line button="24">
                <featureID>197</featureID>
            </line>

Some of the feature codes available to be connected to buttons:

  • 2 Speed Dial
  • 5 Forward All
  • 19 Privacy
  • 18 Services
  • 104 Conference
  • 123 Meetme
  • 130 DoNotDisturb
  • 194 Messages
  • 195 Directory
  • 197 Applications
  • 198 Headset

 

Asterisk + SIP + Cisco 7975

This is working configuration of my server and runing gr8 with all feature….enjoy it…

Home page:- http://www.linuxbug.org

contact detail:-

Satish Patel
Mobile:- +1-646-327-9153
Email:- satish.lx@gmail.com

Installation method

Copy this configuration file in your tftp root directory and configure your phone for tftp and reboot your ip phone. beafore doing this change your setting accoring your setup.

SEP<MAC_ADDRESS>.cnf

NOTE: MAC_ADDRESS must be in all caps and at least on the 7975g this file name should conclude with the full extention ending as .cnf.xml
To reassure yourself of the actual file name the phone is requesting go into Settings, Status, Status Messages for the results of the TFTP attempts.


<device xsi:type="axl:XIPPhone" ctiid="203849429" uuid="{96f8508b-10ef-f98c-d20d-0471777ec725}">
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol> 
<sshUserId>user</sshUserId> 
<sshPassword>pass</sshPassword> 
<devicePool uuid="{a755aa55-089c-2b47-9603-c7d51b9ca4b5}"> 
<name>Dallas 5.0 Beta</name> 
<dateTimeSetting uuid="{9ec4850a-7748-11d3-bdf0-00108302ead1}"> 
<name>CMLocal</name> 
<dateTemplate>D/M/Y</dateTemplate> 
<timeZone>GMT Standard/Daylight Time</timeZone> 
</dateTimeSetting> 
<callManagerGroup> 
<name>5.0 Beta</name> 
<tftpDefault>true</tftpDefault> 
<members> 
<member priority="0"> 
<callManager> 
<name>71.5.250.225</name> 
<description>CallManager 5.0 Beta Pub - 5.0.1.032</description> 
<ports> 
<ethernetPhonePort>2000</ethernetPhonePort> 
<sipPort>5060</sipPort> 
<securedSipPort>5061</securedSipPort> 
</ports> 
<processNodeName>71.5.250.225</processNodeName> 
</callManager> 
</member> 
</members> 
</callManagerGroup> 
</devicePool> 

<sipProfile> 
<sipProxies> 
<backupProxy></backupProxy> 
<backupProxyPort></backupProxyPort> 
<emergencyProxy></emergencyProxy> 
<emergencyProxyPort></emergencyProxyPort> 
<outboundProxy></outboundProxy> 
<outboundProxyPort></outboundProxyPort> 
<registerWithProxy>true</registerWithProxy> 
</sipProxies> 

<sipCallFeatures> 
<cnfJoinEnabled>true</cnfJoinEnabled> 
<callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI> 
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI> 
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI> 
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI> 
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI> 
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI> 
<rfc2543Hold>false</rfc2543Hold> 
<callHoldRingback>2</callHoldRingback> 
<localCfwdEnable>true</localCfwdEnable> 
<semiAttendedTransfer>true</semiAttendedTransfer> 
<anonymousCallBlock>2</anonymousCallBlock> 
<callerIdBlocking>2</callerIdBlocking> 
<dndControl>0</dndControl> 
<remoteCcEnable>true</remoteCcEnable> 
</sipCallFeatures> 

<sipStack> 
<sipInviteRetx>6</sipInviteRetx> 
<sipRetx>10</sipRetx> 
<timerInviteExpires>180</timerInviteExpires> 
<timerRegisterExpires>3600</timerRegisterExpires> 
<timerRegisterDelta>5</timerRegisterDelta> 
<timerKeepAliveExpires>120</timerKeepAliveExpires> 
<timerSubscribeExpires>120</timerSubscribeExpires> 
<timerSubscribeDelta>5</timerSubscribeDelta> 
<timerT1>500</timerT1> 
<timerT2>4000</timerT2> 
<maxRedirects>70</maxRedirects> 
<remotePartyID>true</remotePartyID> 
<userInfo>None</userInfo> 
</sipStack> 

<autoAnswerTimer>1</autoAnswerTimer> 
<autoAnswerAltBehavior>false</autoAnswerAltBehavior> 
<autoAnswerOverride>true</autoAnswerOverride> 
<transferOnhookEnabled>false</transferOnhookEnabled> 
<enableVad>false</enableVad> 
<preferredCodec>g711</preferredCodec> 
<dtmfAvtPayload>101</dtmfAvtPayload> 
<dtmfDbLevel>3</dtmfDbLevel> 
<dtmfOutofBand>avt</dtmfOutofBand> 
<alwaysUsePrimeLine>false</alwaysUsePrimeLine> 
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail> 
<kpml>3</kpml> 
<phoneLabel>satish</phoneLabel> 
<stutterMsgWaiting>2</stutterMsgWaiting> 
<callStats>false</callStats> 
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer> 
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts> 
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig> 
<startMediaPort>16384</startMediaPort> 
<stopMediaPort>32766</stopMediaPort> 

<sipLines> 
<line button="1"> 
<featureID>9</featureID> 
<featureLabel>5493</featureLabel> 
<proxy>71.5.250.225</proxy> 
<port>5060</port> 
<name>5493</name> 
<displayName>5493</displayName> 
<autoAnswer> 
<autoAnswerEnabled>2</autoAnswerEnabled> 
</autoAnswer> 
<callWaiting>3</callWaiting> 
<authName>5493</authName> 
<authPassword>5493</authPassword> 
<sharedLine>false</sharedLine> 
<messageWaitingLampPolicy>3</messageWaitingLampPolicy> 
<messagesNumber></messagesNumber> 
<ringSettingIdle>4</ringSettingIdle> 
<ringSettingActive>5</ringSettingActive> 
<contact>5493</contact> 
<forwardCallInfoDisplay> 
<callerName>true</callerName> 
<callerNumber>false</callerNumber> 
<redirectedNumber>false</redirectedNumber> 
<dialedNumber>true</dialedNumber> 
</forwardCallInfoDisplay> 
</line> 

<line button="2"> 
<featureID></featureID> 
<featureLabel></featureLabel> 
<speedDialNumber></speedDialNumber> 
</line> 
</sipLines>

<voipControlPort>5060</voipControlPort> 
<dscpForAudio>184</dscpForAudio> 
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy> 
<dialTemplate>dialplan.xml</dialTemplate> 
<softKeyFile>SK50719900-3bee-4594-bc3f-6400e1a33bf0.xml</softKeyFile> 
</sipProfile> 

<commonProfile> 
<phonePassword></phonePassword> 
<backgroundImageAccess>true</backgroundImageAccess> 
<callLogBlfEnabled>2</callLogBlfEnabled> 
</commonProfile> 

<loadInformation>SIP75.8-3-3SR2S</loadInformation> 

<vendorConfig> 
<disableSpeaker>false</disableSpeaker> 
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset> 
<pcPort>0</pcPort> 
<settingsAccess>1</settingsAccess> 
<garp>0</garp> 
<voiceVlanAccess>0</voiceVlanAccess> 
<videoCapability>0</videoCapability> 
<autoSelectLineEnable>0</autoSelectLineEnable> 
<webAccess>1</webAccess> 
<daysDisplayNotActive>1,7</daysDisplayNotActive> 
<displayOnTime>08:00</displayOnTime> 
<displayOnDuration>10:30</displayOnDuration> 
<displayIdleTimeout>01:00</displayIdleTimeout> 
<spanToPCPort>1</spanToPCPort> 
</vendorConfig> 

<versionStamp>1136931633-57191cee-5ffc-4342-b286-4246b4991890</versionStamp> 

<userLocale> 
<name>English_United_States</name> 
<uid>1</uid> 
<langCode>en_US</langCode> 
<version>1.0.0.0-1</version> 
<winCharSet>iso-8859-1</winCharSet> 
</userLocale> 

<networkLocale>United_States</networkLocale> 
<networkLocaleInfo> 
<name>United_States</name> 
<uid>64</uid> 
<version>1.0.0.0-1</version> 
</networkLocaleInfo> 

<deviceSecurityMode>1</deviceSecurityMode> 
<idleTimeout>0</idleTimeout> 
<authenticationURL></authenticationURL> 
<directoryURL></directoryURL> 
<idleURL></idleURL> 
<informationURL></informationURL> 
<messagesURL></messagesURL> 
<proxyServerURL></proxyServerURL> 
<servicesURL></servicesURL> 
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig> 
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices> 
<dscpForCm2Dvce>96</dscpForCm2Dvce> 
<transportLayerProtocol>4</transportLayerProtocol> 
<capfAuthMode>0</capfAuthMode> 

<capfList> 
<capf> 
<phonePort>3804</phonePort> 
</capf> 
</capfList> 

<certHash></certHash> 
<encrConfig>false</encrConfig> 
</device> 

#---------------END-------------------#

If you still cannot find it, try adding “debug config” which will generate even more config debugging.

(Note: You can also reset the 7960 by pressing *+6+settings at the same time.)
(Note: additional technical data was displayed but it was clipped from this documentation.)

Check out:
http://www.cisco.com/en/US/products/sw/voicesw/ps2156/products_administration_guide_chapter09186a00801d1988.html
^ This site has all the information you will need to help you work with the phone in the telnet prompt!

See also: