openanswer · openanswer user guide for it administrators / installers / maintainers final v022616...

56

Upload: others

Post on 23-Aug-2020

14 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that
Page 2: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 2

OpenAnswer User Guide for IT & System Administrators / Installers / Maintainers

Version 1.2

Copyright © 2016 VoiceNation, LLC. All Rights Reserved.

The information in this document is furnished for informational use only and is subject to change

without notice. This documentation may NOT be copied, reused, distributed, or modified without prior

written consent of the copyright holder. Contact VoiceNation, LLC, 5089 Bristol Industrial Way, Suite B,

Buford, GA 30518, 866-766-5050 for further information.

VOICENATION, LLC ASSUMES NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS, OMISSIONS, OR

INACCURACIES THAT MAY APPEAR IN THIS DOCUMENT AND MAKES NO WARRANTY OF ANY KIND

WITH RESPECT TO THIS PUBLICATION. IN NO EVENT SHALL VOICENATION, LLC BE LIABLE TO ANY

PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST

PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF

VOICENATION, LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

VOICENATION, LLC EXPRESSLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE

SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS

IS". VOICENATION, LLC HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,

ENHANCEMENTS, OR MODIFICATIONS.

Other product and company names mentioned in this Guide may be the trademarks of their respective

owners. We use trademark names in an editorial fashion to the benefit of the trademark holder;

therefore, these names are not marked with trademark symbols. We cannot attest to the accuracy of

this usage, and usage of a term in this Guide should not be regarded as affecting the validity of any

trademark or service mark.

Page 3: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 3

TABLE OF CONTENTS

1.0 What is OpenAnswer? – Introduction ............................................................................................................. 5

1.1 Purpose and Advantages of Using OpenAnswer ............................................................................................... 5

1.2 Intended Audience................................................................................................................................................... 5

1.3 How to Use This Guide ........................................................................................................................................... 5

1.4 System Description and Key Features ................................................................................................................. 6

1.4.1 OpenAnswer ........................................................................................................................................................ 8

1.4.2 OpenConnector ................................................................................................................................................... 8

1.4.3 OpenQview ........................................................................................................................................................... 8

2.0 What Do I Need In Order to Use OpenAnswer? - System Requirements.................................................. 9

2.1 Overview ................................................................................................................................................................... 9

2.2 SIP Trunk Provider Requirements ...................................................................................................................... 11

2.3 Server Requirements ............................................................................................................................................ 11

2.3.1 Hardware Requirements .................................................................................................................................. 11

2.3.1.1 Expected Performance vs. Hardware .................................................................................................... 11

2.3.1.2 Minimum Requirements vs. Recommended Requirements ............................................................... 11

2.3.2 Operating System Requirements .................................................................................................................... 12

2.3.2.1 Supported Systems vs. Recommended Systems ............................................................................... 12

2.3.3 Additional Software Components ................................................................................................................... 12

2.3.4 Internet Connection & Supported Browsers .................................................................................................. 12

2.4 Agent Requirements ............................................................................................................................................. 13

2.4.1 Hardware Requirements .................................................................................................................................. 13

2.4.1.1 Workstation ................................................................................................................................................ 13

2.4.1.1.1 Web Browsers Supported .................................................................................................................. 13

2.4.1.1.2 Minimum Requirements vs. Recommended Requirements ......................................................... 13

2.4.1.2 Telephones ................................................................................................................................................ 13

2.4.1.2.1 SoftPhone ............................................................................................................................................. 13

2.4.1.2.2 Hard Phone .......................................................................................................................................... 14

2.4.1.2.3 Headsets .............................................................................................................................................. 14

3.0 What is the Recommended Installation Procedure? – Two Servers ....................................................... 15

3.1 Overview of What’s Needed ................................................................................................................................ 15

3.2 Supported Systems vs. Recommended Systems ............................................................................................ 15

3.3 Configure Server #1 – Install Asterisk + FreePBX ........................................................................................... 16

3.3.1 Operating System Installation from the Official Distribution Site ................................................................ 16

3.3.2 Configuration of Inbound Routes .................................................................................................................... 18

Page 4: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 4

3.4 Configure Server #2 – Install OpenAnswer Suite ............................................................................................. 18

3.4.1 Preliminary Configurations ............................................................................................................................... 18

3.4.2 Dependency Installations ................................................................................................................................. 21

3.4.3 OpenAnswer Packages Installation ................................................................................................................ 24

3.4.4 Database and Webserver Configuration ........................................................................................................ 24

3.4.5 Installation and Configuration of OpenAnswer Component ........................................................................ 30

3.4.5.1 Download Source Code Files ................................................................................................................. 30

3.4.5.2 Finish Installation and Configuration of OpenAnswer Component ................................................... 30

3.4.6 Installation and Configuration of OpenConnector Component ................................................................... 32

3.4.7 Installation and Configuration of OpenQview Component (OPTIONAL) .................................................. 33

3.4.8 Add Cron Jobs to Set Up Other Task Executions ........................................................................................ 34

3.4.8.1 Timing Syntax ........................................................................................................................................... 35

3.4.8.2 Add Specific Cron Jobs ........................................................................................................................... 36

4.0 How Do I Install Everything on Just One Server? – Install Asterisk + FreePBX + OpenAnswer ........ 37

5.0 How Do I Fix This? – Common Errors and Troubleshooting Tips ........................................................... 47

6.0 Additional Support ........................................................................................................................................... 48

7.0 Documentation Feedback ............................................................................................................................... 49

8.0 Appendix ............................................................................................................................................................ 50

8.1 Asterisk Server Setup – Dialplan Example for OpenAnswer .......................................................................... 50

Index ................................................................................................................................................................................ 55

Page 5: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 5

1.0 What is OpenAnswer? – Introduction

1.1 Purpose and Advantages of Using OpenAnswer

OpenAnswer is a dynamic, cross-platform application designed for inbound call centers

and telephone answering service providers. OpenAnswer is an open source software

package that extends the functionality of standard PBX systems (specifically Asterisk) for

call centers of all sizes. The application is primarily written in PHP and JavaScript and is

designed from the ground up to be easily customized.

OpenAnswer is built on the open source telephony software Asterisk and has been

carefully crafted to support busy call centers of all sizes. It is highly configurable and

built using the latest web development protocols including node.js, PHP and jQuery.

This means that your IT team can install and customize the software as needed on a

LAMP stack with no licensing hassles or contracts.

1.2 Intended Audience

This Guide is intended to be used by IT or System Administrators and others

experienced in working with server applications. This Guide should be used with the

OpenAnswer Open Source Telephone Answering Software to configure your

organization’s server to communicate with the OpenAnswer software applications.

Administrators should be familiar with the command line interface and should be

comfortable configuring ports and network traffic routing. Administrators should also

be comfortable working with the Linux operating system.

1.3 How to Use This Guide

This Guide serves as a reference manual for installing and configuring the OpenAnswer

Telephone Answering Software on your server. The recommended procedures listed

throughout this Guide are intended to help you easily and safely integrate all of the

necessary OpenAnswer components into your call center environment.

Page 6: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 6

There are helpful notations and symbols incorporated throughout this Guide and are

annotated by the following:

This symbol indicates that a failure to follow the instructions provided could cause the system to fail or be unusable or could prevent your software from working properly.

Code

This formatting indicates the actual code that should be input for the installation or configuration steps described in this Guide. Such code will be highlighted with a gray background and in bold Courier font typeface.

This symbol indicates an example is illustrated for purposes of further explaining the concept or topic presented. The screen shot examples used throughout this Guide are for illustrative purposes only and should not be construed as actual client data.

This symbol indicates that there is a bit of additional detail to go along with the subject, topic or illustration listed.

This symbol indicates that there is another section in the Guide or an external resource that contains more information about the subject or topic listed.

This symbol indicates a useful idea or suggestion for improving your user experience.

1.4 System Description and Key Features

For years, the call center industry, and other businesses and organizations alike, have been held back and bound by a locked-in, rigid, very expensive call center solution mindset. This solution consisted of a business or organization needing to set-up a stationary workstation, phone, and computer for each call center agent that was needed in a sales, customer service, or hospitality environment. After spending hundreds of thousands of dollars on the call center setup itself, the business would then need to purchase software and licenses to be able to take, route, and process calls. This

CAUTION

EXAMPLE

NOTE

