Friday 13 July 2018

Jabber Custom Tab Popup URL with Calling Number


Jabber Custom Tab Popup URL with Calling Number


This article is to explain the codes that makes Jabber pop up a window in an URL+ Caller ID format pointing your web CRM application. The codes use Javascript to monitor the state of TelephonyConversationEvent and automatically have a popup.

The custom tab is hosted in whatever a web server. And Tpop.js has a reliance on json2.js to parse data in TelephoneyConversationEvent json object. So please download it and put it to the ./js folder



index.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">

    <title>YOUR_APPLICTION_NAME</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/sticky-footer.css" rel="stylesheet">
<script type="text/javascript" src="js/tpop.js"></script>

<script type="text/javascript" src="js/json2.js"></script>
  </head>

               </head>

               <body onload="OnLoadMethods()">
<table class="table table-striped">
  <thead>
<tr>
  <th scope="col">Status</th>
  <th scope="col">Caller ID</th>                                                 
</tr>
  </thead>
  <tbody>
<tr>
  <th id="state" scope="row"> --- </th>
  <td id="callerid"> --- </td>
</tr>
  </tbody>
</table>
               </body>

</html>


Tpop.js

function OnPresenceStateChanged (jid, basicPresence, localizedPresence)
{
var cell = document.getElementById(jid)
cell.innerText = basicPresence.concat(", ",localizedPresence);
}


function OnTelephonyConversationStateChanged(json)
{
var callerid = document.getElementById("callerid");
var state = document.getElementById("state");

var conversation = JSON.parse(json);
if (conversation.acceptanceState == "Pending" && conversation.state == "Started") {
state.innerText = conversation.acceptanceState + "/" + conversation.state + "-> about to screen pop";
for (var i=0; i<conversation.remoteParticipants.length; i++) {
callerid.innerText = conversation.remoteParticipants[i].translatedNumber;
window.open("http://www.google.com/customerSearch.html?number=" + conversation.remoteParticipants[i].translatedNumber);
}
}


}



function SubscribePresence()
{
window.external.SubscribePresence('john.doe@abc.com');
}




function OnLoadMethods()
{
SubscribePresence();
OnTelephonyConversationStateChanged();
}


Demo

 pops up url as http://www.google.com/customerSearch.html?number=+15131112222, remember you can custom it in tpop.js file to make up whatever format you want.





Monday 9 July 2018

Jabber Custom Tab Pop-up for 911 Disclaimer

Jabber Custom Tab Pop-up for 911 Disclaimer



Preparing Jabber config file 


<?xml version="1.0" encoding="utf-8" ?>
  <config version="1.0">
<Client>
  <jabber-plugin-config>
   <browser-plugin>
     <page refresh ="false" preload="true">
     <tooltip>Disclaimer</tooltip>
     <icon>https://www.cisco.com/web/fw/i/logo.gif</icon>
     <url>http://YOUR_SERVER/disclaimer</url>
    </page>
   </browser-plugin>
  </jabber-plugin-config>
</Client>

  <Options>
  <AllowUserCustomTabs>true</AllowUserCustomTabs>
</Options>

  </config>

<page refresh ="false" preload="true">  Content refreshes each time users select the tab.


Directory structure: 

./disclaimer
 - index.html
 - getback.asp
 - window.asp
 - /js
 - /css


index.html


<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="favicon.ico">

<title>911 Disclaimer</title>

<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">

<!-- Custom styles for this template -->
<link href="css/sticky-footer.css" rel="stylesheet">
<script src="js/tpop.js"></script>
</head>

<body>

<body onload="MyPopUp('window.asp')">
<!-- Begin page content -->
<!-- Begin page content -->
<main role="main" class="container">
<h1 class="mt-5">911 Disclaimer</h1>
<p class="lead">During an emergency, softphone technology may not provide the most timely or
accurate location data if used for a 911 emergency call. Calls may be misdirected
to the wrong emergency response center or the emergency response center may make
errors when determining your location. USE A SOFTPHONE ONLY AT YOUR OWN RISK DURING AN EMERGENCY.</p>
</main>


