Search code examples
ionic-frameworkskypelyncskype-for-businessskypedeveloper

Skype web sdk audio service plugin not found


I am integrating Skype Web SDK audio service in my IONIC application. Everything works fine but I am not able to make a call. When I click on button to make a call following code gets call and I am getting Beep sound and then error about Pluginnotinstalled.

var conversation = application.conversationsManager.getConversation('tel:+XXXX');
conversation.selfParticipant.audio.state.when('Connected', function () {
    console.log('Connected to audio call');
});
conversation.state.changed(function (newValue, reason, oldValue) {
    console.log('Conversation state changed from', oldValue, 'to', newValue);
});
conversation.participants.added(function (participant) {
    console.log('Participant:', participant.displayName(), 'has been added to the conversation');
});
conversation.audioService.start().then(function() {
    console.log('The call has been started successfully');
}, function (error) {
    console.log('An error occured starting the call', error);
});

When I run this code, I am getting error, Plugin not Installed. There's no description about what plugin they want.

An error occured starting the call
Error: PluginNotInstalled
Exception — skype-web-sdk.js:20782
(anonymous function) — skype-web-sdk.js:35814
exec2 — skype-web-sdk.js:21498
exec — skype-web-sdk.js:21478
dequeue — skype-web-sdk.js:21253
process — skype-web-sdk.js:21274

When I checked in details, The error is coming from below code of skype-web-sdk.js

function init(specs) {
    tm && tm.record(Web.TelemetryEvent.PluginManager, {
        action: 'init',
        state: state()
    });
    if (state() == Media.PluginManager.State.Uninitialized) {
        var id = '__mainPluginManager_' + guid().replace(/-/g, '_');
        Media.log('PluginManager::init - id = ' + id);
        language = (specs && specs.language) || "en-us";
        isRtl = (specs && specs.rtl) || false;
        var PluginObjectCtor_1 = (specs && specs.PluginObject) || Media.PluginObject;
        tm = specs && specs.tm;
        assert(!task || task.state() != 'pending');
        task = new Task('Loading the media plugin.', {
            cancel: function (reason) {
                Media.log('PluginManager::init canceled ' + id);
                stopLoadTimer();
                reset(reason);
                task.reject(reason);
            }
        });
        tm && tm.monitor(task.promise, Web.TelemetryEvent.PluginManager, {
            action: 'initPluginMgr',
            state: state(),
            id: id
        });
        state.set(Media.PluginManager.State.Initializing);
        isPluginInstalled.get().then(function (installed) {
            if (!installed)
                throw Exception('PluginNotInstalled');
            pluginObj = PluginObjectCtor_1({
                id: id,
                managerId: '_'
            });
            pluginObj.event(onPluginObjectEvent, 'async');
            pluginObj.state.changed(onPluginObjectState);
            Media.watch('pluginObject(' + id + ')::state', state);
            Media.log('PluginManager::init - creating inner object');
            try {
                pluginObj.createInnerObject({
                    hide: true,
                    hookEvents: true
                });
            }
            catch (err) {
                state.set(Media.PluginManager.State.Uninitialized);
                if (task.state() == 'pending')
                    task.reject(err);
            }
        }).catch(function (err) {
            state.set(Media.PluginManager.State.Uninitialized);
            if (task.state() == 'pending')
                task.reject(err);
        });
    }
    else {
        // init has already been called and the plugin is either 
        // initializing or is already initialized; in either case
        // we will return an existing promise
        assert(task);
    }
    return task.promise;
}

Solution

  • Which browser are you using? IE11 and Safari both need the Skype for Business Web App plugin which can ben found here: Getting started with Skype Web SDK development

    Here you can find more information on how to check if the plugin is installed.