REFERENCE

TIP

Page 7: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 7

could be close to $1,000 per seat. This does not include what might be spent on scaling and flexing the call center for growth, after-hours, additional advanced functions, etc. OpenAnswer is here to change this whole dynamic and turn the call center and answering service software industry upside down. OpenAnswer is the state of the art telephony solution that will make your call center manageable, flexible, and scalable for years to come. Starting with a selection of features that are well above what is currently availability in normal, basic call center software packages and what is considered market standard, we have built a software solution that is ready for a business to spin up and begin working in a shorter time frame and drastically lower cost, with a richer feature set out of the gate. OpenAnswer is a web-based open source platform with no contracts, intuitive administration, highly configurable, and a clean user interface. With the ease of setting up in-house or remote agents and the free Appointment setting feature, which is usually another cost on top of the extreme cost of an in-house answering service solution, you have to wonder why a business is not already using this comprehensive new solution. As you can see, the benefits of OpenAnswer are substantial and keep piling up. From extreme cost savings to growth solutions and scalability, to business sustainability, businesses everywhere and of every type can utilize this groundbreaking call center solution starting today. If you think it can’t get better than that, well it can. We have a Commercial OpenAnswer solution available that includes even more robust features as well as access to a certified OpenAnswer Tech Support agent. For more information on this solution please go to: www.voicenation.com/openanswer or call 1-866-766-5050, today. Whether you are a non-profit with a low budget, a startup company just getting your wheels turning, or a solid business that is growing by leaps and bounds, you can plainly see that the OpenAnswer call center software solution is what you need to be able to make your business or organization successful and reap the benefits of growth. If you are a non-profit, please consider reading our case study with GeorgiaCALLS, a non-profit Re-entry program located in Georgia that utilizes OpenAnswer for its call center. You will find the case study HERE. OpenAnswer is a browser-based call center software suite designed to interface with the Asterisk Open-Source PBX. When you install the OpenAnswer software suite, there are actually three different components that are installed:

OpenAnswer - call center browser application (CakePHP application).

Page 8: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 8

NOTE

REFERENCE

OpenConnector – Node.js application running as a daemon that connects OpenAnswer and OpenQview clients to the Asterisk server.

OpenQview - real-time call center monitoring browser application (CakePHP application).

OpenQview is an OPTIONAL application and does not need to be installed in order for the call center software to work.

For a bit more information on OpenAnswer, OpenConnector or

OpenQview, please refer to the next sections.

1.4.1 OpenAnswer

OpenAnswer is the web-based user interface used by the agents. OpenAnswer

is freely available to download, install, and modify within the AGPL license

constraints. There are no licensing fees and call center owners get unlimited

seats and scalability in their call center. OpenAnswer is operating system-

independent and simply requires a properly configured Asterisk server and a

modern browser for the agent station.

1.4.2 OpenConnector

OpenConnector is the non-visible piece of the application that runs behind the

scenes. OpenConnector translates all of the communication between

OpenAnswer, OpenQview and the back-end applications (e.g., Asterisk call

manager).

1.4.3 OpenQview

OpenQview is the real-time dashboard for call center supervisors and managers.

Built-in reporting features in OpenQview analyze call flow and allows for real-

time call and queue monitoring.

Page 9: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 9

REFERENCE

NOTE

2.0 What Do I Need In Order to Use OpenAnswer? - System Requirements

2.1 Overview

To ensure trouble-free operation, you should pay special attention to the following

MINIMUM requirements for your server configuration:

32-bit Linux operating system

2 GHz processor (Pentium 4 or higher)

4 GB RAM

T-1 level Internet speeds

64 kbps dedicated bandwidth available for each simultaneous phone call you

expect

The hardware and software requirements needed for successful installation and

operation of the OpenAnswer application suite include the following:

Asterisk server running version 13

OpenAnswer will also work with Asterisk version 11.

FreePBX (OPTIONAL)

FreePBX is an all-in-one platform that installs everything you need to build a

phone system. This is highly recommended for all but the most advanced IT or

Systems Administrators.

This Guide will reference setting up the Asterisk server using

the FreePBX GUI manager for Asterisk. See Section 4.0 for

instructions for installing on a bare system.

Page 10: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 10

REFERENCE

NOTE

NOTE

CAUTION

A Linux webserver with the following installed:

o LAMP

o Redis server

o Node.JS (tested with v0.12.3)

o Node version manager (nvm)

This will allow easy installation of different node

versions and easy switching between versions.

o Node-gyp

yum install node-gyp

This is required to compile some of the node

module binaries.

o mysql-devel

yum install mysql-devel

o PHP phpredis extension (https://github.com/phpredis/phpredis)

Each of the OpenAnswer components requires an assigned domain and should have the identical primary domain.

OpenAnswer oa.mydomain.com

OpenConnector oc.mydomain.com

OpenQview oq.mydomain.com

Make sure .htaccess override and mod_rewrite are enabled on the

OpenQview (if installed) and OpenAnswer directories.

Refer to http://book.cakephp.org/2.0/en/installation/url-

rewriting.html for more information.

EXAMPLE

Page 11: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 11

TIP

NOTE

2.2 SIP Trunk Provider Requirements

A SIP (Session Initiated Protocol) is the technology used for establishing a voice

communication session on a data network (e.g., over the Internet). A SIP session might

be a regular voice-over IP (VoIP) phone call between two participants or a multi-party

conference call.

A SIP Trunk provides the same service you get from a traditional analog phone line. But

instead of a physical wire, a SIP Trunk is a “virtual” phone line which is provided by a SIP

trunk provider. SIP trunking eliminates the need for a physical connection to a phone

company.

In order to take advantage of SIP trunking, you must have:

a PBX that connects to all internal end users;

an Internet telephony service provider (ITSP) and

a gateway that serves as the interface between the PBX and the ITSP.

As a typical rule of thumb, you’ll need approximately one SIP Trunk

for each 2-3 users.

Network considerations that must be considered include total

available bandwidth, quality of service (QoS), and firewalls.

2.3 Server Requirements

2.3.1 Hardware Requirements

2.3.1.1 Expected Performance vs. Hardware

2.3.1.2 Minimum Requirements vs. Recommended Requirements

Page 12: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 12

CAUTION

CAUTION

2.3.2 Operating System Requirements

2.3.2.1 Supported Systems vs. Recommended Systems

The OpenAnswer application suite is designed to run on most Linux

distributions, including:

CentOS

Debian

Fedora

Red Hat

Ubuntu

OpenAnswer is compatible with Red Hat/CentOS 6 or higher. However,

CentOS 6.6 has been tested and is the recommended version.

We only currently test against CentOS 6 distributions.

Any attempt to use a different distribution is at the

discretion of the user.

2.3.3 Additional Software Components

2.3.4 Internet Connection & Supported Browsers

We recommend that each agent workstation has access to high speed

broadband Internet in order to eliminate delay or lagging issues with the

application.

The OpenAnswer application suite has been successfully tested with:

Mozilla Firefox

Google Chrome

While other browsers may function correctly, we do not

currently recommend or support them.

Page 13: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 13

2.4 Agent Requirements

2.4.1 Hardware Requirements

2.4.1.1 Workstation

2.4.1.1.1 Web Browsers Supported

Mozilla Firefox and Google Chrome are officially supported

and tested browsers for the OpenAnswer application suite.

2.4.1.1.2 Minimum Requirements vs. Recommended Requirements

Agent workstations should have, at a MINIMUM, the following

specifications:

Pentium 4

2 Ghz

1 GB RAM

Any operating system that can run the supported

browsers

For best performance, we recommend:

2.6 Ghz Intel Core 2 Duo or greater

2 GB RAM or greater

2.4.1.2 Telephones

2.4.1.2.1 SoftPhone

A softphone is basically a piece of software that resides on an

agent's PC. The agent connects a telephony headset to his PC

and can then make and take calls without the use of a

traditional telephone.

Page 14: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 14

OpenAnswer can support softphone technology, but this is

not the recommended approach. A softphone setup often

competes with other applications for resources. And this,

coupled with other potential network issues, can adversely

affect audio and call quality.

2.4.1.2.2 Hard Phone

A hard phone is what we know as the traditional telephone –

the physical phone with a dial pad and a handset that resides

on the agent's desktop. This is the recommended phone type

for OpenAnswer due to its reliability (voice quality,

emergency calls, agent usage).

The recommended brands that have been tested include:

Avaya

Cisco

Digium

Polycom

2.4.1.2.3 Headsets

Headsets are essential for all agents of a call center. We

recommend noise-cancelling headsets since they block out

background noise. Detachable components are also

preferred, as this helps to promote good hygiene.

A supervisor cable is a useful and cost-effective device that

allows managers to listen in on calls for training and quality

control purposes.

Page 15: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 15

TIP

3.0 What is the Recommended Installation Procedure? – Two Servers

3.1 Overview of What’s Needed

This set of installation instructions assumes that all three components (OpenAnswer,

OpenConnector, OpenQview) are installed on the same server. These instructions also

assume that Linux is running with the necessary components already installed (as

previously discussed under System Requirements in Section 2.1)

The two CakePHP installations (OpenAnswer and OpenQview)

should be assigned domain names that have the same primary

domain (e.g., oa.mydomain.com and oq.mydomain.com).

The general installation process, described in the sections that follow, will look like this:

3.2 Supported Systems vs. Recommended Systems

We recommend installing FreePBX and Asterisk from the official FreePBX Distribution.

We also recommend using Asterisk 13. However, Asterisk 11 will also work with

OpenAnswer.

SERVER #1:

I) Install FreePBX + Asterisk

