Sep
06
2010
0

How to use PHP to reboot a Poycom SIP Phone

I’m knee deep into writing Voice Provision .04(VP4) for VoiceIP Solutions.  Why write another Asterisk GUI?  Because the Trixbox and Elastix software is way to convoluted and makes customization difficult.  They are not well documented and don’t attribute credit back to Asterisk or Digium.

Standard Asterisk scripting and basic macro’s are easier to setup, maintain, develop and troubleshoot.  What I require is a basic PHP SIP/IAX2 user manager that stays out of the dial plan. It must be specifically designed to manage Polycom phones.  This is why I’ve been locked in my room the last 4 weeks and haven’t done any recent articles.  My apologies.

The goals for VP4 are simple, Dynamic realtime SIP user management and standard Asterisk dial plan work via the extensions.conf.  Since VoiceIP Solutions is a certified Polycom reseller, VP4 will include several functions for generating Polycom configuration files and allowing remote reboots of the phones.  In this post I will provide a example of PHP function that reboots a Polycom SoundPoint IP phone by sending a SIP Notify message.

This post assumes you have a basic grasp on LAMP(Linux Apache MySQL PHP).  Also you need a working registered Polycom phone provisioned via a boot server of some kind(HTTP,FTP, TFTP,etc…).  I have a tutorial on that here.

Goals of this Post:
- Install PHP-SIP class from Google Code
- provide example function in PHP

(more…)

Jul
16
2010
0

Resample MP3’s for Polycom Ringtones with Audacity

A customer of VoiceIP Solutions sent me this useful tutorial for re-sampling Polycom Ringtones.   If you have an MP3 you like, it can be re-sampled for use with a Polycom IP SIP phone!  The procedure is pretty straight forward, Install Audacity with yum or your favorite package manager, re-sample the track, then edit the proper Polycom Soundpoint boot files.

Goals of this Post:

- Install Audacity Digital Audio Editor
- Convert a MP3 to Polycom compatible track
- Enable custom special Ringtone on Polycom Soundpoint IP SIP phone

(more…)

Dec
21
2009
0

How to setup auto-provisioning for Polycom SoundPoint IP phones using the Asterisk Appliance

The Digium Asterisk Appliance has built-in features for handling Polycom SIP handsets.  It’s very easy to do and will save you the trouble of individually configuring the settings of each phone.  I have a Digium AA50 configured with a standard dial plan and a Polycom Soundpoint IP 501.

Goals of this Post:

- Configure AA50 Polycom Provisioning
- Configure Polycom SoundPoint IP 501 phone

(more…)

Jun
28
2009
0

Polycom 501 XML configuration file Example

This file is named by the MAC address of your Polycom SoundPoint IP SIP phone followed by, ‘-phone.cfg’.  In your FTP folder you would have a file for each phone - I have a single phone.  It’s MAC is ‘0004F202734B’; so my phones configuration file would be named, ‘0004f202734b-phone.cfg’.  I believe there are other conventions for naming this file as well.

The example below was used to connect my phone with a VoiceIP Solutions Asterisk PBX.  This example shows just a fraction of the many possible features in this line.  For my purposes, I defined the Asterisk server IP address, and it’s SIP credentials.  I also added the NTP server.  The ‘mwi’ tag refers to ‘message waiting information’, here I set the mailbox(s) I’m subscribing to and the extension to check voicemail.   My Asterisk voicemail menu is extension ‘299′.

0004f202734b-phone.cfg:

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<!– Example Per-phone Configuration File –>
<!– $RCSfile: phone1.cfg,v $  $Revision: 1.104.2.2 $ –>
<phone1>
<reg
reg.1.displayName=”5555″
reg.1.address=”5555″
reg.1.auth.userId=”5555″
reg.1.auth.password=”2005″
reg.1.server.1.address=”192.168.1.254″
tcpIpApp.sntp.address=”pool.ntp.org”
tcpIpApp.sntp.gmtOffset=”-33600″
>
<mwi
msg.mwi.1.subscribe=”5555″
msg.mwi.1.callBackMode=”contact”
msg.mwi.1.callBack=”299″
>
</phone1>

Jun
27
2009
3

SOLVED: ProFTP will not start after install on Fedora 11

