265 lines
11 KiB
JavaScript
265 lines
11 KiB
JavaScript
// Deze functie stuurt informatie van videoconferentie boekingen naar Talk & Vision
|
|
// Videoconferentie boekingen zijn reserveringen met als activiteit Videoconferentie
|
|
// Bij nieuwe boekingen wordt de soap action BookMeeting aangeroepen als resultaat
|
|
// krijgen we dan een boekingsnummer terug. Dit nummer wordt opgeslagen in kenmerk vc_id
|
|
// en wordt getracked bij de reservering.
|
|
// Bij wijzigingen hebben we al een vc_id en roepen we de soap actie ModifyMeeting aan.
|
|
|
|
|
|
function timestamp () {
|
|
var date = new Date();
|
|
var hours = date.getHours();
|
|
var days = date.getDay();
|
|
var minutes = date.getMinutes();
|
|
var ampm = hours >= 12 ? 'pm' : 'am';
|
|
hours = hours % 12;
|
|
hours = hours ? hours : 12; // the hour '0' should be '12'
|
|
minutes = minutes < 10 ? '0'+minutes : minutes;
|
|
var strTime = date + ' ' + hours + ':' + minutes + ' ' + ampm;
|
|
return strTime;
|
|
}
|
|
|
|
|
|
try {
|
|
var v_timestamp = timestamp();
|
|
WScript.Echo("Start bookVC.js om " + v_timestamp);
|
|
var udlstr = 'File Name=../oracle.udl';
|
|
var Oracle = new ActiveXObject("ADODB.Connection");
|
|
Oracle.Open(udlstr);
|
|
|
|
var sql = "BEGIN fac.initsession('NL'); END;";
|
|
Oracle.Execute(sql);
|
|
|
|
var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0")
|
|
var SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3;
|
|
var SXH_PROXY_SET_PROXY = 2;
|
|
|
|
var v_type = '';
|
|
|
|
debugFiddler = 0;
|
|
if (debugFiddler)
|
|
{
|
|
var SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
|
|
objXMLHTTP.setProxy(SXH_PROXY_SET_PROXY, "127.0.0.1:8888")
|
|
objXMLHTTP.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
|
|
}
|
|
|
|
// first do the login part
|
|
var XMLReq = '<?xml version="1.0" encoding="utf-8"?>'
|
|
+'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
|
|
+' <soap:Body>'
|
|
+' <Login xmlns="http://tempuri.org/">'
|
|
+' <username>Getronics</username>'
|
|
+' <password>kpn456rt</password>'
|
|
+' </Login>'
|
|
+' </soap:Body>'
|
|
+'</soap:Envelope>';
|
|
|
|
objXMLHTTP.open("POST",
|
|
"http://talkandvision.com//webservice/portal.asmx"
|
|
);
|
|
//WScript.Echo("Set header");
|
|
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
|
|
|
|
WScript.Echo("Send XML");
|
|
objXMLHTTP.send(XMLReq);
|
|
WScript.Echo("XML received");
|
|
if (objXMLHTTP.status==200)
|
|
{
|
|
v_cookie = objXMLHTTP.getResponseHeader("Set-Cookie");
|
|
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
|
xmlResp.setProperty("SelectionNamespaces", 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tv="http://tempuri.org/"');
|
|
xmlResp.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
|
xmlResp.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
|
xmlResp.loadXML(objXMLHTTP.responseText); // for parsing
|
|
var responseText = objXMLHTTP.responseText; // for debugging
|
|
v_status = xmlResp.selectSingleNode("/soap:Envelope/soap:Body/tv:LoginResponse/tv:LoginResult");
|
|
|
|
WScript.Echo("Gelukt, status = " + v_status.text);
|
|
|
|
if (v_status.text == 'true')
|
|
{
|
|
|
|
sql = "SELECT res_reservering_key, SUM (vertrouwelijk) vertrouwelijk "
|
|
+ " FROM ykpn_v_vc_gegevens "
|
|
+ " WHERE last_upd > last_sync "
|
|
+ " AND last_upd < SYSDATE - 1/96 " // we wachten een kwartier na de laatste update
|
|
+ " GROUP BY res_reservering_key "
|
|
+ " ORDER BY res_reservering_key";
|
|
WScript.Echo("SQL reservering = " + sql);
|
|
var oRs_res = Oracle.Execute(sql);
|
|
|
|
var v_res_key_prev = -1;
|
|
while (!oRs_res.eof)
|
|
{
|
|
v_reservering_key = oRs_res("res_reservering_key").Value;
|
|
v_vertrouwelijk = oRs_res("vertrouwelijk").Value;
|
|
|
|
sql = "SELECT t_van, "
|
|
+ " t_tot, "
|
|
+ " omschrijving, "
|
|
+ " ruimte, "
|
|
+ " contact_naam, "
|
|
+ " contact_telefoon, "
|
|
+ " contact_email, "
|
|
+ " res_reservering_key, "
|
|
+ " res_rsv_ruimte_key, "
|
|
+ " IdNummerTnF, "
|
|
+ " SIP_IP, "
|
|
+ " ipadres, "
|
|
+ " vc_id "
|
|
+ " FROM ykpn_v_vc_gegevens "
|
|
+ " WHERE res_reservering_key = " + v_reservering_key
|
|
+ " ORDER BY res_rsv_ruimte_volgnr";
|
|
|
|
WScript.Echo("SQL rsv ruimte = " + sql);
|
|
var oRs_rsv = Oracle.Execute(sql);
|
|
|
|
//var v_count = 0;
|
|
var v_res_key_prev = -1;
|
|
var v_xml_header = "";
|
|
var v_xml_footer = "";
|
|
var v_xml_body = "";
|
|
var v_xml_loc = "";
|
|
while (!oRs_rsv.eof)
|
|
{
|
|
v_van = oRs_rsv("t_van").Value;
|
|
v_tot = oRs_rsv("t_tot").Value;
|
|
v_omschrijving = oRs_rsv("omschrijving").Value;
|
|
v_ruimte = oRs_rsv("ruimte").Value;
|
|
v_contact_naam = oRs_rsv("contact_naam").Value;
|
|
v_contact_telefoon = oRs_rsv("contact_telefoon").Value;
|
|
v_contact_email = oRs_rsv("contact_email").Value;
|
|
v_rsv_ruimte_key = oRs_rsv("res_rsv_ruimte_key").Value;
|
|
v_idNummerTnF = oRs_rsv("idNummerTnF").Value;
|
|
v_sip_ip = oRs_rsv("sip_ip").Value;
|
|
v_ipadres = oRs_rsv("ipadres").Value;
|
|
v_vc_id = oRs_rsv("vc_id").Value;
|
|
|
|
WScript.Echo("v_rsv_ruimte_key = " + v_rsv_ruimte_key);
|
|
|
|
if (v_vc_id)
|
|
{
|
|
v_type = 'ModifyMeeting';
|
|
}
|
|
else
|
|
{
|
|
v_type = 'BookMeeting';
|
|
}
|
|
|
|
if (!v_xml_header)
|
|
{
|
|
v_xml_header = '<?xml version="1.0" encoding="utf-8"?> '
|
|
+ ' <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
|
|
+ ' <soap:Body>'
|
|
+ ' <' + v_type + ' xmlns="http://tempuri.org/">'
|
|
+ ' <booking>'
|
|
+ ' <id>' + v_vc_id + '</id>'
|
|
+ ' <mcid>' + v_reservering_key + '</mcid>'
|
|
+ ' <start>' + v_van + '</start>'
|
|
+ ' <end>' + v_tot + '</end>'
|
|
+ ' <company>KPN</company>'
|
|
+ ' <title>' + v_omschrijving + '</title>'
|
|
+ ' <contactname>' + v_contact_naam + '</contactname>'
|
|
+ ' <contactphone>' + v_contact_telefoon + '</contactphone>'
|
|
+ ' <contactemail>' + v_contact_email + '</contactemail>'
|
|
+ ' <confidential>' + (v_vertrouwelijk==0?'false':'true') + '</confidential>'
|
|
+ ' <locations>';
|
|
|
|
v_xml_footer = ' </locations>'
|
|
+ ' </booking>'
|
|
+ ' </' + v_type + '>'
|
|
+ ' </soap:Body>'
|
|
+ ' </soap:Envelope>';
|
|
|
|
}
|
|
|
|
v_xml_loc = v_xml_loc
|
|
+ ' <Location>'
|
|
+ (!v_sip_ip?' <id>' + v_idNummerTnF + '</id>':'')
|
|
+ ' <contactphone></contactphone>'
|
|
+ ' <external>' + (v_sip_ip?'true':'false') + '</external>'
|
|
+ (v_sip_ip == 'IP'?'<extip>' + v_ipadres + '</extip>':'')
|
|
+ (v_sip_ip == 'SIP'?'<sip>' + v_ipadres + '</sip>':'')
|
|
+ ' </Location>';
|
|
|
|
oRs_rsv.MoveNext();
|
|
|
|
}
|
|
|
|
|
|
var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0")
|
|
var SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3;
|
|
var SXH_PROXY_SET_PROXY = 2;
|
|
|
|
if (debugFiddler)
|
|
{
|
|
var SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
|
|
objXMLHTTP.setProxy(SXH_PROXY_SET_PROXY, "127.0.0.1:8888")
|
|
objXMLHTTP.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
|
|
}
|
|
|
|
objXMLHTTP.open("POST",
|
|
"http://talkandvision.com//webservice/portal.asmx"
|
|
);
|
|
|
|
objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
|
|
objXMLHTTP.setRequestHeader ("SOAPAction", "http://tempuri.org/" + v_type);
|
|
objXMLHTTP.setRequestHeader ("Cookie", v_cookie);
|
|
WScript.Echo("Cookie = " + v_cookie);
|
|
|
|
XMLReq = v_xml_header + v_xml_loc + v_xml_footer;
|
|
|
|
WScript.Echo("Send XML: " + XMLReq);
|
|
objXMLHTTP.send(XMLReq);
|
|
WScript.Echo("XML received");
|
|
if (objXMLHTTP.status==200)
|
|
{
|
|
var responseText = objXMLHTTP.responseText;
|
|
WScript.Echo("Response.text:" + responseText);
|
|
var xmlResp = new ActiveXObject("MSXML2.DOMDocument.6.0");
|
|
xmlResp.setProperty("SelectionNamespaces", 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tv="http://tempuri.org/"');
|
|
xmlResp.resolveExternals = false; // van mij hoef je geen DTD's te controleren
|
|
xmlResp.validateOnParse = false; // van mij hoef je geen DTD's te controleren
|
|
xmlResp.loadXML(objXMLHTTP.responseText); // for parsing
|
|
var responseText = objXMLHTTP.responseText; // for debugging
|
|
v_result = xmlResp.selectSingleNode("/soap:Envelope/soap:Body/tv:" + v_type + "Response/tv:" + v_type + "Result");
|
|
if (v_result)
|
|
{
|
|
if (v_type == 'BookMeeting')
|
|
{
|
|
WScript.Echo("v_vc_id:" + v_result.text);
|
|
sql = "BEGIN ykpn.set_vc_status(" + v_reservering_key + ",'" + v_result.text +"'); END;";
|
|
WScript.Echo("sql:" + sql);
|
|
Oracle.Execute(sql);
|
|
}
|
|
else
|
|
{
|
|
WScript.Echo("resultaat van update:" + v_result.text);
|
|
sql = "BEGIN ykpn.set_vc_status(" + v_reservering_key + ",'" + v_vc_id +"'); END;";
|
|
WScript.Echo("sql:" + sql);
|
|
Oracle.Execute(sql);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WScript.Echo("Request = " + XMLReq);
|
|
var response = objXMLHTTP.responseXML;
|
|
WScript.Echo("Response = " + response);
|
|
WScript.Echo("Mislukt, status = " + objXMLHTTP.status);
|
|
WScript.Echo(objXMLHTTP.statusText);
|
|
}
|
|
|
|
oRs_res.MoveNext();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (e)
|
|
{
|
|
// WScript.Echo("Response.text" + responseText);
|
|
WScript.Echo("Serieuze fout in bookVC.js: " + e.description)
|
|
WScript.Quit(1);
|
|
} |