Editing Personal Call Handling Rules For Other Users in ShoreTel

This is one of those guides that requires some knowledge of relational databases and the confidence to edit your ShoreWare Director Database without screwing it up.

You’ll need some software on your ShoreTel Server to do this. I prefer HeidiSQL but you can use any MySQL GUI that you prefer. You can even install PHPMyAdmin if you want. The hardcore can just use the shell. The relevant database that you want to connect to is on port 4308, it’s called “shoreware”. The username is root, and the password is “shorewaredba”. You can find all this information with a quick Google Search, the ShoreTel forums, Reddit, and even on the ShoreTel server itself if you poke around enough so I’m not terribly concerned giving it away here.

The annoying thing about a vanilla ShoreTel server is there isn’t any way to do Nuisance Call Blocking except Personalized Call Handling Rules on each individual Communicator. There’s also no way to add new rules to a user’s Communicator in the Director. Outside of some third-party software I’ve heard of, or some extra software from ShoreTel you have to either walk a user through this process or do it on their computer yourself. That changes now.

Editing Someone Else’s Personalized Call Handling Rules On Your ShoreTel Server

Step 1 – Create the rule on your own ShoreTel Communicator. You do this in the Options Menu under “Personalized Call Handling”. Just make the exact rule you want on the other user’s Communicator. Please note I’m using ShoreTel version 14.2 as the example.

Step 2 – Remote into your server and fire up your mySQL editor and connect to the configuration database.

Step 3 – Look for the table ecrrules. Your rule will probably be the newest rule in there, but you can look at the tables ecractions and ecrnumbers to verify which rule is yours. The field “RuleID” is the foreign key that ties them all together.

Step 4 – Once you’ve determined which rule is yours, simply change the extension in the UserDN field from your extension to the user who needs the rule’s extension. HeidiSQL is nice enough to give you a list when you click on it.

Step 5 – Verify in Director under “Personal Options” of the user that the rule shows up.

Step 6 – The rule is in the new user’s Personal Options now. If not check to make sure you put the right extension in the ECRULES table.

If you want to edit the rules you can change the fields. Simple things like the phone number or destination number are easy to edit under the ecractions and ecrnumbers table. I would not change the parameters of the rule or anything like that. If you need to change what the rule does, I would delete it in Director, make a new one that does what you need and do steps 1-6 above. For instance, if you mistyped the caller ID the rule needs to check for you can change that in the database, if you want it to forward to an inside line not an outside line, I’d start over since doing that would require changing several things in multiple tables and it’s easy to get confused.

If you are not familiar with how relational databases work, stay away from this. It’s pretty simple but you can mess something up fairly easily if you aren’t careful.

 

ShoreTel Communicator Encountered Error While Attempting to Connect to Server

Had this problem on a few machines during a failed upgrade. I found the fix here at Read, Deploy, Enjoy!. Here’s the link. Basically it involves setting the permissions to the STClient Login object under DCOM Config in your Component Services to to “Everyone”.

What I ran into was slightly different. The object wasn’t even showing up on a few computers. I think this is related to how the Communicator is installed from GPO. Especially the old versions if you had to use a ‘trick’ to get the MSI files. This could also be a problem if you have some variation of Roaming Profiles.

Here’s how to remedy the problem.

Step 1 – Uninstall ShoreTel Communicator under the problem users profile, delete all registry keys associated with it, delete the folder under Program Files or Program Files (x86).

Step 2 – Log in as a Local Administrator, or a Domain Admin that doesn’t have any special home profile folders or anything.

Step 3 – Install ShoreTel Communicator from the ShoreWare Director Page on your Server.

Step 4 – Reboot and log back in as the problem user and it SHOULD work correctly. If not follow the instructions on Read, Deploy, Enjoy!

My suspicion is that an installation task fails during an automated install and causes the DCOM object not to be created properly. This probably happens near the end of the install and doesn’t always trigger a failure in the install. Newer versions of Communicator may not use this object at all, so it may be a symptom of a downgrade procedure as well.

 

 

GotFreeFax Online Faxing – Free, No Ads

