Вызов офисного коммуникатора через Silverlight из браузера

Мне нужно вызвать офисный коммуникатор, чтобы создать окно чата и телефонный звонок непосредственно из Silverlight, когда браузер работает. При запуске в браузере я делаю это, и это работает довольно хорошо:

System.Windows.Browser.HtmlPage.Window.Eval(String.Format("window.open(\"sip:{0}\", target=\"_self\");", sip));

Когда у меня заканчивается браузер, я должен вызвать Communicator.UIAutomation через динамику, но, честно говоря, я не знаю, что делать дальше.

dynamic communicator = AutomationFactory.CreateObject("Communicator.UIAutomation");

Кто-нибудь есть какие-либо предложения о том, как сделать эту работу? Поиск дал ноль результатов.

2 ответа

Пара мыслей:

Вы пытались сделать объект автоматизированного коммуникатора var, затем установить точку останова и копаться в полученном гидратированном объекте? Вы можете найти некоторые методы или свойства объекта, которые вы можете использовать, чтобы все произошло.

Здесь есть блог, в котором описывается пакет Office Communicator SDK и приведены примеры проектов. Я думаю, что вы можете включить сборки SDK в свое приложение OOB и автоматизировать Communicator с помощью предоставленного Microsoft SDK.

SDK должен быть предварительно установлен на компьютерах пользователей. Нет простого способа развернуть его в приложении Silvelright OOB.

Вам понадобится SDK.

Вы можете проверить документацию для получения более подробной информации здесь: C:\Program Files (x86)\Microsoft Office Communicator\SDK\OCSDK.chm Он в основном относится к C#, но большинство из них легко можно перенести на Com Automation. В качестве примера посмотрите следующий код, чтобы начать разговор

dynamic comm = new ActiveXObject("Communicator.UIAutomation");
dynamic msgrAdv = comm.IMessengerAdvanced;
if(msgrAdv!=null)
{
    try
    {
        object obj = msgrAdv.StartConversation(
                   1, //CONVERSATION_TYPE.CONVERSATION_TYPE_IM,
                   sipUris, // object array of signin names
                   null,
                   "Testing",
                   "1",
                   null);
        windowHandle = long.Parse(obj.ToString());
    }
    catch (COMException ex)
    {
        this.writeToTextBox(
                formReturnErrors.returnComError(ex.ErrorCode)
    );

}

Я надеюсь, что это поможет. Заметил, что из примера в файле справки я изменил некоторые элементы, определенные в сборке.NET (на которые нельзя ссылаться из кода C#). Если вам это нужно, я бы предложил открыть сборку CommunicatorAPI.dll в Reflector.

Другие вопросы по тегам