понедельник, 8 апреля 2013 г.

Контакт менеджер для Lync Server 2010/2013 [LDCM 4.0]. Часть 2: Создание базы данных и настройка приложения

    Во второй части будут описаны шаги по настройке базы данных и конфигурационного файла. Для работы приложения необходима специально созданная база данных. По умолчанию при установке компонентов на сервере доверенных приложений Lync, устанавливается MSSQL 2008 Express. Перед установкой компонентов можно заранее подготовить и установить MSSQL 2008 R2 Express или MSSQL 2012 Express SP1 (см. часть 1).
   1.  Итак, берем инсталятор нужной версии (у меня 2012) и производим установку нового инстанса LDCM.

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

   2. Начиная с версии 4.0.0.11 в программе присутствует "Мастер создания базы данных и таблиц", который создаст базу данных и таблицы, необходимые для работы программы.
Мастер создания базы данных и таблиц
   Если база данных использует windows аутентификацию, достаточно указать только имя сервера и инстанса базы данных. Если присутствуют дополнительные параметры в строке подключения(например логин и пароль) указать их в строке дополнительный параметры через точку с запятой.
   Теперь остается нажать на кнопку "Проверить соединение" и, если оно устанавливается, станет доступна кнопка "Создать базу данных и таблицы", нажав на которую запустится процесс непосредственного создания. По окончании операции SQLConnectionString можно сохранить в конфигурационный файл.

Примечание: Если на этом этапе что-то не получается, самый простой вариант, это проверка с помощью udl  файла.
Создать текстовый документ, переименовать в slq.udl, открыть и заполнить поля. Проверить соединение(там кнопка есть), сохранить, закрыть и открыть заново, но уже блокнотом. Полученная строка и будет искомой SQLConnectionString. Отмечу, что если параметр "MultipleActiveResultSets=True" не добавился, стоит его дописать к строке вручную.
  3. Конфигурационный файл
   В каталоге с программой находится файл с расширением .config, который представляет из себя xml документ. Его можно редактировать как вручную, так и непосредственно из программы (Параметры->Настройки)
   В области <appSettings> содержатся настройки приложения и, при необходимости, могут быть изменены. В данном случае key – имя настройки, а value – ее значение. 
<appSettings>
<add key="applicationId" value="urn:application:contactmanager" />
…….
</appSettings>
В файле присутствуют такие параметры:
• applicationId – идентификатор приложения, взять из части 1.
• Login - логин пользователя AD, с правом чтения.
• Password - пароль пользователя AD
• SQLConnectionString – строка подключения к базе данных SQL
• LDAP – путь к корневому объекту в Active Directory. В качестве значения может использоваться домен или LDAP путь
• proxyServerFqdn – имя пула сервера Lync

На этом все, можно пользоваться программой. Программа живет тут


Часть 1: Подготовка и настройка сервера доверенных приложений
Часть 2: Создание базы данных и настройка приложения
Часть 3: Как это работает



Следующий блок относится к версиям 4.0.0.10 и более младшим. Выполняется после установки инстанса БД.
В установленном инстансе нужно создать базу данных для таблиц. Через Managment Studio создаю новую БД: ldcm. (Точно не знаю, какую Collation надо использовать, но с Cyrilic_General_CI_AS у меня работает).


Теперь необходимо создать 4 таблицы. Для создания есть скрипт SQLScript.txt - содержимое вставить в новый запрос и запустить.

Если скрипт не заработал - можно создать вручную:
  • ContactList
    • c_id (int, key, identity increment)
    • c_value (varchar(50))
  • Group
    • g_id (int, key, identity increment)
    • g_value (varchar(50)) 
  • G_CL
    • gc_id (int, key, identity increment)
    • c_id (int)
    • g_id (int)
  • Users
    • u_id (int, key, identity increment);
    • g_id (int)
    • u_sip (varchar(50)) 
    • u_name (varchar(50))