</body>
</html>

window.asp


<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">

    <title>911 Disclaimer</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/sticky-footer.css" rel="stylesheet">
              
  </head>

  <body>

    <!-- Begin page content -->
    <main role="main" class="container">
      <h1 class="mt-5">911 Disclaimer</h1>
      <p class="lead">During an emergency, softphone technology may not provide the most timely or 
accurate location data if used for a 911 emergency call. Calls may be misdirected 
to the wrong emergency response center or the emergency response center may make
 errors when determining your location. <b>USE A SOFTPHONE ONLY AT YOUR OWN RISK DURING AN EMERGENCY.</b></p>
    </main>

    <footer class="footer">
      <div class="container">
        <input type="button" class="btn btn-success" value="Accept" onclick="sendAck(); self.close(); "> 
      </div>
    </footer>
  </body>
</html>


Tpop.js


    // Popup window code
               function MyPopUp(url) {
                var newwindow;
                popupWindow = window.open (
                       url,'popUpWindow','height=400,width=500,left=0,top=200,titlebar=no,sresizable=no,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,copyhistory=no,status=no')
               }


Example






Thursday 22 February 2018

VCS-C Phone Registration and Call Routing

VCS-C Phone Registration and Call Routing
VCS-C  is licensed for endpoint registration

Create Subzone “Zone_SJC”



Create Subzone membership rule

Any Alias starts with 6XXX in @callhub.club domain will fall into “SJC_Zone”


Specify to allow domain for registration

v


DX80 H323 GK register to VCS-C







Create Neighbor zone to convey calls to CUCM

Choose a different port 5560 for SIP calls, avoiding the conflicts with Jabber MRA.

Create a search rule that matches “voicelab.ca” and sends to CUCM



Make sure certificates are properly installed in CUCM



Create Sip Trunk Security Profile for VCS-C

Incoming port matches “5560” as the port number configured on CUCM neighbor zone.

Create SIP Trunk to VCS-C

Create SIP Route Pattern to VCS-C


SIP to H323 Transversal call






Monday 19 February 2018

Cisco CMS Branding

Cisco CMS Branding
Download Customization source files at

https://www.cisco.com/c/dam/en/us/td/docs/conferencing/ciscoMeetingServer/Customisation/Version-2-3/CMS-2-3_callBranding_example_US.zip





WebRTC App Customization



Sign_in_settings.json:
{
"panelTopColor" : "#FFFFFF",
"panelBottomColor" : "#FFFFFF",
"panelForegroundTextColor" : "#010101",
"panelErrorTextColor" : "#DD1600",
"panelHyperlinkTextColor" : "#010101",
"panelLoaderColor" : "#010101",
"showFooter" : false,
"browserTabLabel" : "ABC Company Meeting Portal",
"panelLabel" : " ABC Company Meeting Portal"
}


sign_in_logo.png
The recommended resolution for the logo image is 254 pixels wide by 64 pixels high; these dimensions fill the space to the edges of the Sign in box horizontally. This file must be less than 250 kB in size.

sign_in_background.jpg
Maximum size for the background image is 1920 pixels wide and 1200 pixels high, and less than 500 kB in size. It will be scaled isotropically and then cropped at either the right or bottom to fit the browser window.


Zip files and upload to HTTP server directory



Make sure Webbridge is enabled on Edge and Core server.
Webbridge link in “<url>…</url>” should be resolved to a different server IP internally and externally


Call Customization

Make your changes and upload files to HTTP directory.
Background.jpg displayed on initial call




Customizing the text shown in invitations





invitation_template.txt

Applying branding to SIP calls and/or customized invitations


Note a bug that WebRTC client for CMS 2.3 - When clicking share copy invitation and send email doesn't pick up the custom template.  See here: https://bst.cloudapps.cisco.com/bugsearch/bug/CSCvh30015
Known Affected Releases: 2.3.0