Giter Site home page Giter Site logo

innovazammad's Introduction

Build Status Go Report Card

innovazammad

Forwards call information from an innovaphone PBX to Zammad's generic CTI API.

Overview

innovazammad polls the innovaphone PBX' SOAP API for call events and forwards those to Zammad, using its generic CTI API. It keeps track of call status and attempts to map PBX call events to their equivalents on the Zammad side, including keeping track of forwarded calls.

Installation

Released binaries can be downloaded from the releases page.

From source

To install from source, simply run:

go get github.com/regiohelden/innovazammad

For go < 1.12 this will not respect the exact versions used when doing a release. To ensure the same results as a released binary for older versions of go, do this instead:

git clone https://github.com/regiohelden/innovazammad.git
cd innovazammad
go build

Configuration

Configuration can be supplied as flags, environment variables or in a configuration file (in JSON, YAML or TOML).

The following options are available:

Flag Description Default Required?
--confpath Path to configuration file. /etc/innovazammad.yaml
-l, --loglevel How much logging will be output to stdout (values as supported by logrus). warn
--graceperiod How long to wait for ongoing calls to finish before shutting down or restarting. Restarting may leave orphaned calls on the Zammad side. 60s
--pbx.url Under which URL should innovazammad attempt to connect to the PBX. Including protocol http or https. none ×
--pbx.endpointpath Path under pbx.url where the API is accessible. /PBX0/user.soap
--pbx.user User for authentication with the PBX. To access the API you need to use an Admin Account. none ×
--pbx.pass Password for authentication with the PBX. none ×
--pbx.appname Application name used when connecting to the PBX (informational only). innovazammad
--pbx.monitoruser PBX user object for which events will be monitored. Possibly a 'trunk line'. none ×
--pbx.filterongroup Only events for users in this group will be submitted to Zammad. If not provided, all calls will be submitted. Only filtering one group is supported. none
--pbx.groupcachetime Time to cache group membership information used by pbx.filterongroup. Setting this to 0 causes group membership to be checked for every incoming event. 300s
--zammad.endpointurl URL to Zammad's 'CTI (generic)' endpoint. Can be found in Zammad's integration settings page. none ×
--zammad.trunkprefix Optional prefix to trim from the phone numbers received from the PBX. Normally necessary if calls come through a trunk line. 0
--zammad.countrycode Country code to prepend to area-local phone numbers received from the PBX. 49
--zammad.numberprefix Optional number to prepend to unqualified phone numbers received from the PBX. This should transform an internal extension into an E123 number.

The environment variable names can be created by prefixing the flag name with INNOVAZAMMAD_ and replacing any dot (.) with underscore (_). E.g.: --pbx.url becomes INNOVAZAMMAD_PBX_URL.

Compatibility

Currently innovazammad uses innovaphone's v11 and newer SOAP API (see innovaphone/pbx.wsdl). Older PBX versions might not work.

On the Zammad side, it has been tested against the 2.9, 3.0 and 3.1 branch.

Monitoring

Internal state can be monitored by querying the metrics endpoint:

curl -s localhost:8080/debug/vars

innovazammad's People

Contributors

costela avatar lociii avatar saz avatar wucherpfennig avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.