I was recently made aware of a great service for fax troubleshooting and basic faxing called “GotFreeFax.com“. I had used another service for my troubleshooting and just basic faxing needs online, but these guys reached out to me and I’m convinced theirs is definitely better.

Here’s a rundown of their free fax features:

  • Two free faxes a day.
  • No ads or branding whatsoever on the fax.
  • Three pages per fax.

You may get a couple fewer faxes and pages per day with this service but, in my opinion that no ads or branding on the cover page so your recipient has no idea how you sent it makes up for that. Here’s a picture of the cover sheet from a free fax I sent to myself the redacted parts are just names and some information I had to fill out:

GotFreeFax Cover Sheet

See? No ads. Just a plain cover sheet.

Sending a Fax From GotFreeFax.com

So here’s how to send a fax from GotFreeFax.com. It’s simple and you have a lot of options.

Step 1 – Go to GotFreeFax.com.

Step 2 – Fill out the sender information. This is you. You’ll need to put in your name, company name if you have one, your fax number with area code and you HAVE to put in your email address.

GotFreeFax Fax Info Entry

Step 3 – Fill in the recipient information. You’ll need to put in the recipient’s name, company information if they have one, fax number and a subject. Remember to put in an area code.

Step 4 – Enter the fax content. Typically you’ll want to just upload a document. They accept PDF files, DOC files and JPG files. So yes, you can fax a family photo. I haven’t tested with JPGs so I don’t know the size limitations, if any. I have uploaded DOCX files and it works with those just fine even though it doesn’t specifically say it will.

You can uncheck the “Use No-Add Free Cover Page”. This will just remove the cover page so you can use your own. It doesn’t give you the option to specifically upload a cover page, so you’ll need to make it part of the document.

Step 5 – Click the “Send Free Fax” button.

Step 6 – You’ll get a confirmation email. Click the link in the email.

GotFreeFax Email Confirmation

Step 7 – Wait for the success or failure email to come in.

Larger Faxes – You can send larger faxes for a fee with the Premium Pay Per Fax Service. To do this, instead of clicking on the “Send Free Fax” button, click on the proper premium paid button for the number of pages you need to send.

Use an account – You can sign up for an account and pre-pay for some pages. Just click on the button for the number of pages you want to buy. You’ll be taken through a sign up process and asked for billing information. Sending faxes with an account in the future couldn’t be any easier. You just enter your email address and PINĀ  in the fields under “Send Prepaid Fax” and hit “Send Fax Now” and it will automatically deduct the right number of pages from your account.

Useful ShoreTel Communicator Registry Keys for Scripting

I recently did a favor for a friend of mine who wanted tie a couple of systems together that weren’t tightly integrated in his network with some scripts. Anyway, I found the idea in his case fairly novel so I adapted the idea to the ShoreTel phone system and logon scripts. I know a lot of companies out there where the user’s four digit extension is their PIN for various systems at least initially.

I’ve had similar requests before to write a program that extracted the user’s extension from the ShoreTel database and do something with it. I do have a method of doing that but it’s annoying and this is much easier since it comes from the user’s local machine with ShoreTel Communicator installed. I’m also including some other registry keys because this script is super easy to adapt to get this information too.

Script for Extracting Current User’s Extension from ShoreTel Communicator

This is a VB Script for extracting the user’s extension from their computer’s registry. It is intended to be used as a part of a logon script or just to run at any time. The plugin I use doesn’t like VB comments so I took them out, I’ve attached the fully commented script to the post.

Use this script at your own risk. It just reads a registry key, but any time you mess with the registry, ShoreTel or anything like that you assume responsibility for your own systems. Also if your environment is different for whatever reason, this is not a hard script to change to suit your needs.

Script File: extractExtension (rename this to extractExtension.vbs when you download it)


   Dim shoretelServer
   Dim objRegistry
   Dim extension

   shoretelServer = "shoretel"

   Set objSysInfo = CreateObject("ADSystemInfo")
   strUser = objSysInfo.UserName
   Set objUser = GetObject("LDAP://" & strUser)

   Set objRegistry = CreateObject("Wscript.shell")

