Простая и пошаговая интеграция Яндекс-Алисы и 1С

09.04.18

Интеграция - WEB-интеграция

Интеграция Алисы и 1С через http сервис на платформе 8.3.9. Используем виртуальный сервер, сертификат от letsencrypt, и делаем простые запросы к базе из Алисы.

Скачать файлы

Наименование Файл Версия Размер
Конфигурация с http сервисом для работы с Алисой (8.3.9)
.cf 31,26Kb
21
.cf 31,26Kb 21 Скачать
Скрипт на OneScript для работы с Алисой
.os 5,85Kb
11
.os 5,85Kb 11 Скачать

Всем привет! После начала публичного бета-тестирования API Алисы я не смог пройти мимо и загорелся идеей попробовать интегрировать её с 1С. В процессе получилось много боли, страданий, но в конце концов всё заработало! В этой статье я собираюсь рассмотреть процесс интеграции по шагам с простой самописной базой, из которой мы будем получать сумму продаж.

1) Итак, для начала нам нужен Windows сервер (я купил в ultravds за 780 руб.)  и доменное имя. Залезаем в DNS редактор и делаем с помощью A записи, чтобы какой-либо поддомен указывал на IP нашего сервера. У меня это, например, выглядит вот так: 

То есть, у меня появляется поддомен bott.mysite.ru который указывает на IP моего сервера.

Если вы всё сделали правильно и у вас на сервере уже запущен IIS (легко нагуглить как это сделать) то вы увидите следующую картинку при визите на bott.mysite.ru

Отлично. Теперь, для работы Алисы, нужно настроить на сайте https.

2) Для бесплатного приобретения валидного, не самоподписанного сертификата, мне помогла утилита PkiSharp-winacme. У нее простой консольный интерфейс, в котором легко разобраться.

Только не забудьте при ее использовании отключить IIS, потому что ей тоже нужен порт 80. После генерации сертификатов, она добавит их в реестр, что в дальнейшем облегчит нам настройку IIS. Просто при создании новой привязки на порт 443, сертификат уже будет в списке выбора.

3) Для общения с Алисой нам понадобится HTTP сервис, который будет отвечать на POST запросы. Добавляем его в конфигурацию (я сделал файловую на 8.3.9), пишем код (можно посмотреть в прикрепленном cf) и публикуем базу на веб-сервере IIS, не забыв поставить галочку "Публиковать HTTP сервисы". После этого нам понадобится какой-нибудь отладчик, чтобы делать POST запросы и проверить работу нашего сервиса. Я использовал Advanced REST client для Хрома. И вот-тут то я столкнулся с несколькими ошибками: 

3а) долгое время у меня при запросе сервиса вылетала 500 ошибка. Оказывается, потому что я поставил платформу 8.3.6 и надо было в свойствах IIS разрешить 32х разрядные приложения. Помогла мне эта статья

3б) Сервис через отладчик не хотел работать без авторизации. Пришлось прописывать url вида https://user:password@bott.site.ru/hs/def и только тогда всё работало. Позднее именно эта особенность доставила мне больше всего хлопот и потрепала изрядно нервов.

4) Для правильного ответа Алисе, согласно документации, надо отдать не просто json, а правильно включить в него поля запроса, такие как session_id, user_id, message_id. Поэтому надо написать код для разбора пришедшего от Алисы Json запроса и выдергивания из него нужных полей в ответ. Код можно посмотреть в приложенной cf в модуле hhtp сервиса. Получается все хорошо:

И тут я подумал что успех близок, однако оказалось что Алиса не принимает в качестве Webhook URL тот формат с пользователем и паролем, который прекрасно работал в отладчике. При попытке его ввести, все время появлялась ошибка "Ошибка в ответе Webhook", причем, согласно моим логам, запрос вообще не приходил. Я обратился в техподдержку Яндекса и в тикете Ticket#18032116321077218 от 29 марта мне обещали это починить, однако на 07.04 все еще такой формат URL не поддерживается.

Тут я приуныл, но вспомнил что есть еще такая штука как OneScript, которая тоже может в HTTP сервисы

5) После некоторых плясок с бубном и настройки сервера под запуск OneScript, у меня получилось возвращать такой же верный ответ как и из 1С, что и неудивительно - код был такой же. URL стал вида https://bott.site.ru/bin/web.os и такой формат Алиса уже приняла без ошибки

И наконец-то заработал тестовый чат на вкладке навыка "Тестирование":

Я обрадовался, и решил что для получения данных из 1С достаточно перенаправить запрос в неё.

