- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 12:15 AM
Hi Folks,
I have a requirement to add a teams link besides a User reference field ('Responsible Leader'). I have written a UI macro but it is not working - Below is the script (Also open to go with any other approach if possible)
**My script and field both are in Customer service Scope
UI Macro
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<a><img src ="1batch.png" width = "25%" height = "25%" onClick = "userWindow('$(ref)')" tabindex="0" ></img></a>
<script>
function userWindow(reference){
var refVal = reference.split('.');
var fieldName = refVal[1];
var emailId;
var sysId= g_form.getValue(fieldName);
var user = new GlideRecord('sys_user);
if(user.get(sys_id)){
emailId = user.email.toString();
}
if(emailId){
open('sip:'+emailId, '_top');
}
else{
g_form.addErrorMessage('User Does not have email in servicenow');
}
}
</script>
</j:jelly>
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 01:28 AM
Hi,
try this and share the alerts
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_guid" expression="gs.generateGUID(this);" />
<j:set var="jvar_n" value="show_incidents_${jvar_guid}:${ref}"/>
<a id="${jvar_n}"
onclick="userWindow('${ref}');"
name="${jvar_n}"
onmouseout="lockPopup(event)"
tabindex="0"
>
<img border="0" src="1batch.png" width="28" height="28" title="${gs.getMessage('Open Teams chat')}" />
</a>
<script>
function userWindow(reference){
var refVal = reference.split('.');
var fieldName = refVal[1];
var emailId;
alert('fieldName->' + fieldName);
var sysId= g_form.getValue(fieldName);
alert('sysId->' + sysId);
var user = new GlideRecord('sys_user'); // quote was missing
if(user.get(sysId)){ // variable name corrected
emailId = user.email.toString();
}
if(emailId){
open('sip:'+emailId, '_top');
}
else{
g_form.addErrorMessage('User Does not have email in servicenow');
}
}
</script>
</j:jelly>
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 12:44 AM
Hi Ankur,Thanks I corrected those typos, I am not getting any values in fieldname and sysId variables.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 01:28 AM
Hi,
try this and share the alerts
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_guid" expression="gs.generateGUID(this);" />
<j:set var="jvar_n" value="show_incidents_${jvar_guid}:${ref}"/>
<a id="${jvar_n}"
onclick="userWindow('${ref}');"
name="${jvar_n}"
onmouseout="lockPopup(event)"
tabindex="0"
>
<img border="0" src="1batch.png" width="28" height="28" title="${gs.getMessage('Open Teams chat')}" />
</a>
<script>
function userWindow(reference){
var refVal = reference.split('.');
var fieldName = refVal[1];
var emailId;
alert('fieldName->' + fieldName);
var sysId= g_form.getValue(fieldName);
alert('sysId->' + sysId);
var user = new GlideRecord('sys_user'); // quote was missing
if(user.get(sysId)){ // variable name corrected
emailId = user.email.toString();
}
if(emailId){
open('sip:'+emailId, '_top');
}
else{
g_form.addErrorMessage('User Does not have email in servicenow');
}
}
</script>
</j:jelly>
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 01:38 AM
I have this working script, I have another direct link with teams as well (so the two url options both work).
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_guid" expression="gs.generateGUID(this);"/>
<j:set var="jvar_n" value="open_lync_${jvar_guid}:${ref}"/>
<a href="#" onclick="invokeChat('${ref}');"><img src="teams.jpg" title="Invoke Teams Chat" /></a>
<script>
function invokeChat(reference) {
var s = reference.split('.');
var tableName = s[0];
var referenceField = s[1];
var v = g_form.getValue(referenceField);
var email;
var gr = new GlideRecord('sys_user');
if (gr.get(v)) { email = gr.email;
}
var url = 'sip:'+email; //one examlpe
var url = 'https://teams.microsoft.com/l/chat/0/0?users='+email; //another example
var w = getTopWindow();
w.open(url,"_self");
}
</script>
</j:jelly>
Best regards,
Sebastian Laursen
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 03:05 AM
I have added the UI macro in field attributes , it is showing in the form, any idea how can we make it visible also on portal . Same field is visible on portal as well but the attribute is not showing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2022 02:51 AM
Hi Ankur , this worked for me .... thankyou so much !!