II) Configure Asterisk

settings

SERVER #2: III) Complete Preliminary Configurations

IV) Install OA Dependencies

V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA

VIII) Install & Configure OC

IX) Install & Configure OQ

Page 16: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 16

3.3 Configure Server #1 – Install Asterisk + FreePBX

3.3.1 Operating System Installation from the Official Distribution Site

Step Action

1

Install FreePBX and Asterisk 13

Download from http://schmoozecom.com/distro-download.php

Next, there are a few Asterisk settings that we have to configure. (continued on next page)

SERVER #1:

I) Install FreePBX + Asterisk

II) Configure Asterisk Settings

Page 17: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 17

REFERENCE

CAUTION

NOTE

Step Action

2

Configure the API to allow OpenAnswer to communicate with Asterisk: /etc/asterisk/manager.conf

3

Then add the following under the [admin] section: [oa-admin]

secret=Password

deny=0.0.0.0/0.0.0.0

permit=127.0.0.1/255.255.255.0

read=system,call,log,verbose,command,agent,user,all

write=system,call,log,verbose,command,agent,user,all

4

Then add in the queues for the proper call routing. The PBX system requires at least one queue to be set up within FreePBX. The Asterisk setup

illustrated in this Guide assumes that the user has set up the necessary queues and extensions for the calls to be routed properly to the agents.

Parking a call in OpenQview requires that a Park Queue is created in FreePBX. By default, OpenConnector expects the park queue to be

Queue 998. Modify the asterisk_park_queue setting in

OpenConnector’s settings.js file.

5

The Asterisk server requires some additional customization of the Dialplan in order for OpenAnswer to work properly. Set up your extensions for your Dialplan: /etc/asterisk/extensions_custom.conf

A sample Dialplan can be found in the Appendix or at

http://www.voicenation.com/openanswer/documentation/installation/asterisk

SERVER #1:

I) Install FreePBX + Asterisk

II) Configure Asterisk Settings

Page 18: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 18

NOTE

CAUTION

CAUTION

3.3.2 Configuration of Inbound Routes

3.4 Configure Server #2 – Install OpenAnswer Suite

These instructions assume that you are familiar with editing files manually using the Vi

editor, Nano, or another suitable text editor within Linux.

In addition, the example commands illustrated here are written with the assumption

that you are using the root user account.

If that is not the case, you will need to prepend most of the

commands with ‘sudo’ in order to perform them as a

superuser in Linux.

These instructions assume that you have already completed the basic

installation of CentOS 6.6 on the server, and this server is configured

with Internet access available.

3.4.1 Preliminary Configurations

All of the example commands listed here assume that you are using the

recommended CentOS 6.6 distribution.

These instructions may require modification or

alternate commands if you are using a different OS

distribution.

Page 19: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 19

NOTE

Step Action

6

Make sure you are logged into the server through the console or SSH as the root user or can perform any commands required as the superuser (sudo).

7

SELinux

By default, SELinux is installed and active on CentOS 6.6 and will interfere with the installation and usage of OpenAnswer unless properly configured. Therefore, for purposes of these installation instructions, we will disable SELinux:

A) Edit the file: /etc/selinux/config

B) Change the line “SELINUX=” to “SELINUX=disabled”

C) Save the file

D) Reboot the server for the changes to take effect

8

IPTables

IPTables is the default software firewall that is included with CentOS 6.6. It may be configured to only allow specific network access to the server. Those specific configurations are outside the scope of this Guide. Therefore, for purposes of these installation instructions, we will disable IPTables:

A) /etc/init.d/iptables save

B) /etc/init.d/iptables stop

C) chkconfig iptables off

After this install is complete, you may re-enable IPTables with rules that allow for recommended access to ports 22, 80, 443, and 8081.

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 20: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 20

CAUTION

Step Action

9

EPEL

The Extra Packages for Enterprise Linux (EPEL) repository contains additional packages for Linux that include some of the prerequisites that OpenAnswer requires. Therefore, for purposes of these installation instructions, we will enable the EPEL repository:

A) yum install epel-release –y

As of November 2015, the installed configuration has an issue that must be manually resolved.

To resolve this issue, we must perform the following additional steps:

B) Manually edit the file: /etc/yum.repos.d/centos.repo

C) Modify the URL for all lines that begin with mirrorlist= so that https:// is instead changed to http://

D) Save the file

10

CentOS

Update the CentOS with the most recent packages: yum update

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 21: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 21

3.4.2 Dependency Installations

Now it’s time to install the remaining OpenAnswer dependencies.

Step Action

11

WGET

WGET is used for non-interactive downloading of files from the Internet and supports HTTP, HTTPS , and FTP protocols. The command to install this is: yum install wget -y

12

HTTPD

HTTPD is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. OpenAnswer uses this to serve browser requests from clients. The command to install this is: yum install httpd -y

13

MySQL

MySQL provides a collection of command-line utilities that are used for maintaining and administering MySQL servers. The command to install this is: yum install mysql -y

14

MySQL Server

MySQL server is the database engine used by OpenAnswer. The command to install this is: yum install mysql-server –y

15

MySQL Devel

MySQL devel provides the shared development libraries for MySQL that are used by other components for MySQL access. The command to install this is: yum install mysql-devel –y

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 22: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 22

Step Action

16

PHP

PHP is the server side scripting language and interpreter upon which OpenAnswer is built. The command to install this is: yum install php –y

17

GIT

GIT is a version control system and method for interfacing with a remote software repository (such as the ones used by OpenAnswer). The command to install this is: yum install git –y

18

PERL

LIBWWW-PERL is a collection of perl modules that provides the ability to interface with www sites. These modules are used by other components for interfacing with the Internet. The command to install this is: yum install perl-libwww-perl –y

19

NVM

NVM is a node version manager and allows you to easily install and manage multiple versions of node. For purposes of these installation instructions, we use it so that we can download and use a specific version of node that has been tested to work with OpenAnswer. To install NVM:

A) wget -qO- http://raw.githubusercontent.com/creationix/n

vm/v0.29.0/install.sh | bash

B) Log out of the server and log back in (the installation requires

that you reload your terminal session).

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 23: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 23

Step Action

20

NODE.JS

NODE.JS is a JavaScript runtime engine that allows for the creation of servers that can process event-driven functions. OpenConnector runs on top of it to process events between OpenAnswer, OpenQview, and Asterisk. The command to install this is: nvm install v0.12.3

21

PHP-MySQL

PHP-MYSQL is a library for accessing MySQL databases from within PHP. The command to install this is: yum install php-mysql –y

22

PHP-XMLRPC

PHP-XMLRPC is a PHP library for working with XMLRPC servers. The command to install this is: yum install php-xmlrpc –y

23

REDIS

REDIS is an in-memory data structure store, much like a database server such as MySQL. However, REDIS is designed to store very simple structures and retrieve them quickly. OpenAnswer uses this as a way to quickly store PHP:and retrieve browser session information, such as login data. The command to install this is: yum install redis –y

24

PHP-REDIS

PHP-REDIS is a PHP library for working with the REDIS in-memory data structure store. The command to install this is: yum install php-redis –y

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 24: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 24