I was working on a project for VoiceIP Solutions yesterday and I required a FTP server to provision some Polycom Soundpoint IP phones. So I did my usual ‘yum install proftpd’ , followed by ’service proftpd start’, but the service failed to start. So after some poking around - checking user assignment for that process and permissions I found nothing. So I decided to invoke the server from the command line with the ‘-t’ to check for errors:

[root@mattcom1 log]# proftpd -t
Checking syntax of configuration file
- warning: unable to determine IP address of ‘mattcom1′
- error: no valid servers configured
- Fatal: error processing configuration file ‘/etc/proftpd.conf’

The error told me right away that the issue was my ‘/etc/hosts’ file. My server name ‘mattcom1′ was not found in that file. Even though both the Network manager and Network configuration tools showed a hostname, there was actually nothing added to the ‘/etc/hosts’ file. watch out for this one!

Apr
22
2009
0

Asterisk: Creating an Extension to Logout Agents from CallerID

I told a customer for the company I for that I would figure out how to logout agents by CID(Caller ID). So I figured, why not kill two birds with one stone. Today we will create a single Queue, Agent, and dial plan to accomplish this goal. I’m using Asterisk 1.4, Fedora 10 and a Polycom IP SIP phone for my demonstration purposes.

When I started this project four hours ago, I thought I would google my way to another successful blog post(and happy customer), but no…  logging out agents in Asterisk is very unintuitive.  The agentcallbacklogin utility has the exact same prompts for logging in as out.  AgentCallbackLogin (when initiated, from the dial plan)  asks for three things, agent, agent password, and call back number.  To eliminate all these prompts I’m using the ‘$CallerID(num)’ variable to automatically answer the agent and call back number.  So the user 8888 dials ‘1000′ and and AgentCallbackLogin assumes he is AGENT/8888 with a password of ‘8888′.

from /etc/asterisk/extensions.conf

exten => 1000,1,AgentcallbackLogin(${CALLERID(num)}||${CALLERID(num)}@savelono-queue-out)
exten => 1000,n,hangup

(more…)

Apr
08
2009
2

Install Queuemetrics Call Center software for Asterisk on Fedora 10


What makes Asterisk so great is the growing ecosystem of 3rd party software.  For call centers based on Asterisk PBX, the best on the market is Queuemetrics.  This solution allows for over 150 different statistics to be collected.  Here is just a few:

Number of calls
Total call length
Average call length
Average call waiting
Number of unanswered calls
Average time before disconnection
Area code
Number of calls
Total calling time
Average time per call (for taken calls)
Average wait per call
Average position at disconnection (for lost calls)
Number of available agents
Total agent time
Average agent time
Minimum/ maximum agent session duration
Agent availability

If by now you are not convinced take a look at the complete list; you can check out Loway’s site and Queuemetrics here.  I have personally helped setup several commercial call centers(while working for VoiceIP Solutions) with this software and I am impressed at the value and support for our customers purchase.  So today we are going to set up a basic Queuemetrics installation; we will not be covering the Asterisk portion.  Nothing fancy here, but I can get you started.

The goal of this post:

- install Queuemetrics

(more…)

Apr
02
2009
1

How to configure a Polycom SoundPoint IP phone for Asterisk on Fedora 10

In my opinion the best IP business phones on the market are made by Polycom. Anyone that knows anything about the VoIP Industry knows that!  High quality Polycom desk phones combined with Asterisk are a great combination of quality/price. So to that end we’re doing this lab.

Polycom employs several methods of provisioning the SIP phones.  For general configuration Sound Point IP have an excellent built web GUI,  but for multiple phones Polycom has an XML based system as well.  Every Sound Point IP can be provisioned based on MAC address.  Polycom’s provisioning method makes use of TFTP, FTP, or HTTP to deliver firmware updates and individual phone settings.

The goals of this post:

- Configure FTP server for Polycom firmware and configuration

- Configure Asterisk SIP extension

- deploy firmware and XML configuration files to Polycom SoundPoint IP 501 SIP phone

(more…)

Mar
19
2009
4

VoiceIP Solutions offers Asterisk PHP GUI for large scale deployments



