Project

polycom

0.01
No commit activity in last 3 years
No release in over 3 years
Library and utility for interacting with Polycom IP Phones
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0

Runtime

 Project Readme

Polycom

This gem is used for communicating with IP Polycom phones using their XML application interface. It was tested with the following phones:

  • Polycom VVX 410

However, this gem should work with other phones as well.

Installation

Add this line to your application's Gemfile:

gem 'polycom'

And then execute:

$ bundle

Or install it yourself as:

$ gem install polycom

Using in ruby code

There are two classes available for you to query information and push data to your phone:

Poller

This class implements three methods for fetching various pieces of information:

  poller = Polycom::Poller.new (
			:username => 'admin',
			:password => '456',
			:ip_address => '10.0.5.7' )

  puts poller.device_information
  puts poller.network_information
  puts poller.call_line_info

Pusher

This class is used for pushing HTML data or URL to the phone.

  pusher = Polycom::Pusher.new (
			:username => 'admin', 
			:password => '456', 
			:ip_address => '10.0.5.7' )

  pusher.send(:priority => :important, :data => "Hello NSA!")
  pusher.send(:priority => :important, :url => "/index.html")

Command Line Usage

This gem is bundled with an executable called polycom. Simplest usage is the following:

% polycom admin:456@10.0.5.7 -i

Device Information
--------------------
  mac_address         :	 0004fa839af9
  phone_dn            :	 Line1:3000
  app_load_id         :	 4.1.4.7430 20-Mar-13 14:12
  updater_id          :	 5.1.4.0844
  model_number        :	 VVX 410
  timestamp           :	 2013-10-21T14:24:38-05:00


Network Information
--------------------
  dhcp_server         :	 10.0.5.1
  mac_address         :	 0004fa839af9
  dns_suffix          :	 example.com
  ip_address          :	 10.0.5.7
  subnet_mask         :	 255.255.0.0
  provisioning_server :	 10.0.5.2037
  default_router      :	 10.0.5.7
  dns_server1         :	 8.8.4.4
  dns_server2         :	 0.0.0.0
  vlan_id             :	 
  dhcp_enabled        :	 Yes


Call Line Information
-----------------------
  -
  line_key_num        :	 1
  line_dir_num        :	 3000
  line_state          :	 Inactive
  -

Displaying a message on the phones browser

% polycom admin:456@10.0.5.7 -data critical "<h1>Hello World</h1>"

Pushing a URL to be displayed on the phone

You must set the apps.push.serverRootURL value in the phone's configuration. The URL you send will be appended to this value.

% polycom admin:456@10.0.5.7 -url important "/index.html"

Receiving notifications from the phone

This requires you to configure apps.telNotification.URL in the phones configuration to send notification to your computer. The polycom utility comes with a built-in web server (sinatra) to receive and pretty-print notifications from your phone.

% polycom admin:456@10.0.5.7 -n


IMPORTANT:
Set up your Polycom phone to send 'Telephony Event Notification' to http://1.2.3.4:4567.
Please CRTL-C to end this script.

[2013-10-23 13:48:19] INFO  WEBrick 1.3.1
[2013-10-23 13:48:19] INFO  ruby 2.0.0 (2013-05-14) [x86_64-linux]
== Sinatra/1.4.3 has taken the stage on 4567 for development with backup from WEBrick
[2013-10-23 13:48:19] INFO  WEBrick::HTTPServer#start: pid=32608 port=4567
---
PolycomIPPhone:
  CallStateChangeEvent:
    CallReference: 41aa9c00
    CallState: Dialtone
    PhoneIP: 10.0.5.7
    MACAddress: 0004f2839af9
    TimeStamp: '2013-10-23T13:50:56-05:00'
    CallLineInfo:
      LineKeyNum: '1'
      LineDirNum: '1006'
      LineState: Active
      CallInfo:
        CallReference: 41aa9c00
        CallState: Dialtone
        CallType: Outgoing
        UIAppearanceIndex: 1*
        CalledPartyName: 
        CalledPartyDirNum: 
        CallingPartyName: '1006'
        CallingPartyDirNum: sip:1006@example.com
        CallDuration: '0'

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request