3.4.3 OpenAnswer Packages Installation

Next we need to download and decompress the OpenAnswer installation file.

Step Action

25

To download and decompress the tarball (tar archive file):

A) cd/var/www/html/

B) wget

http://www.voicenation.com/downloads/OpenAnswer

_1.0.2.tar.gz

C) tar xvfz OpenAnswer_1.0.2.tar.gz

This should create the following three (3) directories under “/var/www/html/”:

i) openanswer ii) openconnector iii) openqview

3.4.4 Database and Webserver Configuration

Next we need to configure MySQL since by default, MySQL is preconfigured with

a blank root password, anonymous user access, and a set of test databases. With

this next set of instructions, we will set a root password and configure some

security options as well.

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages VI) Configure MySQL, REDIS,

APACHE VII) Install & Configure OA

VIII) Install & Configure OC IX) Install & Configure OQ

Page 25: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 25

CAUTION

NOTE

CAUTION

Step Action

26

Start up the installed server: service mysqld start

27

Run the MySQL secure installation script and follow the instructions it provides: mysql_secure_installation

Make sure to specify a root password and to secure the installation to your preferences.

28

OpenAnswer depends on time zone information provided by MySQL, which is loaded from the operating system into a set of tables. The command to run this is: mysql_tzinfo_to_sql /usr/share/oneinfo | mysql -u root -p mysql

Make sure to enter your MySQL root password when prompted.

You may see one or two errors about time zones that could not be loaded. This is normal!

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 26: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 26

Step Action

29

MySQL

Now we need to configure a user for OpenAnswer to use when connecting to MySQL.

A) mysql -u root -p

B) Log in using the root password you created for MySQL

C) In the MySQL client: create user oauser@'%' identified by 'PASSWORD'

Replace PASSWORD with the password you want to use for your installation.

While still in the client, perform the following:

D) GRANT USAGE ON *.* TO ‘oauser’@’%’ IDENTIFIED BY ‘PASSWORD’ Again, replace PASSWORD with the password you are using for your installation.

Create the database used by OpenAnswer:

E) create database openanswer Create the database used by OpenQview:

F) create database openqview Then, while still in the client:

G) grant all privileges on openanswer.* to oauser@’%’

H) grant all privileges on openqview.* to oauser@’%’

I) exit to exit the client

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 27: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 27

Step Action

30

MySQL

Next we need to load the OpenAnswer and OpenQview table structures. Execute the following:

A) mysql –h localhost –u root –p openanswer < /var/www/html/openanswer/openanswer.sql

B) mysql –h localhost –u root –p openqview < /var/www/html/openqview/openqview.sql

31

MySQL

Next we need to restart MySQL and configure it to automatically start when the server boots up.

A) service mysqld restart

B) chkconfig mysqld on

32

REDIS

We next need to specify a password for our Redis server and configure it to automatically start. Edit the file: /etc/redis.conf :

A) In the SECURITY section of this file, uncomment the line that starts with requirepass

B) Modify the password to what you want to use

C) Save the file

D) Restart Redis: service redis restart

E) Configure Redis to start up on boot: chkconfig redis on

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 28: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 28

CAUTION

Next we need to set up our Apache configuration by enabling .htaccess override

for OpenAnswer/OpenQview and by enabling the ‘LoadModule rewrite_module’

and ‘mod_rewrite.so’. Then we will set up the VirtualHosts.

Step Action

33

APACHE

Create /etc/httpd/conf.d/openanswer.conf and enter the following: <Directory "/home/openAnswer/app/webroot">

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

< /Directory>

34

APACHE

Create /etc/httpd/conf.d/openqview.conf and enter the following:

This step is NOT necessary if you are NOT installing OpenQview!

<Directory "/home/openQview/app/webroot">

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

< /Directory>

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 29: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 29

CAUTION

Step Action

35

VirtualHost

Add virtual hosts for OpenAnswer, OpenQview (if installed) and VOIP in /etc/httpd/conf/httpd.conf

Add the following to the bottom: <VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /var/www/html/admin

ServerName voip.mydomain.com

ErrorLog logs/voip.mydomain.com-error_log

CustomLog logs/voip.mydomain.com-access_log common

< /VirtualHost>

<VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /home/openAnswer/app/webroot

ServerName oa.mydomain.com

ErrorLog logs/oa.mydomain.com-error_log

CustomLog logs/oa.mydomain.com-access_log common

< /VirtualHost>

The instruction below is NOT necessary if you are NOT installing OpenQview!

<VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /home/openQview/app/webroot

ServerName oq.mydomain.com

ErrorLog logs/oq.mydomain.com-error_log

CustomLog logs/oq.mydomain.com-access_log common

< /VirtualHost>

36

And for good measure: service httpd restart

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 30: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 30

NOTE

CAUTION

3.4.5 Installation and Configuration of OpenAnswer Component

3.4.5.1 Download Source Code Files

Using the download link as outlined here will provide

you with the most recently TESTED version of the

software.

Step Action

37

Go to http://www.voicenation.com/openanswer-download. Enter your email address (optional) and click on the Download button.

38

Rename the OA directory to match your VirtualHost configuration. You must match the location of OpenAnswer to what you have set in your VirtualHost config from above. You can move it to /var/www/html if necessary.

3.4.5.2 Finish Installation and Configuration of OpenAnswer Component

PHP phpredis extension must be installed

(https://github.com/phpredis/phpredis) for

OpenAnswer to work properly.

Once you have downloaded the source code files (see Section 3.4.5.1

above), follow the steps below to complete the installation of the

OpenAnswer component.

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 31: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 31

TIP

Step Action

39

Copy the OpenAnswer source code to the root web directory for the domain name you have configured for OpenAnswer (e.g., oa.mydomain.com).

40

Create the OpenAnswer database: openanswer

41

Execute the sql script openanswer.sql to create the necessary tables: mysql openanswer < openanswer.sql

42

Copy app/Config/core.php.default to app/Config/core.php and modify to reflect your server

setup.

The port setting portion (8081 by default) of the URL specified for OpenConnectorServer should match the websocket port number

specified in OpenConnector's settings.js file.

43

Copy app/Config/database.php.default to

app/Config/database.php and modify to reflect your server setup.

44

Copy app/Config/bootstrap.php.default to app/Config/bootstrap.php and modify to reflect your

server setup.

45

Copy app/Config/email.php.default to app/Config/email.php and modify to reflect your server setup.

46 Make sure app/tmp and all of its subdirectories are owned and writable by the web server user.

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 32: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 32

NOTE

TIP

NOTE

Step Action

47

The installation comes with a default user, having administrative privileges, with the username admin and password admin.

You should be able to pull up the OpenAnswer login page by pointing your web browser to the domain you created

(e.g., http://oa.mydomain.com).

3.4.6 Installation and Configuration of OpenConnector Component

Once you have downloaded the source code files (see Section 3.4.5.1 above),

follow the steps below to complete the installation of the OpenConnector

component.

Step Action

48 Copy the OpenConnector source files into the directory where you want the Node.js application to reside.

49 Copy settings.default.js to settings.js and modify to

reflect your server setup.

50 From that directory, execute npm install to install all of the module dependencies for the Node.js application.

51

To run OpenConnector as a daemon, we created an Upstart script (see misc/openconnector.conf in the downloaded installation package) that runs the Node.js

app at startup and will also restart the app in case of a crash.

If using the Upstart script, place openconnector.conf in the /etc/init directory and make sure to edit the file to match the actual path to the OpenConnector

Node.js installation.

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 33: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 33

TIP

Step Action

52

Upon startup of the server, OpenConnector will automatically start running.

To manually START OpenConnector (using the provided Upstart script), execute start openconnector from the command line.

To manually STOP OpenConnector (using the provided Upstart script), execute stop

openconnector from the command line.

3.4.7 Installation and Configuration of OpenQview Component (OPTIONAL)

Once you have downloaded the source code files (see Section 3.4.5.1 above),

follow the steps below to complete the installation of the OpenQview

component.

Step Action

53 Copy the OpenQview source code to the root web directory (e.g., /var/www/html/openQview).

54 Create the OpenQview database: openqview

55 Execute the sql script openqview.sql to create the necessary tables: mysql openqview < openqview.sql

56 Copy app/Config/core.php.default to app/Config/core.php and modify to reflect your server setup.

57

Copy app/Config/database.php.default to

app/Config/database.php and modify to reflect your server setup.

(continued on next page)

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 34: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 34

TIP

NOTE

Step Action

58

Make sure app/tmp and all its subdirectories are owned and writable by the web server user.

On a Linux server, the web server user is most likely Apache.

59

Point your OpenQview domain name to the OpenQview installation. Ensure that OpenQview shares the same primary domain as the OpenConnector installation (e.g., oq.mydomain.com and oc.mydomain.com).

60 The installation comes with a default user, having administrative privileges, with the username admin and password admin.

3.4.8 Add Cron Jobs to Set Up Other Task Executions

The software utility “Cron” is a time-based job scheduler that is used to schedule

commands or shell scripts to run periodically at certain fixed times, dates, or

other intervals. OpenAnswer relies on cron jobs to perform some background

checks and task executions, including:

1) sending out message summaries;

2) cleaning up the database; and

