File: src\sdk\sdk.ts
/// <reference path="../internal/bootstrapper/bootstrapper.ts" />
/// <reference path="../internal/api/modalities/api.ts" />
/// <reference path="../internal/ui/constants.ts" />
/// <reference path="../internal/ui/chat/component.ts" />
/// <reference path="../internal/ui/callback/component.ts" />
/// <reference path="../internal/ui/scheduleCallback/component.ts" />
/// <reference path="../internal/ui/survey/component.ts" />
/// <reference path="../internal/ui/virtualAgent/component.ts" />
/// <reference path="../internal/ui/caseManagement/component.ts" />
if (!window || !document) {
throw new Error("bootstrapper requires a window with a document");
}
/**
* @module SDK
*/
export interface ClientConfig extends internal.ClientConfig { }
/**
* Global object reference for the Microsoft Support Web SDK
* @class MsSupportSdk
* @static
*/
/**
* Initialize the SDK
* @method init
* @static
* @param {Object} config a collection of initialization parameters that control the setup of the SDK
* @param {String} config.partnerId a uniquely identifying string to differentiate telemetry per partner
* @param {String} config.appId a uniquely identifying string to differentiate telemetry per partner app
* @param {String} config.sessionId a unique id used for tracking purpose. SDK will generate one if not supplied
* @param {String} config.correlationVector jsll correlation vector. SDK will generate one if not supplied
* @param {String} config.logger a custom logger which must expose a writeEvent(data) method. The 'data' param can be an {{#crossLink "telemetry.IncomingRequestData"}}IncomingRequest{{/crossLink}}, {{#crossLink "telemetry.OutgoingRequestData"}}OutgoingReqeust{{/crossLink}} or {{#crossLink "telemetry.ClientErrorData"}}ClientError{{/crossLink}}
* @return {Promise} a promise that resolves when the SDK is loaded and rejects when loading fails
* @example
* var sdk = winodw && window.MsSupportSdk; // Get a reference to the global MsSupportSdk object
* // var sdk = require("MsSupportSdk"); // Load the Web SDK module using a module loader. i.e. requirejs
*
* // uncomment to use custom logger for Qos events
* // var customLogger = {
* // writeEvent: function(data) {
* // console.log(JSON.stringfy(data));
* // }
* // };
*
* if(sdk) {
* var sdkConfig = {
* partnerId: "SomePartnerId",
* appId: "SomeAppId",
* sessionId: "123-456-789", // this is optional
* correlationVector: "AQnf0OTUGFKmhX46.0", // this is optional
* // logger: customLogger // uncomment to use custom logger to log Qos events
* };
*
* sdk.init(sdkConfig).then(
* function(){
* console.log("Microsoft Support SDK initialized.");
* },
* function(err){
* console.log("Unabled to initialize Microsoft Support SDK. Error: " + err.message);
* });
* }
*/
export function init(config: ClientConfig): JQueryPromise<any> {
return internal.Bootstrapper.init(config);
}
/**
* SDK version currently being referenced
* @property {String} version
* @static
* @readonly
*/
export let version: string = internal.SdkVersion.version;
// modalities API
export namespace api.modalities {
// get()
export let get = internal.api.modalities.API.get;
export let ModalityConfig = internal.api.modalities.ModalityConfig;
// modalities API constants
export let Accessibility = internal.api.modalities.Accessibility;
export let Availability = internal.api.modalities.Availability;
export let Environment = internal.api.modalities.Environment;
export let Modality = internal.api.modalities.Modality;
}
export namespace ui {
// ui constants
export let SurveyType = internal.ui.SurveyType;
export let AuthType = internal.ui.AuthType;
export let HostType = internal.HostType;
export namespace chat {
export let render = internal.ui.chat.render;
}
export namespace callback {
export let render = internal.ui.callback.render;
}
export namespace scheduleCallback {
export let render = internal.ui.scheduleCallback.render;
}
// virtual agent constants
export namespace virtualAgent {
export let render = internal.ui.virtualAgent.render;
export let Environment = internal.ui.virtualAgent.Environment;
}
export namespace survey {
export let render = internal.ui.survey.render;
export let logOfferResponse = internal.ui.survey.logOfferResponse;
export let OfferState = internal.ui.survey.OfferState;
}
export namespace caseManagement {
export let render = internal.ui.caseManagement.render;
export let Environment = internal.ui.virtualAgent.Environment;
export let WorkflowStep = internal.ui.caseManagement.WorkflowStep;
}
}