Polycom::App::Push - Module for sending push requests to Polycom's SoundPoint IP and VVX series VoIP phones


  use Polycom::App::Push;

  my $phone = Polycom::App::Push->new(address => '', username => 'Bob', password => '1234');

  # Send a simple XHTML message to a Polycom phone that will pop-up on the screen
  $phone->push_message({priority => 'normal', data => '<h1>Fire drill at 2:00pm!</h1>'});

  # Request that the phone show the specified web page, relative to the URL specified in the "apps.push.serverRootURL" configuration parameter
  $phone->push_message({priority => 'critical', url => '/announcement.xhtml'});

  # Request that the phone execute the specified internal URI, or prompt the user to dial the specified "tel:" or "sip:" URI
  $phone->push_message({priority => 'critical', uri_data => 'sip:'});


The Polycom::App::Push class is for writing web applications for Polycom's SoundPoint IP and VVX series VoIP phones. It provides a mechanism to push messages to a phone for display to the user.

Note that to use the push_message method, the phone must be configured with the following parameters, where the values of each parameters should be customized based on your requirements:

     apps.push.password="456" />

The value of the 'apps.push.messageType' parameter is very important, because it determines how the phone will filter incoming push messages based on their 'priority' attributes. The allowable values for the 'apps.push.messageType' parameter are:

   0 - Don't show any push messages
   1 - Show messages with 'priority="normal"'
   2 - Show messages with 'priority="important"'
   3 - Show messages with 'priority="high"'
   4 - Show messages with 'priority="critical"'
   5 - Show all messages, regardless of their 'priority' value

The 'apps.push.serverRootURL' parameter is used as the base URL for the relative URL passed to 'push_message' method in its 'url' parameter.

The 'apps.push.username' and 'apps.push.password' parameters must match the 'username' and 'password' parameters passed to the 'push_message' method.


new ( %fields )

  use Polycom::App::Push;
  my $phone = Polycom::App::Push->new(address => '', username => 'Polycom', password => '456');

Returns a newly created Polycom::App object. The following parameters are required:

  address   - the IP address of the phone.
  username  - the user name configured on the phone with the "apps.push.username" parameter.
  password  - the password configured on the phone with the "apps.push.password" parameter.



  my $ip_address = $phone->address
  $phone->address('');  # Set the address to ""


  my $username = $phone->username;
  $phone->username('Bob');  # Set the username to 'Bob'


  my $password = $phone->password;
  $phone->password('1234');  # Set the password to '1234'



  if (!$phone->push_message({priority => "critical", url => "/announcements/happy_birthday.xhtml"});)
      print "Failed to send push message\n";

This method can be used to send a push request to a Polycom IP phone that will trigger it to display the supplied message or URL in its web browser. The following parameters are supported:

  priority  - the priority of the message (either "critical" or "normal"). If not specified, "normal" is assumed.
  url       - the URL to display on the phone, relative to the "apps.push.serverRootURL" configuration parameter.
  data      - a URI-escaped HTML document to display on the phone.
  uri_data  - an internal URI to execute, or a "sip:" or "tel:" URI to prompt the user to dial 

Note that either url or data must be specified, but not both. Returns 1 if the message was sent successfully, or 0 otherwise.


Developer's Guide SoundPoint IP / SoundStation IP -

Polycom(R) UC Software Administrator's Guide -

Polycom::App::URI - A module that can be used to generate XHTML documents for displaying custom softkeys and hyperlinks using internal URIs for Polycom phones.


Zachary Blair, <>


Copyright (C) 2012 by Zachary Blair

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.