VoiceIP Solutions
is a Asterisk ‘consulting & deployment’ company in Seattle Washington.  They deploy Asterisk solutions for businesses of all sizes.  From small offices to universities and call centers.  They have sites deployed all over the United States, but mostly on the West Coast.  I’ve been following them for some time; I guess they started deploying Asterisk before 1.2 was released.  I talked to one of their sales rep’s(I think his name was Liam) about the business and wondered if they had done any development work?  He told me that they had done some PHP work for managing larger installs and proceeded to direct me to one of there engineer/developers.

(more…)

Feb
06
2009
0

Configuring Asterisk for a remote Syslog Server PART I

Syslog & Rsyslog are the mainstay tools of event logging.  Every standard UNIX/Linux based Operating System comes with some version.  Asterisk logging capabilities allow for some or all events to be sent to syslogd for post processing; (that is) to store in a SQL database or for sending logs to a remote syslog server.

If you work on or troubleshoot Asterisk PBX servers than you know there are a many pieces to put together.  Putting together 30 Polycom IP SoundPoint phones, the network, and configuring Asterisk can a huge task.  I tell most Administrators to expect a “shake out” period.  Usually about for a week.

Start with the simplist feature set possible, and work your way out.  However, occasionally dial plan SNAFU’s aren’t noticed right away.  Like for instance when a user cannot dial a certain area code or there is typo in some utility extension.  By this time there might be wide use of your(mostly operational) Asterisk PBX, making it diffacult to watch the CLI and catch the error.  For the record I’m using Rsyslog, Asterisk 1.4.23-rc2 on Fedora 10 i386, 32bit, Intel yada yada… We’ll start by editing the logger.conf file.

/etc/asterisk/logger.conf:

; Logging Configuration
;
; In this file, you configure logging to files or to
; the syslog system.
;
; “logger reload” at the CLI will reload configuration
; of the logging system.

[general]
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
; see strftime(3) Linux manual for format specifiers
;dateformat=%F %T
;
; This appends the hostname to the name of the log files.
;appendhostname = yes
;
; This determines whether or not we log queue events to a file
; (defaults to yes).
;queue_log = no
;
; This determines whether or not we log generic events to a file
; (defaults to yes).
;event_log = no
;
;
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See ‘asterisk -h’ for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
[logfiles]
;
; Format is “filename” and then “levels” of debugging to be included:
;    debug
;    notice
;    warning
;    error
;    verbose
;    dtmf
;
; Special filename “console” represents the system console
;
; We highly recommend that you DO NOT turn on debug mode if you are simply
; running a production system.  Debug mode turns on a LOT of extra messages,
; most of which you are unlikely to understand without an understanding of
; the underlying code.  Do NOT report debug messages as code issues, unless
; you have a specific issue that you are attempting to debug.  They are
; messages for just that — debugging — and do not rise to the level of
; something that merit your attention as an Asterisk administrator.  Debug
; messages are also very verbose and can and do fill up logfiles quickly;
; this is another reason not to have debug mode on a production system unless
; you are in the process of debugging a specific issue.
;
;debug => debug
console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
;full => notice,warning,error,debug,verbose

;syslog keyword : This special keyword logs to syslog facility
;
;

syslog.local1 => verbose

The first time I looked at this I was confused, ‘ ;syslog keyword : This special keyword logs to syslog facility ‘.  This almost implies that ‘keyword’ could be anything.  So what if i call it

/etc/asterisk/logger.conf :

;syslog.local1 => verbose

; replace with

syslog.asterisk => verbose

Now I’ll create a matching entry in the /etc/rsyslog.conf (Fedora 10 uses rsyslog).  Keep in mind you may use /etc/syslog.conf on your system.

/etc/rsyslog.conf:

#rsyslog v3 config file

# if you experience problems, check
# http://www.rsyslog.com/troubleshoot for assistance

#### MODULES ####

$ModLoad imuxsock.so    # provides support for local system logging (e.g. via logger command)
$ModLoad imklog.so    # provides kernel logging support (previously done by rklogd)
#$ModLoad immark.so    # provides –MARK– message capability

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

#=====================================

# Below you will see series of expressions to catch asterisk logs

#Some work, other expressions will not.  Why is that?

#

local0.*                        /var/log/asterisk.log

local1.*                        /var/log/local-cli.log

#The asterisk ‘logger.conf’ file matches entries ‘local1′ and ‘asterisk’.

asterisk.*                    /var/log/asterisk-cli.log

#=====================================

# ### begin forwarding rule ###
# The statement between the begin … end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/spppl/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###