При настройке штатной интеграции с Яндекс Телефонией (или любой другой облачной АТС) в программе 1С:Управление нашей фирмой системные администраторы часто сталкиваются с неприятной ситуацией. После внесения правок в файл конфигурации публикации default.vrd для автоматической авторизации сервиса, обычные пользователи теряют возможность входить в базу через браузер. При попытке входа веб-клиент выдает ошибку: "Нет прав на запуск требуемого клиента".
В этой статье мы подробно разберем, почему возникает этот конфликт, и как правильно настроить систему, используя механизм раздельных публикаций, чтобы телефония работала стабильно, а пользователи могли беспрепятственно использовать веб-клиент.
Для того чтобы облачная АТС могла передавать данные в 1С (например, информацию о входящем звонке), она обращается к специальному HTTP-сервису, опубликованному на веб-сервере. Поскольку АТС не может самостоятельно пройти диалог авторизации 1С, в файле default.vrd прописываются учетные данные технического пользователя (например, TelephonyService).
Разберем ситуацию: когда мы добавляем в секцию point параметры Usr="TelephonyService" и Pwd="password", веб-сервер начинает принудительно авторизовывать любое входящее соединение под этим пользователем. Это касается и обычных пользователей, пытающихся зайти через веб-интерфейс. Так как у технического пользователя TelephonyService обычно нет прав на запуск веб-клиента (и их не стоит давать в целях безопасности и лицензирования), система блокирует вход.
Единственным правильным и стабильным решением является разделение потоков трафика. Мы создадим две разные точки входа для одной и той же информационной базы. Проанализируем этот процесс по шагам.
Шаг 1. Подготовка папок на сервере
Для начала создадим на диске сервера две разные директории, в которых будут лежать файлы настроек. Рассмотрим пример для ОС Windows и сервера IIS (для Apache логика аналогична):
C:\inetpub\wwwroot\unf_web — здесь будет публикация для работы пользователей.C:\inetpub\wwwroot\unf_telephony — здесь будет публикация исключительно для нужд телефонии.Шаг 2. Публикация для пользователей
Запустим 1С:Предприятие в режиме Конфигуратора от имени администратора. Перейдем в меню Администрирование — Публикация на веб-сервере.
unf.C:\inetpub\wwwroot\unf_web.В этой публикации файл default.vrd редактировать не нужно. Пользователи будут вводить свои логины и пароли при входе.
Шаг 3. Публикация для телефонии
Теперь создадим вторую публикацию в том же окне Конфигуратора:
unf_tel.C:\inetpub\wwwroot\unf_telephony.Telephony или аналогичный в зависимости от версии УНФ).Шаг 4. Настройка авторизации для телефонии
Теперь нам необходимо отредактировать файл default.vrd во второй папке (unf_telephony). Откроем его любым текстовым редактором и приведем структуру к следующему виду, добавив параметры Usr и Pwd:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/unf_tel"
ib="Srvr="ServerName";Ref="BaseName";">
<httpServices publishByDefault="false">
<service name="Telephony"
alias="Telephony"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"
Usr="TelephonyService"
Pwd="YourPassword"/>
</httpServices>
</point>
Обратим внимание, что мы прописываем пользователя именно внутри тега конкретного сервиса или в общем теге point, если хотим, чтобы вся публикация работала под этими правами. Теперь внешние запросы к https://ваш-домен/unf_tel/hs/Telephony/... будут автоматически авторизовываться.
Выясним, какими правами должен обладать пользователь TelephonyService, чтобы интеграция работала корректно. В справочнике "Пользователи" создадим соответствующую запись:
default.vrd.После того как мы подготовили "выделенный канал" для связи АТС с 1С, нам нужно обновить настройки в личном кабинете Яндекса. Проанализируем формат ссылки Webhook.
В настройках интеграции в поле "URL для уведомлений" или "Адрес внешнего сервера" необходимо указать адрес, ведущий именно ко второй публикации:
https://ваш-домен.ru/unf_tel/hs/Telephony/v1
Если вы используете самоподписанный SSL-сертификат, Яндекс Телефония может отказаться передавать данные. Рекомендуем использовать бесплатные сертификаты Let's Encrypt для обеспечения корректной работы по протоколу HTTPS.
Если после всех настроек звонки в 1С по-прежнему не фиксируются, разберем возможные причины:
https://ваш-домен/unf_tel/hs/Telephony/v1/test в браузере (если такой метод предусмотрен конфигурацией). Если система запрашивает логин и пароль — значит, автоматическая авторизация в файле .vrd не сработала. Проверьте правильность написания атрибутов Usr и Pwd (учитывайте регистр!).Используя метод двух публикаций, мы полностью изолируем технический трафик телефонии от пользовательского интерфейса, обеспечивая безопасность системы и стабильность работы веб-клиента 1С:УНФ.