6) При переадресации из OneScript в 1С я написал вот такой код:

СтрокаСсылки = "http://user:password@localhost/dbz/hs/def/";
Соединение = Новый HTTPСоединение(СтрокаСсылки,80,"user","password");
тело= Запрос.ПолучитьТелоКакСтроку();
Запрос1 = Новый HTTPЗапрос;
Запрос1 .Заголовки.Вставить("Content-Type","application/json");
Запрос1.УстановитьТелоИзСтроки(тело); 
Ответ1с = Соединение.ОтправитьДляОбработки(Запрос1);
Возврат Ответ1с; 

Но оно не взлетело и все время возникала 500 ошибка. Тут я уже приуныл окончательно и решил что ничего не получится.

7) Однако, немного пояндексив про "http сервисы без авторизации" я нашел тему на Инфостарте, и, оказывается, параметры авторизации можно прописать прямо в default.vrd. В самом верху где у вас прописан первый тег point есть путь к ИБ (у меня файловая) и туда можно дописать юзера и пароль:

ib="File="C:\onecweb\filebase";usr="username";pwd="password""

Это помогло, и ссылка на http сервис без авторизации удовлетворила Алису.

8) Собственно, нужно же сделать что-то полезное по команде Алисы и я выбрал просто отправлять в ответ пользователю сумму продаж по регистру Продажи.Обороты. Иногда вылетает ошибка "url диалога недоступен", мне кажется это из-за того что у меня файловая база. Но все равно это успех!

9) Однако, что если мы хотим более сложное поведение - те же продажи за определенный период, по определенным организациям, складам, номенклатуре. Использовать все время СтрНайти для разбора команд не очень продуктивно, поэтому следующая тема для развития - какая-то нейросеть для извлечения фактов из текста. Чтобы ей можно было передать строку вида "отчет по продажам по организации ромашка со склада Основной за неделю" и она возвращала json с найденными фактами. У Яндекса есть для этого Томита парсер, возможно в комментариях мне подскажут еще хорошие варианты, и я дополню эту статью.

 

Алиса голосовой помошник интеграция

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15655    9    17    

9

Потоковая предметная фотосъемка c удалением фона (Canon & Nikon)

Нейросети 8.3.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Обработка подключения фотокамер Canon и Nikon к Управление торговлей 11.4 для потоковой загрузки фотографий в карточки товаров с автоматическим удалением фона

22800 руб.

24.06.2021    9149    2    3    

10

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12809    30    8    

10

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17424    6    15    

13

Заполнение описания номенклатуры с помощью ChatGPT

Мастера заполнения Нейросети Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Расширение для заполнения описания номенклатуры с помощью модели ИИ ChatGPT. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5000 руб.

13.03.2023    15840    42    49    

74
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. metmetmet 81 09.04.18 21:10 Сейчас в теме
Не до конца понял как все настроено, но однозначно круть.
Я так понял, общение с Алисой происходит в приложении на телефоне, и каким-то образом настроен вебхук на http сервис 1c?
pavel_pss; +1 Ответить
2. kiv1c 809 10.04.18 09:17 Сейчас в теме
(1) пока не через телефон, а через тестовый чат на платформе Яндекс-диалогов, и там да, вебхук - ссылка с https на которые Алиса делает POST запросы.
28. пользователь 24.05.18 05:41
Сообщение было скрыто модератором.
...
30. пользователь 27.05.18 06:38
Сообщение было скрыто модератором.
...
3. baracuda 2 10.04.18 11:07 Сейчас в теме
В чем суть?? Алиса смогла 1с слово продажи а вы смогли это слово распознать и дать ответ в виду готового отчета?
6. olegmedvedev 65 10.04.18 16:12 Сейчас в теме
(3)ну это примерно как с чат-ботами в телеграмм. там тоже даешь боту команду - он тебе отчет. тут фишка в голосовом управлении.
4. blackhole321 1303 10.04.18 14:14 Сейчас в теме
Поясните пожалуйста, Вы проксируете ответы через OneScript или webhook напрямую настроен на 1С?
15. kiv1c 809 11.04.18 14:18 Сейчас в теме
(4) после добавления авторизации в default.vrd вебхук получилось настроить напрямую на 1с
16. blackhole321 1303 11.04.18 14:22 Сейчас в теме
(15)А что с лицензиями? Одновременных запросов может быть приличное количество.
5. bonv 1508 10.04.18 16:09 Сейчас в теме
(0) С учетом
использовать файловую базу 1С не самое лучшее решение. Да и в целом не все запросы можно обработать за такое время в 1С.
8. TitanLuchs 395 11.04.18 10:29 Сейчас в теме
(5) Файловая база вполне разумное решение при небольшом количество запросов. А 1,5 секунд для 1С это даже много, обычно за 200-300 мсек ответ возвращается.
9. bonv 1508 11.04.18 10:54 Сейчас в теме
(8)
А 1,5 секунд для 1С это даже много, обычно за 200-300 мсек ответ возвращается.

