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/createCaseComponent.ts" />
/// <reference path="../internal/ui/caseManagement/manageCaseCommunications.ts" />
/// <reference path="../internal/api/caseManagement/caseManagementApi.ts" />
/// <reference path="../internal/api/search/searchApi.ts" />
/// <reference path="../internal/api/suggest/suggestApi.ts" />
/// <reference path="../internal/ui/assistedSupportPlugin/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 getv2 = internal.api.modalities.API.getv2;
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.SMCEnvironment;
export let Modality = internal.api.modalities.Modality;
}
export namespace api.caseManagement {
export let getCase = internal.api.caseManagement.CaseManagementApi.getCase;
}
export namespace api.search {
export let getSearchResults = internal.api.search.SearchApi.getSearchResults;
export let postSearchResults = internal.api.search.SearchApi.postSearchResults;
export let getKnowledgeSearchResults = internal.api.search.SearchApi.getKnowledgeSearchResults;
export let postKnowledgeSearchResults = internal.api.search.SearchApi.postKnowledgeSearchResults;
// search API constants
export let HttpMethod = internal.api.search.HttpMethod;
export let SearchFacetSortOrder = internal.api.search.SearchFacetSortOrder;
export let SearchOrderByFieldNames = internal.api.search.OrderByFieldNames;
export let SearchOrderByDirection = internal.api.search.OrderByDirection;
}
export namespace api.suggest {
export let getSuggestResults = internal.api.suggest.SuggestApi.getSuggestResults;
}
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.SMCEnvironment;
}
export namespace survey {
export let createSurvey = internal.ui.survey.createSurvey;
export let OfferState = internal.ui.survey.OfferState;
}
export namespace caseManagement {
export namespace createCase {
export let render = internal.ui.caseManagement.createCase.render;
}
export namespace manageCaseCommunications {
export let render = internal.ui.caseManagement.manageCaseCommunication.render;
}
export let Environment = internal.SMCEnvironment;
export let WorkflowStep = internal.ui.caseManagement.WorkflowStep;
}
export namespace assistedSupportPlugin {
export let render = internal.ui.assistedSupportPlugin.render;
}
}