3) processing the email queue.

To complete our OpenQview installation, we’ll need to set a few cron jobs.

There are two main parts:

1) The first part (e.g., */15****) is where we schedule the timer.

2) The rest of the line is the command as it would run from the command

line.

SERVER #2: III) Complete Preliminary

Configurations IV) Install OA Dependencies V) Install OA Packages

VI) Configure MySQL, REDIS, APACHE

VII) Install & Configure OA VIII) Install & Configure OC

IX) Install & Configure OQ

Page 35: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 35

CAUTION

EXAMPLE

3.4.8.1 Timing Syntax

This is the first part of the cron job string and determines how often and when

the cron job is going to run. It consists of five parts:

minute

hour

day of month

month

day of week

To send out a message summary every fifteen minutes, use the

following timing syntax: 15 * * * *.

Don’t forget to change the necessary items to reflect your

specific installation setup (e.g., your MySQL information),

particularly changing the “mydomain.com” to YOUR specified domain.

Page 36: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 36

3.4.8.2 Add Specific Cron Jobs

Now we’re ready to add our cron jobs.

Step Action

61

#clear out old queue statistics if openQview is installed

0 1 * * * /usr/bin/mysql -uUSERNAME -pPASSWORD -h

localhost openqview -e "DELETE FROM queue_statistics WHERE

created < (now() - INTERVAL 2 MONTH)"

# Check the email queue for emails to send out.

*/2 * * * * /usr/bin/GET

http://oa.mydomain.com/EmailQueues/process >>

/var/log/openconnector/emailqueues.log

# Send out message summaries set at 15, 30, and 60 minute

intervals. Also send out summaries set to send out once a

day at specified time

*/15 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute

/15 >> /var/log/openconnector/OASummary_15.log

*/30 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute

/30 >> /var/log/openconnector/OASummary_30.log

0 */1 * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute

/60 >> /var/log/openconnector/OASummary_60.log

*/5 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute

>> /var/log/openconnector/OASummary.log

# Check for messages that are marked with 'hold until' and

set the minders once time is up

*/5 * * * * /usr/bin/GET

http://oa.mydomain.com/Messages/process_hold_until >>

/var/log/openconnector/HoldUntil.log

SERVER #2: II) Complete Preliminary

Configurations III) Install OA Dependencies IV) Install OA Packages V) Configure MySQL, REDIS,

APACHE VI) Install & Configure OA

VII) Install & Configure OC VIII) Install & Configure OQ

Page 37: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 37

REFERENCE

4.0 How Do I Install Everything on Just One Server? – Install Asterisk + FreePBX + OpenAnswer

The steps listed here are consolidated from the Recommended Installation

procedures discussed in Sections 3.3 and 3.4. Please refer to those sections

for more detailed explanations.

Step Action

1 Install FreePBX and Asterisk 13 by downloading from http://schmoozecom.com/distro-download.php.

2 /etc/asterisk/manager.conf

3

Add under the [admin] section: [oa-admin]

secret=Password

deny=0.0.0.0/0.0.0.0

permit=127.0.0.1/255.255.255.0

read=system,call,log,verbose,command,agent,user,all

write=system,call,log,verbose,command,agent,user,all

4 Add in the queues for the proper call routing.

5

Set up your extensions for your Dialplan. /etc/asterisk/extensions_custom.conf

6 Make sure you are logged into the server through the console or SSH as the root user or can perform any commands required as the superuser (sudo).

7

Disable SELinux.

A) Edit the file: /etc/selinux/config B) Change the line “SELINUX=” to “SELINUX=disabled” C) Save the file D) Reboot the server for the changes to take effect

Page 38: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 38

Step Action

8

Disable IPTables.

A) /etc/init.d/iptables save B) /etc/init.d/iptables stop C) chkconfig iptables off

9

Enable the EPEL repository.

A) yum install epel-release –y B) Manually edit the file: /etc/yum.repos.d/centos.repo C) Modify the URL for all lines that begin with mirrorlist= so that

https:// is instead changed to http:// D) Save the file

10

Update the CentOS with the most recent packages. yum update

Install the remaining OpenAnswer dependencies.

Step Action

11 yum install wget -y

12 yum install httpd -y

13 yum install mysql -y

14 yum install mysql-server -y

15 yum install mysql-devel -y

16 yum install php -y

17 yum install git -y

18 yum install perl-libwww-perl -y

(continued on next page)

Page 39: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 39

Step Action

19

A) wget -qO- http://raw.githubusercontent.com/creationix/nvm/v0.29.0/i

nstall.sh | bash

B) Log out of the server and log back in (the installation requires that you reload

your terminal session).

20 nvm install v0.12.3

21 yum install php-mysql –y

22 yum install php-xmlrpc -y

23 yum install redis –y

24 yum install php-redis –y

Next we need to download and decompress the OpenAnswer installation file.

Step Action

25

To download and decompress the tarball (tar archive file): A) cd/var/www/html/

B) wget

http://www.voicenation.com/downloads/OpenAnswer_1.0.2.tar.gz

C) tar xvfz OpenAnswer_1.0.2.tar.gz

This should create the following three (3) directories under “/var/www/html/”:

i) openanswer ii) openconnector iii) openqview

Then we need to configure the database and webserver.

Page 40: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 40

Step Action

26 service mysqld start

27 mysql_secure_installation

28 mysql_tzinfo_to_sql /usr/share/oneinfo | mysql -u root -p mysql

29

A) mysql -u root -p

B) Log in using the root password you created for MySQL

C) In the MySQL client: create user oauser@'%' identified by 'PASSWORD'

Replace PASSWORD with the password you want to use for your installation.

While still in the client, perform the following:

D) GRANT USAGE ON *.* TO ‘oauser’@’%’ IDENTIFIED BY ‘PASSWORD’ Again, replace PASSWORD with the password you are using for your installation.

E) create database openanswer

F) create database openqview

G) grant all privileges on openanswer.* to oauser@’%’

H) grant all privileges on openqview.* to oauser@’%’

I) exit

(continued on next page)

Page 41: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 41

Step Action

30

A) mysql –h localhost –u root –p openanswer < /var/www/html/openanswer/openanswer.sql

B) mysql –h localhost –u root –p openqview < /var/www/html/openqview/openqview.sql

31

service mysqld restart

chkconfig mysqld on

32

Edit the file /etc/redis.conf :

A) In the SECURITY section of this file, uncomment the line that starts with requirepass

B) Modify the password to what you want to use C) Save the file D) Restart Redis: service redis restart E) Configure Redis to start up on boot: chkconfig redis on

Next we need to set up our Apache configuration by enabling .htaccess override for

OpenAnswer/OpenQview and enabling the ‘LoadModule rewrite_module’ and

‘mod_rewrite.so’. Then we will set up the VirtualHosts.

Step Action

33

Create /etc/httpd/conf.d/openanswer.conf and enter the following: <Directory "/home/openAnswer/app/webroot">

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

< /Directory>

34

Create /etc/httpd/conf.d/openqview.conf and enter the following: <Directory "/home/openQview/app/webroot">

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

< /Directory>

(continued on next page)

Page 42: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 42

Step Action

35

Add virtual hosts for OpenAnswer, OpenQview (if installed) and VOIP in /etc/httpd/conf/httpd.conf

Add the following to the bottom: <VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /var/www/html/admin

ServerName voip.mydomain.com