Ну если возвращать "Привет Мир!", то да) Если добавить какую-то бизнес-логику, то время ответа сильно возрастет.
10. TitanLuchs 395 11.04.18 11:02 Сейчас в теме
(9) Это широко распространенное заблуждение
11. bonv 1508 11.04.18 12:00 Сейчас в теме
(10) В чем заблуждение? Это же очевидно что время ответа "привет мир!" будет меньше, чем время ответа, например, информации о задолженности контрагента Иванова, которую получаем запросом
12. Fox-trot 156 11.04.18 12:55 Сейчас в теме
13. bonv 1508 11.04.18 13:05 Сейчас в теме
(12) не очевидно, что запрос к базе данных требует какое-то время? И это время больше, чем нулевое время когда мы запрос к базе данных не делаем?
14. TitanLuchs 395 11.04.18 14:12 Сейчас в теме
(13) То, что время будет больше, это, конечно же, очевидно. А вот про "нулевое время" вы зря. Так как при выполнении запросов к 1С через http-сервисы нулевого времени не бывает. На установление соединения (даже не первоначального, а повторного при переиспользовании сеансов) уходит очень много времени. Причем настолько много, что если просто "выдать в ответ "Привет, мир!"" займет Х миллисекунд, то это не значит, что "сходить за данными в БД и вернуть их" займет в разы больше времени: 2Х, 3Х или 10Х. Часто это бывает всего 1,1Х, и то при большом количество запросов к 1С. Фишка в том, что ~0,9Х от общего времени занимает само подключение к базе.
Fox-trot; +1 Ответить
17. bonv 1508 11.04.18 15:22 Сейчас в теме
(14) "нулевое время" упоминалось мной только в контексте "когда мы запрос к базе данных не делаем". Очевидно, что вызов сервиса занимает не нулевое время.
Причем настолько много, что если просто "выдать в ответ "Привет, мир!"" займет Х миллисекунд, то это не значит, что "сходить за данными в БД и вернуть их" займет в разы больше времени: 2Х, 3Х или 10Х.

Запрос запросу рознь. Любой запрос к виртуальной таблице ОстаткиИОбороты регистра бухгалтерии выполняется в 10 и более раз дольше, чем просто ответить "Привет мир!". Да что уж там, задача "получить информацию о задолженности контрагента Иванова, используя регистр бухгалтерии, через Алису" без дополнительных таблиц нереализуема. Ибо время будет выходить за 1.5 сек почти всегда.
18. TitanLuchs 395 11.04.18 15:35 Сейчас в теме
(17)
задача "получить информацию о задолженности контрагента Иванова, используя регистр бухгалтерии, через Алису" без дополнительных таблиц нереализуема. Ибо время будет выходить за 1.5 сек почти всегда.


Она реализуема на 100% путем выполнения двух http-запросов. Первым инициируем начало формирования отчета, а вторым забираем результат. Забирать можно когда угодно - хоть через 1,5 секунды, хоть через 1,5 дня.
19. bonv 1508 11.04.18 16:21 Сейчас в теме
(18)
- "Алиса, какая задолженность у контрагента Иванов?"
- "Приходите завтра"

Ну нормально чо)
ivanov660; +1 Ответить
20. TitanLuchs 395 11.04.18 17:46 Сейчас в теме
(19) Если у вас взаиморасчеты формируются полтора дня, то не нормально, а грустно.
21. nporrep 50 12.04.18 05:00 Сейчас в теме
(20) Здравствуйте. Как там у вас, в будущем?
22. nporrep 50 12.04.18 05:09 Сейчас в теме
(20)
Кроме шуток, грустно на самом деле то, что Вы не допускаете в свою голову мысль о гораздо больших масштабах оперативной информации, чем те, с которыми Вы привыкли работать. Много лет назад, однажды, я столкнулся с ограничением в Excel в количестве строк на листе и всё заверте... ODBC get, динамическое наблюдение + быстрый своп, параллелизм... если вы понимаете, о чем я =)
23. TitanLuchs 395 12.04.18 09:18 Сейчас в теме
(22) Я не знаю, какой объем оперативной информации для вас "большой". Если хотите конкретики, то в реальных проектах мы за 300-400 миллисекунд получали выборку из 50 записей регистра сведений, содержащего 100000000 (сто миллионов) записей и успешно отображали ее в виде таблицы html на сайте. Выполняли 900 http-запросов к 1С в секунду, из которых половина выполняет запись в БД. И такое условие, как ограничение в 1,5 секунды при выполнении запроса, выполняется более чем успешно независимо от масштаба оперативной информации.
MrFlanker; +1 Ответить
25. buganov 200 23.05.18 07:05 Сейчас в теме
(23) можно пруф? слабо верится, что 50 записей можно выбрать из 100КК за 400 мс. Сколько людей в базе находилось в это время? Какой размер базы? Железо и версия 1С и SQL?
27. TitanLuchs 395 23.05.18 10:37 Сейчас в теме
(25) Я не скажу ничего про размер базы, железо и версии 1С и SQL, потому что у меня нет этой информации. Мы делали этот функционал для gilev.ru, разрабатывали только веб-морду и модули 1С, которые берут за основу уже выбранные из базы данные, обеспечивают их отображение на странице сайта и интерактивность. А выборку данных, настройку серверов и прочее ускорение работы делали сотрудники gilev.ru. Поскольку они именно на этом специализируется, получилось так быстро. На разогретой базе запрос в среднем за 400 мсек. Спросите их, возможно они поделятся информацией.
Часть этого функционала можно посмотреть, например, здесь: http://www.gilev.ru/sqlsize/.
MrFlanker; +1 Ответить
7. monkbest 115 11.04.18 07:57 Сейчас в теме
А можно поподробнее принцип взаимодействия пользователь/Алиса/1с
если я своей Алисе скажу "продажи" она же не полезет к Вам на сервер :)

т.е. как Алиса узнает, что запросы именно вот этого пользователя надо перенаправлять куда-то?
24. user971612 07.05.18 19:39 Сейчас в теме
А как сделать лишь запуск проводника адреса? К примеру игры. steam://rungameid/509980
26. evn-zorin 32 23.05.18 07:46 Сейчас в теме
чем бы дитя не тешилось
29. Maxisussr 24.05.18 16:42 Сейчас в теме
(0)
Не совсем понял (может, плохо читал), в чем отличие от Telegram-бота по своей сути (результату)?
31. SiAl 76 21.09.18 21:00 Сейчас в теме
Слышал байку, что уже есть WMS с голосовым управлением. Типа, ходит кладовщик с гарнитурой и через Алису запрашивает по номеру заказа на сборку что собирать и где, а та отвечает. Потом также кладовщик голосом фиксирует окончание сбора через Алису. Типа тогда руки свободны от бумаг, планшета, ТСД и бегать к компу нет надобности постоянно. Но что-то не могу найти через поисковики такое решение. Наверно все-таки это пока байка.
32. acanta 21.09.18 21:29 Сейчас в теме
Как много девушек хороших готовы поработать вместо Алисы. Блютус, мобилка и громкая связь.
33. olo_lo4 14.01.19 19:39 Сейчас в теме
Ребят, а есть продолжение этой по настоящему бомбической темы ?
34. kiv1c 809 15.01.19 11:16 Сейчас в теме
(33) а что бы вы хотели видеть в продолжении? у меня пока идей новых нет)
35. xyzet 15.01.19 18:48 Сейчас в теме
Эпловская Сири на очереди следующая или у нее нет возможности подобного взаимодействия?
36. TitanLuchs 395 18.01.20 22:38 Сейчас в теме
(35) У Сири еще проще. Там есть "Команды". Создаешь новую команду с запуском приложения, в качестве приложения выбирается браузер, на следующем шаге пункт "Получить содержимое веб-страницы" и в URL можно указать путь к http-сервису базы 1С с нужными параметрами. У меня так Сири по голосовым командам дома свет включает/выключает.
Fox-trot; +1 Ответить
37. SeiOkami 3418 02.09.20 18:06 Сейчас в теме
Ждём интеграции с Яндекс колонкой. Чтобы можно было надиктовывать настройки для СКД, и слушать в ответ результат отчета
38. pavel_pss 289 26.04.21 14:30 Сейчас в теме
по сути, посмотрев эту cf ты просто сделал http сервис, который не понятно откуда получает входящие данные , обрабатывает их и возвращает ответ. Может я не совсем внимательно читал статью, и не особо разбирался и пунктами до №4, но откуда и как получить эти входящие данные, а именно как заставить алису передать данные в твой http сервис я не понял.
Оставьте свое сообщение