extension = objRegistry.RegRead("HKEY_CURRENT_USER\Software\Shoreline Teleworks\CSIS Client\"& shoretelServer & "." & objUser.sAMAccountName & "\SUserID")

Wscript.Echo extension

Registry Keys

There are a few more registry keys that can be put to good use by enterprising script users that may want to automate a few things. Use this information entirely at your own risk. I’m not taking any responsibility for anything if you change these.

Also, some of these keys, just because you change them does not mean it actually does anything. Some of them are just flags to show the Communicator software that it has done something or not, such as uninstalled the Outlook Voicemail Plugin. Changing that key won’t uninstall the plugin if it’s messed up.

One potential use for this information is if your server crashes and you don’t have a backup. If Communicator is still installed everywhere you can recover all your user information with a simple script that goes through everyone’s machines to extract the information. If there is interest in such a thing I will write it and post it.

User Key

HKEY_CURRENT_USER\Software\Shoreline Teleworks\CSIS Client\servername.username\

This key has several values under it. The most useful are:

SUserID = Extension of User
FirstName = User’s First Name
LastName = User’s Last NameHasMailbox = Set to 1 if yes, 0 if no.
MailboxGUID = Haven’t seen this set on the versions I’ve worked with but maybe?

If you go up a level there are some values for the current server version and client version, some dynamic “ConnectedOnce” values if the client has connected to multiple servers.

Client Keys

There’s a lot here to look at. Some of this looks to be stuff it gets from the server. I fiddled with a few of these and they just reset when I loaded Communicator. Likely for features I don’t have access to.

HKEY_CURRENT_USER\Software\Shoreline Teleworks\ShoreWare Client

AutoStartSoftPhone = Starts the softphone automatically when you start the program. This is set to 0 when Extension Assignment is on primary phone, 1 when on Softphone.
Outlook Voice Mail = 1 if Outlook Voicemail Integration is Installed. 0 if no.
OwnedDNs = User Extension.
Server = Server the client is logged into. Might be a good key to read to get information for the above script.
UserName = User the Client was logged in with. Again, good information for above script.
VMFoldersExpanded = This shows some dynamic keys for various Voicemail boxes that the user has access to. Not sure what the numbers mean.

Layout Keys

Under the above key is the Layouts key with a bunch of subkeys. These seem to be related to how the client looks and behaves. I won’t go through all these. I just wanted to mention that possibly deleting or modifying these might clear up weird issues that occasionally crop up with older versions of Communicator or find lost windows when users drag them off the screen, rather than reinstalling the whole product, or deleting the entire Shoreline key.

HKEY_CURRENT_USER\Software\Shoreline Teleworks\ShoreWare Client\Layouts

Spark Not Loading Entire Contact List

A little more obscure Spark fix. Pretty quick and simple.

The problem is basically when you are using an Active Directory distribution list as a ‘default’ group and a user isn’t able to see the everyone on the list for some reason. Seems like Spark ‘caches’ the list and some members might not show up for some reason. Obviously checking to make sure the member is part of the list and that other people aren’t having the same issue is the first step. If they aren’t, here’s how to fix the problem.

Fix Spark Not Showing Entire Contact List From Active Directory

Step 1: Exit out of Spark completely either by killing the process or right clicking the icon by the clock and hitting “exit”. Navigate to %USERPROFILE%\AppData\Roaming\Spark

Step 2: Open the user folder.

Step 3: In the user folder there are potentially several more folders. They usually look something like “username@server”. Find the one relating to the user who’s having the problem.

Step 4: Delete their folder.

Step 5: Re-open Spark. All their custom user groups and everything should still be there. Any default groups pushed out by the server should re-load as well. The name list should be complete.

 

Note: I think the user\contacts list might be what specifically has the problem. This issue doesn’t come up often enough for me to experiment though. Also note that their custom status messages and a bunch of other stuff will be gone. If they need them you can always back up the custom_messages, downloads, and transcripts files and folders then put them back after this is all done to get them back (note you’ll want to exit spark to do this).