ErrorLog logs/voip.mydomain.com-error_log

CustomLog logs/voip.mydomain.com-access_log common

< /VirtualHost>

<VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /home/openAnswer/app/webroot

ServerName oa.mydomain.com

ErrorLog logs/oa.mydomain.com-error_log

CustomLog logs/oa.mydomain.com-access_log common

< /VirtualHost>

<VirtualHost *:80>

Header set Access-Control-Allow-Origin "*"

RewriteEngine On

ServerAdmin [email protected]

DocumentRoot /home/openQview/app/webroot

ServerName oq.mydomain.com

ErrorLog logs/oq.mydomain.com-error_log

CustomLog logs/oq.mydomain.com-access_log common

< /VirtualHost>

36 service httpd restart

Now we’re ready to install and configure OpenAnswer.

Step Action

37 Download the source code files from http://www.voicenation.com/openanswer-download.

38 Rename the OA directory to match your VirtualHost configuration.

(continued on next page)

Page 43: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 43

Step Action

39 Copy the OpenAnswer source code to the root web directory for the domain name you have configured for OpenAnswer (e.g., oa.mydomain.com).

40 Create the OpenAnswer database: openanswer

41 mysql openanswer < openanswer.sql

42

cp app/Config/core.php.default app/Config/core.php

Modify to reflect your server setup.

43

cp app/Config/database.php.default app/Config/database.php

Modify to reflect your server setup.

44

cp app/Config/bootstrap.php.default app/Config/bootstrap.php

Modify to reflect your server setup.

45

cp app/Config/email.php.default app/Config/email.php

Modify to reflect your server setup.

46 Make sure app/tmp and all of its subdirectories are owned and writable by the web server user.

47 You should be able to pull up the OpenAnswer login page by pointing your web browser to the domain you created (e.g., http://oa.mydomain.com).

Next we’ll install and configure the OpenConnector component.

Step Action

48 Copy the OpenConnector source code files into the directory where you want the Node.js application to reside.

49

cp settings.default.js settings.js

Modify to reflect your server setup.

50 npm install

(continued on next page)

Page 44: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 44

NOTE

TIP

TIP

Step Action

51

To run OpenConnector as a daemon, we created an Upstart script (see misc/openconnector.conf in the downloaded installation package) that runs the Node.js app at startup and

will also restart the app in case of a crash.

If using the Upstart script, place openconnector.conf in the /etc/init directory and make sure to edit the file to match the actual path to the OpenConnector Node.js installation.

52

Upon startup of the server, OpenConnector will automatically start running.

To manually START OpenConnector (using the provided Upstart script), execute start openconnector from the command line.

To manually STOP OpenConnector (using the provided Upstart script), execute stop openconnector from the command line.

And finally, we’re ready to install and configure the OpenQview component.

Step Action

53 Copy the OpenQview source code to the root web directory (e.g., /var/www/html/openQview).

54 Create the OpenQview database: openqview

55 mysql openqview < openqview.sql

56

cp app/Config/core.php.default app/Config/core.php

Modify to reflect your server setup.

57

cp app/Config/database.php.default app/Config/database.php

Modify to reflect your server setup.

(continued on next page)

Page 45: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 45

REFERENCE

CAUTION

Step Action

58 Make sure app/tmp and all of its subdirectories are owned and writable by the web server user.

59 Point your OpenQview domain name to the OpenQview installation.

60 The installation comes with a default user, having administrative privileges, with the username admin and password admin.

Lastly, to complete our OpenQview installation, we’ll need to set a few cron jobs.

Please refer to Section 3.4.8 for more detailed information on cron jobs.

Don’t forget to change the necessary items to reflect your specific installation

setup (e.g., your MySQL information), particularly changing the

“mydomain.com” to YOUR specified domain.

(continued on next page)

Page 46: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 46

Step Action

61

#clear out old queue statistics if openQview is installed

0 1 * * * /usr/bin/mysql -uUSERNAME -pPASSWORD -h localhost

openqview -e "DELETE FROM queue_statistics WHERE created < (now()

- INTERVAL 2 MONTH)"

# Check the email queue for emails to send out.

*/2 * * * * /usr/bin/GET

http://oa.mydomain.com/EmailQueues/process >>

/var/log/openconnector/emailqueues.log

# Send out message summaries set at 15, 30, and 60 minute

intervals. Also send out summaries set to send out once a day at

specified time

*/15 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute/15 >>

/var/log/openconnector/OASummary_15.log

*/30 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute/30 >>

/var/log/openconnector/OASummary_30.log

0 */1 * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute/60 >>

/var/log/openconnector/OASummary_60.log

*/5 * * * * /usr/bin/GET

http://oa.mydomain.com/MessagesSummary/msg_summary_execute >>

/var/log/openconnector/OASummary.log

# Check for messages that are marked with 'hold until' and set

the minders once time is up

*/5 * * * * /usr/bin/GET

http://oa.mydomain.com/Messages/process_hold_until >>

/var/log/openconnector/HoldUntil.log

Page 47: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 47

5.0 How Do I Fix This? – Common Errors and Troubleshooting Tips

Problem Possible Cause(es) Solution(s)

The following error message appears when you navigate to your OpenQview page in your browser:

You are not authorized to access that location.

An Internal Error Has Occurred.

Installed to a different directory

Check the logs where you installed OpenQview: /var/www/html/openqview/app/tmp/logs/error.log If you installed to a different directory than “openqview,” just replace that in the line above to find your logs.

The following message appears in the OpenQview error log: Table users for model AsteriskUser was not found in datasource asterisk.

OpenQview uses a MySQL table that is installed with FreePBX/Asterisk, and it cannot find that table.

In the following config file, it should be pointing to this Asterisk server/database. You should also check to make sure this is set correctly: /var/www/html/openQview/app/Config/database.php

The default line looks like this: public $asterisk = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'myasterisk.mydomain.com', 'login' => 'username', 'password' => 'password', 'database' => 'asterisk' );

In FreePBX, you should have AT LEAST one (1) queue set up.

Page 48: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 48

6.0 Additional Support

If you experience a problem that is not otherwise addressed in this Guide, follow these steps:

1. Visit our support website at www.voicenation.com/openanswer. This is the fastest source

for up-to-date software information and assistance.

2. Visit our online forum at www.voicenation.com/openanswer/forum.

3. Call our technical support specialists at _______________________ or email them at

_______________________.

Page 49: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 49

7.0 Documentation Feedback

To improve the quality of our OpenAnswer documentation, we invite you to make comments

or suggestions. When doing so, please include as much information about your experience

using this documentation as possible (e.g., which version of OpenAnswer you are using, what

specific topic you are commenting about, etc.).

Email your comments and suggestions to [email protected].

We cannot respond to technical support or project consulting issues at this address. We are

mainly interested in problems with the documentation itself – such as erroneous information,

grammatical and spelling errors, or suggestions for topics to include in the next release of the

software.

Page 50: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 50

8.0 Appendix

8.1 Asterisk Server Setup – Dialplan Example for OpenAnswer

The following is an example of a Dialplan for OpenAnswer. You can copy and paste this

Dialplan into /etc/asterisk/extensions_custom.conf.

[from-pstn-custom]

exten => s,1,Macro(pre-init-tas-vars)

[previous-ext-did-post-custom]

exten => _X.,n,Noop(No Asterisk Route - Lookup DID in TAS)

exten => _X.,n,GotoIf($["${TASACCT}foo" = "foo"]?notfound)

exten => _X.,n,Noop(Found openanswer Acct ${TASACCT} for DID ${FROM_DID})

exten => _X.,n,Noop(Found openanswer Acct Name ${TASNAME} FOR did ${FROM_DID})

exten => _X.,n,Set(__TASPRIORITY=${ODBC_LOOKUPTASPRIORITY(${TASACCT})})

exten => _X.,n,Noop(Found OA Priority ${TASPRIORITY} FOR did ${FROM_DID})

exten => _X.,n,Set(__FROM_DID=${EXTEN})

exten => _X.,n,Set(CDR(userfield)=${TASACCT})

exten => _X.,n,Gosub(app-blacklist-check,s,1)

exten => _X.,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))

exten => _X.,n,Set(__CALLINGPRES_SV=${CALLINGPRES_${CALLINGPRES}})

