1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/perl -w
# Quick script to hack out a directory for a mac address. I use it for the
# receptionist's BLF on her IP650 with sidecars.
use strict;
use Polycom::Contact::Directory;
use DBI;
# Grab the MAC address from ARGV and make a file
my $mac = $ARGV[0] or die "No MAC Specified\n";
my $contactFile = "/tftpboot/polycom/contacts/$mac-directory.xml";
# Create a new Empty Directory
my $dir = Polycom::Contact::Directory->new();
# Connect to the trixbox MySQL DB
my $dbh = DBI->connect('dbi:mysql:asterisk:localhost:3306','root','passw0rd',{ RaiseError => 1});
# Pull an array ref for the extensions
my $userAry = $dbh->selectall_arrayref("SELECT extension,name FROM users ORDER BY extension");
$dbh->disconnect();
# Set counter for speed dial index
my $x = 1;
# Loop through extensions
for my $a (@$userAry) {
# Split the trixbox name into first and last.
my ($fn,$ln) = split(/\s+/,$a->[1],2);
# My contacts are generally dirty, I'll make them look better. Some people may want
# to comment this out if you have people with unique capitalization.
$fn = ucfirst(lc($fn));
$ln = ucfirst(lc($ln));
# Insert the record into the object.
# I like the labels to be: extension firstname lastname "3721 Awesome Dude"
# -- buddy_watching lets the polycom monitor BLF status. For this to work,
# you must have feature.1.name="presence" feature.1.enabled="1" in
# /tftpboot/sip.cfg
# -- Check Polycom::Contact Documentation for Options
$dir->insert(
{ first_name => $fn, # <fn> in xml
last_name => $ln, # <ln> in xml
contact => "$a->[0]", # <ct> in xml
label => "$a->[0] $fn $ln", # <lb> in xml
buddy_watching => 1, # <bw> in xml
speed_index => $x, # <sd> in xml
buddy_block => 0, # <bb> in xml
auto_divert => 0, # <ad> in xml
auto_reject => 0, # <ar> in xml
},
);
$x++;
}
# Save the contact file.
$dir->save($contactFile);
1;
|