[Freeswitch-svn] [commit] r12766 - freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial

FreeSWITCH SVN nmartin at freeswitch.org
Tue Mar 24 17:24:21 PDT 2009


Author: nmartin
Date: Tue Mar 24 19:24:21 2009
New Revision: 12766

Log:
initial import
click2dial applet
OS X only :(

Added:
   freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/
   freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/README.txt
   freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/click2dial.zip   (contents, props changed)
   freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/linkify.user.js

Added: freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/README.txt
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/README.txt	Tue Mar 24 19:24:21 2009
@@ -0,0 +1,48 @@
+README
+
+Client Side Click2Dial
+
+==============================================================
+Copyright (c) 2009 Nik Martin
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+The original author of this work, Nik Martin, must be credited  
+as the original author of this work.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+==============================================================
+
+Setup:
+
+Unzip Click2Dial.zip.
+
+Inside fs_dial.app, edit COntents/Resources/fsdial.py to set up your server information and phone number
+
+Import linkify.user.js into greasemonkey (http://www.greasespot.net/)
+
+Double Click fs_dial.app to register it as the handler for dial:// urls
+
+The greasemonkey script will linkify any text on a web page that looks like a phone number.  
+You can edit the reg-ex inside the greasemonkey script to match different types of numbers.
+
+The fsdial.py script assumes you have a default context, and outbound calls should go to this context
\ No newline at end of file

Added: freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/click2dial.zip
==============================================================================
Binary file. No diff available.

Added: freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/linkify.user.js
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/nmartin/fs_client_side_click2dial/linkify.user.js	Tue Mar 24 19:24:21 2009
@@ -0,0 +1,78 @@
+// FreeSWITCH Dial Linkify
+// Author: Nik Martin 
+// License: MIT
+// 
+//This script was taken from another script here: http://userscripts.org/scripts/show/1003
+//
+// Matches these patterns:
+//  800-555-1212
+//  (800) 555-1212
+//  (800)555-1212
+//  8005551212
+//    Weak since it does any 10+ digit number
+//  800.555.1212
+// Tested with:
+//  www.yellowpages.com
+//  local.google.com
+//  a9.com
+//
+// International calling sure would be neat
+// ==UserScript==
+// @name           FreeSWITCH Dial Linkify
+// @namespace      
+// @description    Looks for phone numbers in pages and makes hyperlinks out of them. When clicking on the link, FS will connect your phone to the number you clicked
+// @include        *
+// ==/UserScript==
+
+(function () {
+	
+//this is the test to see if the number looks like a phone number or not
+	const trackRegex = /(\+\d\d?)?[\-\s\/\.]?[\(]?(\d){2,4}[\)]?[\-\s\/\.]?\d\d\d[\-\s\/\.]?(\d){3,5}\b/ig;
+
+	function trackUrl(t) {
+		return "dial://org.FreeSWITCH.Dialer?number=" + String(t).replace(/[\(\)\- \.]/g, "");
+	}
+
+    // tags we will scan looking for un-hyperlinked urls
+    var allowedParents = [
+        "abbr", "acronym", "address", "applet", "b", "bdo", "big", "blockquote", "body", 
+        "caption", "center", "cite", "code", "dd", "del", "div", "dfn", "dt", "em", 
+        "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "i", "iframe",
+        "ins", "kdb", "li", "object", "nobr", "pre", "p", "q", "samp", "small", "span", "strike", 
+        "s", "strong", "sub", "sup", "td", "th", "tt", "u", "var"
+        ];
+    
+    var xpath = "//text()[(parent::" + allowedParents.join(" or parent::") + ")" +
+				//" and contains(translate(., 'HTTP', 'http'), 'http') + " + 
+				"]";
+
+    var candidates = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
+
+    //var t0 = new Date().getTime();
+    for (var cand = null, i = 0; (cand = candidates.snapshotItem(i)); i++) {
+        if (trackRegex.test(cand.nodeValue)) {
+            var span = document.createElement("span");
+            var source = cand.nodeValue;
+            
+            cand.parentNode.replaceChild(span, cand);
+
+            trackRegex.lastIndex = 0;
+            for (var match = null, lastLastIndex = 0; (match = trackRegex.exec(source)); ) {
+                span.appendChild(document.createTextNode(source.substring(lastLastIndex, match.index)));
+                
+                var a = document.createElement("a");
+                a.setAttribute("href", trackUrl(match[0]));
+                a.appendChild(document.createTextNode(match[0]));
+                span.appendChild(a);
+
+                lastLastIndex = trackRegex.lastIndex;
+            }
+
+            span.appendChild(document.createTextNode(source.substring(lastLastIndex)));
+            span.normalize();
+        }
+    }
+   // var t1 = new Date().getTime();
+   // alert("X-Lite Dial linkify took " + ((t1 - t0) / 1000) + " seconds");
+
+})();



More information about the Freeswitch-svn mailing list