exten => _X.,n,SetCallerPres(allowed_not_screened)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "1"]?priorityone)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "2"]?prioritytwo)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "3"]?prioritythree)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "4"]?priorityfour)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "5"]?priorityfive)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "6"]?prioritysix)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "7"]?priorityseven)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "8"]?priorityeight)

exten => _X.,n,GotoIf($["${TASPRIORITY}" = "9"]?prioritynine)

exten => _X.,n,Goto(ext-queues,999,1)

exten => _X.,n(priorityone),Noop("TAS DID ${EXTEN} for P1 Q991.")

exten => _X.,n,Goto(ext-queues,991,1)

exten => _X.,n(prioritytwo),Noop("TAS DID ${EXTEN} for P2 Q992.")

exten => _X.,n,Goto(ext-queues,992,1)

exten => _X.,n(prioritythree),Noop("TAS DID ${EXTEN} for P3 Q993.")

exten => _X.,n,Goto(ext-queues,993,1)

exten => _X.,n(priorityfour),Noop("TAS DID ${EXTEN} for P4 Q994.")

exten => _X.,n,Goto(ext-queues,994,1)

exten => _X.,n(priorityfive),Noop("TAS DID ${EXTEN} for P5 Q995.")

exten => _X.,n,Goto(ext-queues,995,1)

exten => _X.,n(prioritysix),Noop("TAS DID ${EXTEN} for P6 Q996.")

exten => _X.,n,Goto(ext-queues,996,1)

exten => _X.,n(priorityseven),Noop("TAS DID ${EXTEN} for P7 Q997.")

exten => _X.,n,Goto(ext-queues,997,1)

exten => _X.,n(priorityeight),Noop("TAS DID ${EXTEN} for P8 Q998.")

exten => _X.,n,Goto(ext-queues,998,1)

exten => _X.,n(prioritynine),Noop("TAS DID ${EXTEN} for P9 Q999.")

exten => _X.,n,Goto(ext-queues,999,1)

Page 51: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 51

exten => _X.,n(notfound),Noop("TAS DID ${EXTEN} not found.")

[from-internal-custom]

exten => 555,1,Macro(user-callerid)

exten => 555,2,Authenticate(1234)

exten => 555,3,Read(QVSPYNUM,agent-newlocation)

exten => 555,4,Macro(qview-supervise)

exten => 555,n,Hangup

exten => 556,1,NoOp(Qview Supervise Request)

exten => 556,2,NoOp(${QVSPYNUM})

exten => 556,3,Macro(user-callerid)

exten => 556,4,GotoIf($[{$QVSPYNUM}]?5:6)

exten => 900,1,NoOp(Agent Callback Login from ${CALLERIDNUM})

exten => 900,2,AgentCallbackLogin(,,${CALLERIDNUM}@ext-local)

exten => 900,3,Hangup

[qvapps]

exten => 556,1,NoOp(Qview Supervise Request)

exten => 556,2,NoOp(${QVSPYNUM})

exten => 556,3,Macro(user-callerid)

exten => 556,4,GotoIf($[{$QVSPYNUM}]?5:6)

exten => 556,5,Macro(qview-supervise)

exten => 556,6,NoOp(supervise done)

exten => 556,7,Hangup

[qvredirect]

exten => _X.,1,Set(MIXMONITOR_FILENAME=${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-

%H%M%S)}-${UNIQUEID})

exten => _X.,n,NoOp(QVRedirect to ${EXTEN} and record to ${MIXMONITOR_FILENAME} call from

${CALLERID(num)})

exten => _X.,n,ResetCDR(w)

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,Dial(Local/${EXTEN}@qvredirect-txfr/n)

exten => _X.,n,Goto(ext-queues,998,1)

exten => h,1,Macro(hangupcall)

[qvredirect-txfr]

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,1,Goto(default,${EXTEN},1)

[macro-qview-supervise]

exten => s,1,ChanSpy(SIP/${QVSPYNUM))

[qvmusiconhold]

exten => _X.,1,Answer

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,StartMusicOnHold()

exten => _X.,n,Wait(3600)

exten => _X.,n,Hangup

exten => i,1,Answer

Page 52: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 52

exten => i,n,MusicOnHold()

[qvpark]

exten => h,1,Hangup

exten => _X.,1,Answer

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,Wait(1)

exten => _X.,n,ParkAndAnnounce(,,,ext-local,${QVPARKEDBY},1)

exten => i,1,Answer

exten => i,n,Wait(1)

exten => i,n,ParkAndAnnounce(,,,ext-local,${QVPARKEDBY},1)

[qvmeetme]

exten => h,1,StopMixMonitor()

exten => h,n,Macro(hangupcall)

exten => _X.,1,Answer

exten => _X.,n,NoOp(QVMeetme Bridge ${EXTEN})

exten => _X.,n,ExecIf($["${FROM_ACCT}foo" != "foo"]?Set(CDR(userfield)=${FROM_ACCT}))

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,StopMixMonitor()

exten => _X.,n,SetAMAFlags(billing)

exten => _X.,n,Wait(1)

exten => _X.,n,GotoIf($["${FROM_TASAGENT}foo" != "foo"]?from_tasagent)

exten => _X.,n,MeetMe(${EXTEN},1dFqAx)

exten => _X.,n,MeetMeAdmin(${EXTEN},K)

exten => _X.,n,Hangup

exten => _X.,n,Return()

