API Docs for: 2.0.20133.2
Show:

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;
    }
}