46 комментариев:

  1. Добрый вечер. Скажите, чем может быть вызвана такая ошибка?
    https://dl.dropboxusercontent.com/u/72827236/ldcm%20error.JPG

    Делал все строго по инструкции.

    ОтветитьУдалить
    Ответы
    1. Судя по 7-й строчке в окне с ошибкой, могу предположить, что проблема в сертификате. Возможно, на сервере, где запускается приложение не выдан сертификат. Из первой части 6-й пункт полностью выполнен? Там в Step 3 request and assign certificate.

      Это на первый взгляд.
      P.s. если ставились только компоненты UCMA, там тоже надо запросить и присвоить сервису сертификат.

      Удалить
    2. Да, выполнен. Сертификат запросил и присвоил. В развертывании шаг отмечен завершенным.

      Удалить
    3. Немного попытался поискать по ошибке, думаю стоит попробовать запустить приложение с административными правами, т.е. от имени доменной учетной записи, с правами администратора Lync.

      Ну и еще раз проверить по ответу в этой теме:
      http://social.msdn.microsoft.com/Forums/en-US/ucmanagedsdk/thread/ca0d7758-d51b-4728-be0f-ae2c222546eb

      P.S. во время запуска в "событиях" на сервере что-нибудь фиксируется?

      Удалить
    4. Вообщем-то ошибка в логах действительно была. Что-то опять про невозможность доступа к учетным данным.
      Проблема в итоге разрешилась проставлением флажка "Всегда запускать от имени администратора" в свойствах программы.

      Так что, все работает. Спасибо большое.

      Удалить
  2. Вдогонку добавлю, что сервер 2013ый.

    ОтветитьУдалить
  3. Здравствуйте. Что то я не въехал, как править "SQLConnectionString"... У меня пишет "невозможно установить соединение с базой данных. Проверьте правильность параметра SQLConnectionString...". Объясните тем, кто в танке параметры ;Initial Catalog=??;Data Source=??; :) спасибо заранее

    ОтветитьУдалить
    Ответы
    1. По-умолчанию подразумевалось, что меняются 2 параметра:
      Data Source=LyncApp\LDCM - сервер/инстанс базы данных
      Initial Catalog=ldcm - база данных

      Если не получается, самый простой вариант, это файл udl.
      Например,создать текстовый документ, переименовать в slq.udl, открыть и заполнить поля:
      - выбрать сервер,
      - если не использовать встроенную безопасность, указать логин и пароль,
      - выбрать базу данных
      - выбрать другие необходимые параметры (если надо)
      Проверить соединение(там кнопка есть), сохранить, закрыть и открыть заново, но уже блокнотом. Полученная строка и будет искомой SQLConnectionString.

      Отмечу, что если параметр "MultipleActiveResultSets=True" не добавился, стоит его дописать к строке вручную.

      Удалить
    2. Я теперь знаю инстанс БД, спасибо :) Хотя как оказалось, я пробовал правильно, просто не был уверен. А вот базу конкретную не знаю, они создавались автоматически...
      Вот скрины, спасибо
      http://files.mail.ru/A37EBAD5320448EFB2EC5D9D53808174?t=1

      Удалить
    3. Судя по скринам, вижу что есть Standart сервер. И больше ничего.
      Для работы подобного рода приложений необходим еще один сервер - Trusted application server (к сожалению, на FE его не запустить). Как создать такой сервер описано в первой части.

      И да, настоятельно не рекомендую использовать базы данных, которые создаются линком по-умолчанию. Как создать еще один инстанс базы данных написано в начале этого поста. Желательно создать его там же, где будет работать приложение.

      Удалить
  4. Доброго времени суток!!!
    Имеется 3 сервера
    1. cs.dom.loc Win 2012 c AD
    2. ks.dom.loc Win 2012 c Lync 2013
    3. as.dom.loc Win 2012 c MS SQL 2008 Standart R2 + Центр сертификации.

    Согласно 1 части развернул пул доверенных приложений на
    as.dom.loc, все прошло без ошибок и как описано в статье.
    Далее в LDCM 4.0.0.11 при использовании Мастера создания
    базы данных и таблиц возникла проблема, мастер выдает сообщение...
    Ошибка соединения, сервер не найден или не доступен
    1. строка в мастере AS\LDSM
    2. строка ldcm
    3. строка не менялась

    Сервер с SQL доступен на нем установлены и работают другие базы
    в частности 1С 8.2
    Пробовал подключиться и к серверу ks.dom.loc
    там SQL Express от Lync тоже самое......

    В чем может быть проблема?
    С уважением Вячеслав

    ОтветитьУдалить
    Ответы
    1. А на сервере as.dom.loc инстанс LDСM создан?(не обязательно создавать новый, можно использовать существующий, но тогда в первой строке его и указать)

      Попробуйте использовать udl файл(2 комментария выше). С помощью него как раз и можно проверить и соединение и разные типы аутентификации. И да, если аутентификация "SQL сервером" в строку с дополнительными параметрами ее надо прописать(опять же все можно из udl файла взять). Т.е. при использовании логина и пароля нужно добавить Password=password;User ID=login;

      Удалить
    2. Да воспользовавшись udl файлом удалось соединиться, и потом создать базу и таблицы, правда с небольшими плясками с бубном, к примеру в первой строке не нужно указывать через дробь инстанс базы а просто имя сервера. Но теперь возник другой вопрос по работе с самим LDCM, не могу добавить ни контакт лист ни группу ни изменить название существующей test, т.е. при нажатии на кнопку Добавить ничего не происходит, ни ошибки ни чего просто меняется цвет кнопки во время нажатия и все, приходится просто закрывать окно, в чем может быть проблема?
      Ну и возникла проблема с просмотром Текущего контакт листа выбранного пользователя, вот скрины.
      http://files.mail.ru/B5CAC2814A5342DCA8D6E3EB6668E07D
      С уважением Вячеслав.

      Удалить
    3. По этому у меня возник вот какой вопрос, из первой части при создании доверенного приложения, все пункты понятны кроме пункта, Port – номер прослушиваемого порта, в примере указан 12345, я такой и указал, может в этом проблема?

      Удалить
    4. Eсли не указывать инстанс - база создастся в инстансе по-умолчанию.

      Для управления контакт листов в меню нужно выбрать "Параметры->Редактировать контакт листы" - требуется только соединение с базой данных.

      Порт указывается абсолютно рандомный, единственное стоит проверить не закрыт ли он на файерволе.

      Для извлечения списка контактов или добавления контактов пользователю нужно чтобы доверенное приложение(вот это, которое запускается) создало т.н. Application Endpoint(я точно не знаю перевод на русский, но обозвал конечной точной приложения). Если заработает просмотр списка контактов у пользователя - значит будет работать и все остальное.

      P.S. На некоторых 2012 системах замечена необходимость запуска от имени администратора.

      Удалить
    5. Сразу хочу сказать что LDCM запускаю от имени администратора, читал комментарии выше.

      Когда в Мастере создания базы данных вбиваешь в первой строке Сервер\Инстанс в низу у Вас видна сама
      строка SQLConnectionString, вот там я и заметил различие с моей строкой из UDL, там просто был указан сервер, если оставляешь в первой строке Сервер\Инстанс, пишет ошибка соединения и кнопка создать базу заблокирована, когда я просто оставил сервер, проверка прошла удачно, кнопка разблокировалась после чего и удалось соответственно создать базу.

      По второму вопросу тоже нашел решение, оказалось почему то, что изменения сохраняется только при нажатии клавиши Enter, а при нажатии на кнопку Добавить указателем мышки ничего не происходит, возможно потому что работаю через Radmin...

      А вот по главному вопросу пока не могу понять в чем проблема, как посмотреть и где, в чем может быть причина.....

      Удалить
    6. И правда, на диалоговых окнах замечен баг в Windows 2012 - не работает щелчок мыши по кнопке (тупо не генерируется событие клик). Как только дойдут руки - исправлю.

      По поводу ошибки видится одно - по какой-то причине приложение не может установить связь с FE.

      Что возвращает команда get-cstrustedapplication? Совпадает ли с данными в конфигурационном файле?

      Файервол/антивирус? ну мало ли? Попробуйте отключить на время запуска приложения(на обоих серверах), есть шанс что причина в них.

      Удалить
    7. Вот сегодня заглянул и увидел что родилось обновление, с кнопочкой теперь все ОК, се нормально отрабатывает. Ну а с ошибкой просто беда. Я недельку не заглядывал так как просто решил развернуть демо стенд, три виртуальных сервера и раб. станцию
      Все в принципе как и было но с чистого листа
      Имеется 3 сервера
      1. cd.dom.loc Win 2012 Datacenter RUS c AD + Центр сертификации.
      2. ln.dom.loc Win 2012 Datacenter RUS c Lync 2013 RUS
      3. sq.dom.loc Win 2012 Datacenter RUS c MS SQL 2012 Enterpaice SP1 RUS + Lync 2013 RUS trusted application pool
      4. lu@dom.loc Win 8 x64 RUS + MS Offise Lync 2013 RUS
      Все установил начисто, Файерволы везде отключены.
      Антивирусы не устанавливались.
      Линк на раб. станции работает все ОК.
      По инструкции из 1ч. все без проблем установилось, единственное что пришлось поменять местами шаги 2 и 3 (вариант 2) т.к. при установке
      возникла проблема, скорее всего из за локализации или разных версий компонентов Lync и UCMA 4.0,
      установщик Lync выдал сообщение что, какой то компонент, сейчас уже не помню установлен и не стал устанавливаться, изменив последовательность шагов все получилось, т.е. сначала шаг 3 (вариант 2) а потом 2. Далее и в новой версии 4.0.0.12 и в старой версии 4.0.0.11 на демо стенде и на рабочих серверах та же ошибка, при попытке получения контакт лист выбранного пользователя, появляется прогресс бар Запуск платформы далее Платформа запущена, после ожидания примерно в 30 сек. выходит сообщение которое я уже присылал, такое же и на последнем демостэнде
      и прогресс бар продолжает висеть в процессах даже после закрытия основного окна программы, приходится в ручную закрывать через Ctrl+Alt+Del

      Удалить
    8. Да команда get-cstrustedapplication возвращает такие же значения как и в конфигурационном файле, ну просто..... в чем загвоздка и куда смотреть?

      Удалить
    9. Перечитал 1ч. и вспомнил, не захотел устанавливаться в предложенной последовательности по моему OcsCore.msi т.е. Lync установщик сказал что он уже установлен и предложил его сначала удалить

      Удалить
    10. И еще одно дополнение, сейчас посмотрел ошибки на двух системах, на последнем ДЕМО стенде ошибка такая
      ----------------------------------------------------
      Попытка соединения была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера и далее IP адрес сервера с AD и порт 5061
      -----------------------------------------------------
      В рабочей среде сообщение в принципе похожее
      -----------------------------------------------------
      Подключение не установлено т.к. конечный компьютер отверг запрос на подключение и далее IP адрес сервера
      с trusted application pool и где собственно запускаетса программа и порт 5061
      Иногда адреса просто нет, сообщение вида [::]

      Удалить
    11. Немного поискал по таким ошибкам... один из вариантов "имя сертификата (CN) не совпадает с именем публикуемого веб-сайта", хотя в 2-х системах маловероятно, но вдруг.

      еще встретил такое: "IIS не работает или порт на сервере не прослушивается." может ли выбранный порт(для приложения) быть чем-то занят?

      Удалить
    12. По поводу IIS и сертификата зашел на сервере с LDCM у меня sq.dom.loc в панель управления Lync у меня http://admin.dom.loc или https://ln.dom.loc/Cscp/ без проблем зашел в консоль, посмотрел сертификат, сертификат нормальный для сайта ln.dom.loc, по ходу все работает, ну загадки. Даже на sq.dom.loc установил MS Office Lync 2013 добавил админа в Lync
      все отлично подключилось..... по поводу порта тоже вряд ли порт 12345 системы чистые ничего не ставилось кроме минимума необходимого, я про демо стенд.

      Удалить
    13. Тут наткнулся на вот такую интересную штуку http://www.vytru.com/contacts-manager/
      Установил на ln.dom.loc где стоит Lync server
      все тут же заработало, контакт листы правятся без проблем, добавляются удаляются, можно администрить фотки, потом установил на sq.dom.loc там где пытался запустить LDCM там тоже все тут же закаботало без проблем....

      Удалить
    14. Доброго!!!
      А по моей проблеме мыслей не возникло, так и не заработало, может есть еще какие мысли куда капнуть?

      Удалить
    15. Доброго!!!
      Буквально на днях попробовал просмотреть все настройки и нашел таки в чем была проблемма. Об этой настройке у Вас небыло описания, теперь то когда все заработало уже можно смеяться ;))) В настройках есть ProxyServerFQDN так вот я туда вбивал sq.dom.loc т.е. FQDN сервера доверенных приложений, а как только вбил ln.dom.loc все и заработало.:)))

      Удалить
  5. Да на as.dom.loc аутентификация SQL сервером
    а на ks.dom.loc Windows

    ОтветитьУдалить
  6. Заметил вот что: Если у клиента на рабочей станции Lync 2010 - то контакты импортируются. Если у клиента lync 2013 то ругается на нехватку каких то прав. В логах вроде как чисто

    ОтветитьУдалить
  7. Или windows 8, завтра поточнее погляжу. Есть идеи что может быть?

    ОтветитьУдалить
  8. Ошибка замечена на трёх учётках : not authorized to perform the requested operation

    Две административные одна пользовательская. всех связывает только windows8 и office 2013 ProPlus

    ОтветитьУдалить
  9. Вылечил удалением учетки с lync Server 2013 и повторным заведением. Спасибо за великолепную работу, коллега!

    ОтветитьУдалить
  10. Странная ошибка, не встречалась такая. В теории ось, на которой запускается клиент не должна влиять на возможность редактирования контакт листа, т.к. формально он на сервере. Но, Windows 8 у меня нет, поэтому проверить не могу.
    P.S. Хорошо что вылечилось, а то даже не знал что посоветовать:\

    ОтветитьУдалить
  11. А сможете в новой версии приаттачить кнопку: "Очистить список контактов и групп". Хорошая полезность когда у людей уже наворочено со списками, и администраторам хочется привести все в божеский вид?

    ОтветитьУдалить
  12. подскажите пожалуйста, добаил контактлист, пытаюсь применить к пользователю, выдает ошибку:
    http://s020.radikal.ru/i712/1310/b3/a404ff30a62f.png
    база создана, подключение проходит.
    в чем может быть проблема?
    заранее спасибо

    ОтветитьУдалить
    Ответы
    1. База данных это только половина, причем более простая. Самое интересное начинается при добавлении контактов (или при попытке посмотреть текущие контакты у выбранного пользователя - так быстрее проверять работоспособность). Так вот, чтобы вторая часть работала, надо чтобы запустилась "application endpoint"(сложно сказать как правильно по русски но не суть). Судя по ошибке, скорее всего неверен один из параметров в конфиге: id приложения или fqnd сервера

      Удалить
  13. Этот комментарий был удален автором.

    ОтветитьУдалить
  14. Добрый вечер!
    Прошу помочь.
    У меня один вопрос к Вам Tahiaji!
    Все описаны Вами этапы успешно и без ошибок пройден.
    Все настройки выставил.
    Запускаю Вашу программу добавляю пользователя и AD.
    Далее нажимаю "Посмотреть текущий контакт лист" чуток думает и выходит ошибка.
    http://yadi.sk/d/xLwz7zq6R7S5B полный тест ошибки
    http://yadi.sk/d/Wkv8VC1BR7SX5 Скиншот ошибки
    Заранее спасибо за помощь

    ОтветитьУдалить
    Ответы
    1. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Rtc.Collaboration, Version=5.0.0.0, - UCMA не установлено или стоит не той версии. Случайно версии 2010 и 2013 не перепутали?

      Удалить
    2. Спасибо за быстрый ответ Tahiaji!
      У меня стоит Lync 2010, установил UCMA 3.0
      по ссылки http://www.microsoft.com/en-us/download/details.aspx?id=10566
      Установился без ошибки.

      Удалить
    3. можете посоветовать что либо?

      Удалить
    4. версию 2010 или 2013 программы пробуете? (по-умолчанию 2013 качается, если с главной качать) https://sourceforge.net/projects/ldcm4/files/4.0.0.12/ - тут обе.

      Ошибка показывает, что программе не хватает dll (от UCMA) нужной версии.

      Удалить
  15. Добрый день.
    У меня возникает ошибка при нажатии кнопки "добавить":
    ***** Текст исключения **************
    System.IO.FileNotFoundException: Не удалось загрузить файл или сборку "Microsoft.Rtc.Collaboration, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" либо одну из их зависимостей. Не удается найти указанный файл.
    Имя файла: 'Microsoft.Rtc.Collaboration, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
    в k.i(Object A_0, EventArgs A_1)
    в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    в System.Windows.Forms.Control.WndProc(Message& m)
    в System.Windows.Forms.ButtonBase.WndProc(Message& m)
    в System.Windows.Forms.Button.WndProc(Message& m)
    в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    Установлен Skype For Business

    ОтветитьУдалить
    Ответы
    1. Skype For Business не поддерживается.

      Удалить
    2. Хотелось узнать, а будет ли в дальнейшем contact manager для Skype for business?

      Удалить
    3. Нет, я сменил место работы и с линком(теперь Skype for business) больше не взаимодействую.

      Удалить