exten => _X.,n(from_tasagent),Noop("MEETME SETUP FROM AGENT ${FROM_TASAGENT} for

${FROM_DID}")

exten => _X.,n,MeetMe(${EXTEN},1dFqAx)

exten => _X.,n,MeetMeAdmin(${EXTEN},K)

exten => _X.,n,Hangup

exten => _X.,n,Return()

[qvpickup]

exten => h,1,StopMixMonitor()

exten => h,n,Macro(hangupcall)

exten => _X.,1,Answer

exten => _X.,n,NoOp(QVPickup Bridge ${EXTEN})

exten => _X.,n,ExecIf($["${FROM_ACCT}foo" != "foo"]?Set(CDR(userfield)=${FROM_ACCT}))

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,Wait(1)

exten => _X.,n,SetAMAFlags(billing)

exten => _X.,n,MeetMe(${EXTEN},1dFqx)

exten => _X.,n,Hangup

[qvcallpickup]

exten => h,1,StopMixMonitor()

exten => h,n,Macro(hangupcall)

exten => _X.,1,Answer

exten => _X.,n,NoOp(QVCallPickup Bridge ${EXTEN} for ${FROM_TASAGENT})

Page 53: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 53

exten => _X.,n,ExecIf($["${FROM_ACCT}foo" != "foo"]?Set(__TASACCT=${FROM_ACCT}))

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,ExecIf($["${FROM_DID}foo" != "foo"]?Set(CDR(accountcode)=${FROM_DID}))

exten => _X.,n,ExecIf($["${TASACCT}foo" != "foo"]?Set(CDR(userfield)=${TASACCT}))

exten => _X.,n,Set(CDR(agent)=${FROM_TASAGENT})

exten => _X.,n,MeetMe(${EXTEN},1dFqx)

exten => _X.,n,Hangup

[qvremoteagent]

exten => h,1,Hangup

exten => s,1,Answer

exten => s,n,Wait(1)

exten => s,n,Authenticate(5089)

exten => s,n,NoOp(QV Remote Agent Login from ${CALLERIDNUM})

exten => s,n,Wait(1)

exten => s,n,AgentLogin()

exten => s,n,Hangup

exten => _X.,1,Answer

exten => _X.,n,Wait(1)

exten => _x.,n,Authenticate(5089)

exten => _X.,n,NoOp(QV Remote Agent Login from ${CALLERIDNUM})

exten => _X.,n,Wait(1)

exten => _X.,n,AgentLogin()

exten => _X.,n,Hangup

[qvdummy]

exten => _X.,1,NoCDR()

exten => _X.,n,Answer()

exten => _X.,n,Wait(30)

exten => _X.,n,Hangup

exten => h,1,Hangup

[pause-queue-from-internal]

exten => _X.,1,PauseQueueMember(,SIP/${EXTEN})

exten => _X.,n,Goto(from-internal,${EXTEN},1)

[unpause-queue-from-openanswer]

exten => _X.,1,UnPauseQueueMember(,SIP/${FROM_TASAGENT})

exten => _X.,n,Goto(from-openanswer,${EXTEN},1)

[from-openanswer]

exten => h,1,StopMixMonitor()

exten => h,n,Macro(hangupcall)

exten => _X.,1,ExecIf($["${REALCALLERIDNUM}foo" != "foo"]?Set(__KEEPCID=TRUE))

exten => _X.,n,ExecIf($["${FROM_DID}foo" = "foo"]?Set(__FROM_DID=${REALCALLERIDNUM}))

exten => _X.,n,ExecIf($["${TASACCT}foo" = "foo"]?Gosub(app-prep-tas-vars,s,1))

exten => _X.,n,ExecIf($["${FROM_DID}foo" != "foo"]?Set(CDR(accountcode)=${FROM_DID}))

exten => _X.,n,ExecIf($["${TASACCT}foo" = "foo"]?Set(__TASACCT=${FROM_ACCT}))

exten => _X.,n,ExecIf($["${TASACCT}foo" != "foo"]?Set(CDR(userfield)=${TASACCT}))

exten => _X.,n,ExecIf($["${CDR(oc_uniqueid)}foo" =

"foo"]?Set(CDR(oc_uniqueid)=${OCUNIQUEID}))

exten => _X.,n,ExecIf($["${REALCALLERIDNUM}foo" !=

"foo"]?Set(__OUTCID_2=${REALCALLERIDNUM}))

Page 54: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 54

exten => _X.,n,Set(CDR(agent)=${FROM_TASAGENT})

exten => _X.,n,Set(MIXMONITOR_FILENAME=OUT${FROM_TASAGENT}-

${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})

exten => _X.,n,Goto(from-internal,${EXTEN},1)

[app-prep-tas-vars]

exten => s,1,NoOp(In app-prep-tas-vars)

exten => s,n,Set(__TASACCT=)

exten => s,n,Set(__TASACCT=${ODBC_LOOKUPTASDID(${FROM_DID})})

exten => s,n,ExecIf($["${FROM_ACCT}foo" != "foo"]?Set(__TASACCT=${FROM_ACCT}))

exten => s,n,ExecIf($["${TASACCT}foo" !=

"foo"]?Set(__TASNAME=${ODBC_LOOKUPTASNAME(${TASACCT})}-))

exten => s,n,ExecIf($["${TASACCT}foo" != "foo"]?Set(CDR(userfield)=${TASACCT}))

exten => s,n,Return()

[app-check-tas-loop]

exten => s,1,Set(__TASLOOP=)

exten => s,n,ExecIf($["${CALLERID(num)}foo" !=

"foo"]?Set(__TASLOOP=${ODBC_LOOKUPTASDID(${CALLERID(num)})}))

exten => s,n,ExecIf($["${TASLOOP}foo" != "foo"]?Set(__TASNAME=*TASLOOP*-${TASNAME}))

exten => s,n,Return()

[macro-check-meetme-recording]

exten => h,1,MacroExit

exten => h,n,Set(MEETME_RECORDINGFILE=)

exten => h,n,MacroExit

exten => s,1,MacroExit

exten => s,n,Set(MEETME_RECORDINGFILE=)

exten => s,n,MacroExit

[macro-pre-init-tas-vars]

exten => s,1,Set(__FROM_DID=${MACRO_EXTEN})

exten => s,n,Set(CALLINGPRES=0)

exten => s,n,ExecIf($[ "${CHANNEL:0:5}" = "DAHDI" ]?Wait(1))

exten => s,n,Set(CDR(accountcode)=${MACRO_EXTEN})

exten => s,n,Set(CDR(oc_uniqueid)=${UNIQUEID})

exten => s,n,Set(__OCUNIQUEID=${UNIQUEID})

exten => s,n,ExecIf($[${LEN(${MACRO_EXTEN})}>9]?Gosub(app-prep-tas-vars,s,1))

exten => s,n,ExecIf($[${LEN(${MACRO_EXTEN})}>9]?Gosub(app-check-tas-loop,s,1))

exten => s,n,Set(__CALLINGCHANNEL=${CHANNEL})

Page 55: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 55

Index

A

Agent requirements .................................................................. 13

Apache .......................................................................... 28, 34, 41

API............................................................................................. 17

Asterisk ....................................................... 7, 8, 9, 15, 16, 37, 47

Dialplan................................................................................ 50

Settings ................................................................................ 17

Avaya ........................................................................................ 14

C

CakePHP................................................................................ 7, 15

Call Routing ......................................................................... 17, 37

CentOS .............................................................. 12, 18, 19, 20, 38

Chrome ............................................................................... 12, 13

Cisco.......................................................................................... 14

Cron Jobs ...................................................................... 34, 36, 45

D

Debian....................................................................................... 12

Dialplan ......................................................................... 17, 37, 50

Digium....................................................................................... 14

Domain

Assigned .............................................................................. 10

Names ......................................................... 15, 31, 34, 43, 45

Primary .................................................................... 10, 15, 34

E

EPEL .................................................................................... 20, 38

F

Fedora ....................................................................................... 12

Firefox ................................................................................. 12, 13

FreePBX ........................................................ 9, 15, 16, 17, 37, 47

G

GIT ...................................................................................... 22, 38

Google Chrome ......................................................... See Chrome

H

Hard phone .............................................................................. 14

Headsets ................................................................................... 14

htaccess override ......................................................... 10, 28, 41

HTTPD ..................................................................... 21, 29, 38, 42

I

IPTables .............................................................................. 19, 38

L

LAMP .................................................................................... 5, 10

LIBWWW-PERL ................................................................... 22, 38

Linux ....................................................................... 12, 15, 18, 20

Operating system .............................................................. 5, 9

Webserver ..................................................................... 10, 34

LoadModule ....................................................................... 28, 41

M

mod_rewrite ............................................................................ 10

mod_rewrite.so............................................................. 28, 41

Mozilla Firefox .............................................................See Firefox

MySQL ................................. 21, 23, 24, 25, 26, 27, 35, 40, 45, 47

mysql-devel ................................................................... 10, 21

N

Nano ......................................................................................... 18

Node version manager ....................................................... 10, 22

Node.js ...................................................... 5, 8, 10, 23, 32, 43, 44

Node-gyp .................................................................................. 10

NVM .................................................. See Node version manager

Page 56: OpenAnswer · OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS Final v022616 8 NOTE REFERENCE OpenConnector – Node.js application running as a daemon that

OpenAnswer User Guide for IT ADMINISTRATORS / INSTALLERS / MAINTAINERS

Final v022616 56

O

One Server ................................................................................ 37

Online forum............................................................................. 48

OpenAnswer ........................ 7, 8, 9, 10, 17, 19, 20, 24, 30, 34, 50

Dependencies ................................................................ 21, 38

Purpose, Advantages ............................................................. 5

Supported Browsers ............................................................ 12

Supported Systems .............................................................. 12

System Description, Key Features ......................................... 7

OpenConnector ................................ 8, 15, 17, 23, 32, 33, 43, 44

OpenConnectorServer ......................................................... 31

OpenQview ... 8, 10, 15, 17, 23, 26, 27, 28, 29, 33, 34, 41, 42, 44,

45, 47

P

Park queue ................................................................................ 17

Perl ................................................................. See LIBWWW-PERL

PHP ................................................................................. 5, 22, 38

PHP-MYSQL ......................................................................... 23

PHP-REDIS............................................................................ 23

PHP-XMLRPC ....................................................................... 23

Polycom .................................................................................... 14

Port

Number ............................................................................... 31

Setting ................................................................................. 31

Ports ..................................................................................... 5, 19

R

Red Hat ..................................................................................... 12

REDIS....................................................................... 10, 23, 27, 41

rewrite_module .................................................................. 28, 41

S

SELinux ............................................................................... 19, 37

settings.js ............................................................... 17, 31, 32, 43

SIP trunk ................................................................................... 11

SoftPhone ................................................................................. 13

Source code ........................................... 30, 31, 32, 33, 42, 43, 44

Sudo ................................................................................... 18, 19

Support website ....................................................................... 48

System requirements ............................................................... 12

System Requirements

Overview ............................................................................... 9

T

Timing syntax ........................................................................... 35

U

Ubuntu ..................................................................................... 12

Upstart script ................................................................ 32, 33, 44

V

Vi editor .................................................................................... 18

VirtualHost ............................................................. 28, 29, 30, 42

W

WGET ...................................................................... 21, 22, 24, 39