*****Before I begin I just wanted to give a shout out to Melding Technology for helping with this project. They basically took an unfinished script that a reader found out on the internet and fixed it to a working state. So thanks to Jay and Angela for working on the script.*******
I got a question from a reader about a MSPL script he had found on the web from this TechNet forum post.
http://social.technet.microsoft.com/Forums/eu/ocsvoice/thread/f5829e31-42bd-4a65-bf1a-4777c5c54770
Basically the script didn’t run but was supposed to enable busy on busy. With some help from Melding Technology here in Seattle this script is now functional but with some limitations. Apparently the original script was close to working but needed some small changes. Currently it doesn’t check if a user is enabled for Unified Messaging and just returns a busy signal if already on a call. I will post updates if they enable this. This script does however check if a user is defined for this feature by looking up the user.txt file. So as long as you define the user in User.txt they will get busy on busy if they are on a call when a second call arrives. Also beware this script has not been tested in a large scale roll out. It has only been tested in a lab setting so use at your own risk.
The links below are access to both the script and user file from my Public Skydrive share. Please feel free to grab and use this. I have posted the full text of the script below to view before downloading the file.
Script
User text file
<?xml version="1.0" ?> <lc:splScript> //Log ("Event", false, "***BusyBusy***: started script"); // Check if this is a re-INVITE and exit if so // Log( "Debugr", false, "***BusyBusy***: toUserAtHost - ", toUserAtHost ); // // Comment this if block if you want to apply the filter to everybody
if ( hasAudio ) {
foreach (dbEndpoint in QueryEndpoints(toUserAtHost)) {
if (IndexOfString(publication, "on-the-phone") >= 0) { } //Log( "Debugr", false, "***BusyBusy***: found ", totalEndpoints, " endpoint(s)" );
} Log( "Debugr", false, "***BusyBusy***: finished script"); return; |
If you want to use this script and make changes please let me know. This is a community project that started as a post on a forum so please share if you make improvements, changes etc.
Comments welcomed.
VoIPNorm
hi, ı posted script sucsess. But it didnt work:(
ReplyDeleteHi,
DeleteYou might need to change the order in which the script runs on the server. Like placing it higher than the out bound routing application.If its not running high enough in the application order it may never get a chance to function.
Cheers
Chris
Hi:
DeleteI would start by making sure the Script is installed correctly. I found this video very helpful: http://blog.greenl.ee/2012/02/09/video-installing-configuring-mspl-script/
Also make sure that you added the user that you are testing with to the users.txt file .
I also found the ApiLogger tool that is included in the SDK is great once you are sure your script is installed right. You can download the Lync SDK here:
http://www.microsoft.com/download/en/details.aspx?id=18898
Once you are sure the BusyBusy script is installed correctly and running you can run the ApiLogger and watch for the debug messages from BusyBusy. They are easy to spot because they start with "***BusyBusy***". If you don't see them at all it probably means that Chris is right and your script is not running because of priority issues.
If you see the messages and but busybusy still does not work, they will provide a clue of what is going on.
-Angela
Does this script work for calls coming from PSTN ?
ReplyDeleteI dont see any mechanism in the script that does Reveser Number Lookup.
$0.1
It does not work right now. Just noticed that yesterday. The reason is that the code is using the wrong URI to query end points.
DeleteWith the right URI no lookup is necessary. QueryEndPoints works just fine with Uris in the format SIP:@host.
We have a fixed version that will share with Chris to repost (with some bonus functionality).
For now you can try to fix it by removing the user filtering and replacing toUserAtHost with toUri in all function calls.
-Angela
Thanks Angela. Updated script has been posted.
DeleteHow to get this to work with a PSTN call again ?!!
ReplyDeleteNone of the version seems to do wht you are claiming.
Please check the following post. Angela made some changes to the way the script works that might help.
ReplyDeleteGood afternoon,
ReplyDeleteNoticed, that while in p2p call and adding new participant, script blocks convertion to conference call. I added this snippet to filter this situation, based on what was blocked:
fromSip=GetUri(sipRequest.From);
toSip=GetUri(sipRequest.To);
if (ContainsString(toSip,fromSip, false)) {
Log("Event", false, "***BusyBusy***: Not processing. Conference call");
ProxyRequest();
return;
}
Great sctipt! Thanks!
Anyone have this working , whats the syntax on the users.txt name@domain?
ReplyDelete