Last active
October 2, 2019 21:47
-
-
Save voipnorm/5b51c53245cf2121d15fc324dab47878 to your computer and use it in GitHub Desktop.
Online Meeting Button Macro
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const xapi = require('xapi'); | |
const MYSITE = '<yourWebexSite>.'; | |
const domain = "webex.com"; | |
var meetingID = ''; | |
const REGEXP_WEBEX = /(webex.com)$/; | |
const REGEXP_ALPHA = /^[a-zA-Z]+$/; | |
const REGEX_WEBEXID = /^\d{9}$/; | |
const REGEXP_AT =/^.+@.+$/; | |
function onlineMeeting() { | |
xapi.event.on('UserInterface Extensions Panel Clicked', (event) => { | |
console.log('event', event.PanelId); | |
if (event.PanelId == 'online_conference') { | |
//Intial press of conference button | |
xapi.command('UserInterface Message TextInput Display', { | |
FeedbackId: 'MeetingID', | |
KeyboardState: 'Open', | |
InputType: 'Numeric', | |
Title: 'Join an online Meeting', | |
Text: 'Enter just the Webex Meeting ID or Entire URI', | |
Placeholder: 'Powered by VoIPNorm', | |
SubmitText: 'Join' | |
}); | |
} | |
}) | |
xapi.event.on('UserInterface Message TextInput Response', (event) => { | |
if (event.FeedbackId === 'MeetingID') { | |
const meetingID = event.Text; | |
//User enters full URI | |
if(REGEXP_AT.exec(meetingID)){ | |
xapi.command('Dial', { Number: meetingID}); | |
} | |
//User enters PMR address | |
if (REGEXP_ALPHA.exec(meetingID)) { | |
var uri = meetingID + '@' + MYSITE + domain; | |
xapi.command('Dial', {Number: uri, DisplayName: "Webex PMR"}); | |
//User enter webex numeric ID | |
} | |
if(REGEX_WEBEXID.exec(meetingID)) { | |
var URI = meetingID+'@'+domain; | |
xapi.command('Dial', {Number: URI, DisplayName: "Webex"}); | |
}else{ | |
xapi.command('UserInterface Message TextInput Display', { | |
FeedbackId: 'entireUrl', | |
Title: `Invalid Webex Meeting ID`, | |
Text: 'Please enter the entire meeting URI e.g 123456789@sitename.com.', | |
KeyboardState: 'Open', | |
Placeholder: 'Powered by VoIPNorm', | |
SubmitText: 'Join', | |
}) | |
} | |
} | |
}) | |
} | |
function afterCall() { | |
xapi.event.on('CallDisconnect', (event) => { | |
if (REGEXP_WEBEX.exec(event.RequestedURI)){ | |
xapi.command("UserInterface Message Prompt Display", { | |
FeedbackId: 'webex_feedback', | |
Title: "How was the meeting experience", | |
Text: 'How would you rate this call', | |
'Option.1':'It was Great', | |
'Option.2':'Meeting ID was rejected.', | |
Duration: 8 | |
}); | |
xapi.event.on('UserInterface Message Prompt Response', (event) => { | |
console.log(event); | |
if(event.FeedbackId === 'webex_feedback'){ | |
var displaytitle = ''; | |
var displaytext = ''; | |
switch(event.OptionId){ | |
case '1': | |
displaytitle = ':-)'; | |
displaytext = 'Thank you, yet another satisfied customer!!!'; | |
xapi.command("UserInterface Message Alert Display", {Title: displaytitle, Text: displaytext, Duration: 8}); | |
break; | |
case '2': | |
xapi.command('UserInterface Message TextInput Display', { | |
FeedbackId: 'entireUrl', | |
Title: `Lets Try Joining that Meeting Again`, | |
Text: 'Please enter the entire meeting URI e.g 12345678@sitename.com', | |
//InputType: 'Numeric', | |
Placeholder: 'Powered by VoIPNorm', | |
SubmitText: 'Join', | |
Duration: 30, | |
}); | |
break; | |
} | |
} | |
}); | |
} | |
}); | |
} | |
function dialWebexURL(){ | |
xapi.event.on('UserInterface Message TextInput Response', (event) => { | |
if(event.FeedbackId === 'entireUrl'){ | |
var uri = event.Text; | |
if(REGEXP_AT.exec(uri)){ | |
xapi.command('Dial', { Number: uri }) | |
.catch(e => { | |
console.log("Dialing error:"+e) | |
}) | |
}else{ | |
xapi.command('UserInterface Message TextInput Display', { | |
FeedbackId: 'entireUrl', | |
Title: `Invalid Meeting Id`, | |
Text: 'Please enter the entire meeting URI e.g 12345678@sitename.com', | |
//InputType: 'Numeric', | |
Placeholder: 'Powered by VoIPNorm', | |
SubmitText: 'Join', | |
Duration: 30, | |
}) | |
.catch(e => { | |
console.log("Command error:"+e) | |
}); | |
} | |
} | |
}) | |
} | |
function onError() { | |
xapi.on('error', (err) => { | |
console.error(`Macro failed: ${err}`); | |
}); | |
} | |
function onReady(cb) { | |
onlineMeeting(); | |
afterCall(); | |
dialWebexURL(); | |
onError(); | |
cb(); | |
} | |
onReady(function () { | |
console.log("Loading complete"); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment