Вызов офисного коммуникатора через 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.