Окей, Google

28.10.21

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

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

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

 

Видеоинструкция

 

Необходимые знания

  • Публикация 1С на веб-сервере
  • Сети, DNS, переадресация портов
  • Docker

 

Демо база 1С

Скачиваем dt демо базы и разворачиваем его.

Публикуем базу на веб-сервере с именем demo_dialog.

Проверяем публикацию по ссылке http://localhost/demo_dialog/hs/dialog. В появившемся окне аутентификации вводим Имя пользователяdialog, Парольdialog. Ответом сервера должен быть текст — Демонстрационный сервис интеграции 1C c Google Assistant., который говорит, что публикация демо базы прошла успешно.

 

Google Ассистент. Настройка

На сайте Actions Console создаём новый проект нажав кнопку New project. Вводим имя проекта demo-dialog, язык — Russian, страна — Russia и нажимаем Create project.

В стартовом окне выбираем тип Custom и нажимаем Next. Проект создадим с нуля, поэтому выбираем Blank project и нажимаем Start building.

В разделе настроек Settings указываем имя Display nameУНИКАЛЬНОЕ_ИМЯ (в моём случае Диалог с 1С) и нажимаем Save.

В разделе связывания аккаунта Account linking переводим переключатель в активное положение. Отвечаем положительно Yes на вопрос регистрации голосом Do you want to allow users to sign up for new accounts via voice? и нажимаем Next. Тип связывания Linking type выбираем Google Sign In и нажимаем Next. Запоминаем Client ID, мы его будем указывать в константе AG_CLIENT_ID, и нажимаем Save.

 

Файл окружения

На рабочем столе создадим файл окружения env.txt:

NODE_ENV=production
BASE_1C_HOST=http://ИМЯ_МАШИНЫ_1С/demo_dialog/hs/dialog
BASE_1C_USERNAME=dialog
BASE_1C_PASSWORD=dialog
BASE_1C_TOKEN=base-1c-token
AG_CLIENT_ID=Client ID issued by Google to your Actions
  • NODE_ENV — внутренняя константа проекта. Необходимо указать production
  • BASE_1C_HOST — URL http-сервиса 1С. Важно указать имя (или ip) машины на которой опубликована база 1С, а не писать localhost
  • BASE_1C_USERNAME — пользователь http-сервиса
  • BASE_1C_TOKEN — внутренний ключ для работы http-сервиса. В базе 1С он хранится в константе Dialog base-1c-token
  • BASE_1C_PASSWORD — пароль пользователя http-сервиса
  • AG_CLIENT_IDClient ID, который нам выдал Google Ассистент для связывания аккаунта

SSL сертификат

Если нет сертификата, то самый быстрый способ — это создать самоподписанный SSL сертификат. Сделаем это через openssl, который прилагается при установке git. На рабочем столе создадим каталог %USERPROFILE%/Desktop/certs и запустим команду:

"C:/Program Files/Git/usr/bin/openssl.exe" ^
req -x509 -nodes -sha256 -days 365 ^
-keyout %USERPROFILE%/Desktop/certs/key.pem ^
-out %USERPROFILE%/Desktop/certs/cert.pem

В нашем каталоге появится два файла key.pem и cert.pem.

 

Docker контейнер hardandheavy/dialog

После установки Docker запускаем команду:

docker run ^
    --env-file %USERPROFILE%/Desktop/env.txt ^
    -v %USERPROFILE%/Desktop/certs:/certs ^
    -p 3000:3000 ^
    hardandheavy/dialog

Проверяем публикацию по ссылке https://localhost:3000/. Ответом сервера должен быть текст — Сервис для интеграции 1C и Dialogflow CX. Версия 1.0.0., который говорит, что контейнер успешно развёрнут.

Дополнительно:

  • Порт можно заменить на другой изменив в команде значение настройки p -p НУЖНЫЙ_ПОРТ:3000
  • Для обновления контейнера используется команда docker pull hardandheavy/dialog
  • Исходный код контейнера расположен на сайте https://github.com/HardAndHeavy/dialog

 

Переадресация портов

Для машины, на который запущен контейнер, открываем доступ из интернета к 3000 (НУЖНЫЙ_ПОРТ) порту. Устанавливаем доменное имя. Итоговым результатом будет ВНЕШНИЙ_URL_СЕРВИСА вида https://ДОМЕННОЕ_ИМЯ/webhook-ag.

 

Google Ассистент. Develop. Webhook

Переходим в раздел Webhook. В открывшемся окне выбираем метод выполнения Fulfillment MethodsHTTPS endpoint и нажимаем Confirm. В поле HTTPS endpoint вводим ВНЕШНИЙ_URL_СЕРВИСА.

 

Google Ассистент. Develop. Блок-схема

Переходим в раздел Main invocation. В блоке Диалог с 1С меняем speech на Данное приложение демонстрирует связь Action Google с 1С.. В переходе Transition набираем AccountLinkingOrigin и нажимаем Add. Нажимаем Save.

Переходим на сцену AccountLinkingOrigin. В обработчике Condition нажимаем плюс. В условии if вводим user.accountLinkingStatus == "LINKED". В переходе Transition набираем Dialogue и нажимаем Add. В обработчике Condition нажимаем плюс. В условии else if вводим user.accountLinkingStatus != "LINKED". В переходе Transition выбираем сцену Account linking. Нажимаем Save.

Переходим на сцену AccountLinkingOrigin_AccountLinking. В обработчике Condition для условия If user successfully completes account linking включаем Call your webhook и вводим create_user. В переходе Transition выбираем сцену AccountLinkingOrigin. В обработчике Condition для условия If user cancels or dismisses account linking в переходе Transition выбираем сцену End conversation. В обработчике Condition для условия If system or network error occurs в переходе Transition выбираем сцену End conversation. Нажимаем Save.

Переходим на сцену Dialogue. В обработчике User intent handling нажимаем плюс. В поле Intent набираем request и нажимаем Add. Включаем Call your webhook и вводим request. В переходе Transition выбираем сцену Dialogue. В обработчике User intent handling нажимаем плюс. В поле Intent набираем goodbye и нажимаем Add. Включаем Call your webhook и вводим goodbye. В переходе Transition выбираем сцену End conversation. Нажимаем Save.

 

Google Ассистент. Develop. Типы

В разделе типов Types нажимаем плюс и вводим topic. В разделе Add entries создаём перечисления:

  • store — store; склад; остаток склада
  • money — money; деньги; касса; остаток денег
  • copy — copy; скопируй; копировать; копия; скопировать; сделай копию

Нажимаем Save.

В разделе типов Types нажимаем плюс и вводим user. В разделе Add entries создаём перечисления:

  • i — i; я; меня; мою
  • ivan — ivan; Иван; Ваня; Ваниной
  • pavel — pavel; Павел; Паша; Пашиной
  • alexander — alexander; Саша; Александр; Сашиной

Нажимаем Save.

 

Google Ассистент. Develop. Тренировка фраз

В разделе Custom Intents переходим на намерение request.

Добавляем три параметра в разделе Add intent parameters:

  • topic с типом topic
  • date с типом actions.type.DateTime
  • user с типом user

Замечание! Имя параметра не должно содержать символа тире -.

Добавляем тренировочные фразы в разделе Add training phrases и поправляем нейронную сеть указывая правильное соответствие слов переменным:

  • какой остаток склада
  • какая была вчера касса
  • какой остаток денег сегодня
  • скажи кассу
  • касса
  • склад сегодня
  • в октябре
  • касса 01.09
  • на 09.2021
  • склад 1.05.21
  • а вчера
  • скопируй
  • сделай копию Пашиной базы
  • скопируй базу для Саши
  • скопируй для меня
  • скопируй Ване
  • 25 июля

Нажимаем Save.

 

 

В разделе Custom Intents переходим на намерение goodbye.
Добавляем тренировочные фразы в разделе Add training phrases:

  • пока
  • спасибо
  • до свидания
  • стоп
  • остановись
  • конец

Нажимаем Save.

 

Google Ассистент. Test

 

 

Google Ассистент. Deploy

В разделе Directory information заполняем: описание, изображение, контактные данные, политику конфиденциальности. Дополняем Additional invocation phrases согласно документации фраз запуска приложения. Заполняем дополнительную информацию и нажимаем Save.

В разделе Release публикуем проект. Нажимаем Start new release, выбираем канал Alpha и нажимаем Submit. И на это всё. В личном смартфоне можно запустить наше приложение произвольной фразой. Например, можно сказать: Окей, Google, давай поговорим с приложением Диалог с 1С.

 

Собственная разработка в 1С

Точкой входа для изучения механизма будет метод request. В нём происходит работа с параметрами (params), пользовательскими данными (payload) и контекстом (session).

 

Заключение

Данная статья затрагивает работу с платформой Dialogflow CX лишь через интерфейс “Окей, Google”. Но на этом возможности контейнера hardandheavy/dialog и демонстрационной конфигурации не заканчиваются. Продолжение следует…

Google AI чат-бот ok окей Dialogflow Ассистент интеграция Docker Actions Диалог dialog hardandheavy

См. также

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

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15931    13    18    

13

Интеграция 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    17883    6    15    

13

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

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

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

5000 руб.

13.03.2023    16177    43    49    

74

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

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

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

22800 руб.

24.06.2021    9276    2    3    

11

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88928    163    216    

318
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1293 28.10.21 13:51 Сейчас в теме
1. Не описаны вводные
2. ссылка на dt на стороннем ресурсе
3. если выкладываете открытый код, то имеет смысл разложить на исходники и выложить на GitHub
4. Докер не обязательно ставить на хост, можно через систему виртуализации, статью по этому поводу писал.

Ссылка на документацию технологии https://cloud.google.com/dialogflow/cx/docs, желательно дать краткое описание / перевод как работает

Это копия публикации https://grig.top/ok_google/
+
2. Soloist 545 28.10.21 14:44 Сейчас в теме
(1)
1. Постарался как мог. Что именно не хватает?
2. Ссылка на dt ведёт на github и приложена как данные релиза https://github.com/HardAndHeavy/demo_dialog/releases
3. Разложено, и ссылка ведёт как раз на проект https://github.com/HardAndHeavy/demo_dialog
4. Да, как вариант, тут простор для запуска.
5. Спасибо за ссылку на Dialogflow
6. Да это копия с моего сайта, в статье нет афиширования
deadmp3; +1
3. malikov_pro 1293 28.10.21 15:15 Сейчас в теме
(2) Описание варианта применения, какие задачи/проблемы может помочь решить.
"для понимания естественного языка." - думаю более корректно "распознавания"
Желательно описать связь компонентов, прочитал "по диагонали", зачем нужен docker образ не понял.
Из читающих мало кто разбирается в сборке контейнера, получается черный ящик от незнакомого человека.

Для нормального переиспользования нужно детальное описание, иначе заканчивается на "о прикольно".
4. Soloist 545 28.10.21 15:37 Сейчас в теме
(3) Понял.

Про применение. Чат-бот по аналогии как в банкинге делают. Суть заключается в том, что сеть можно так натринеровать, что она будет понимать текст и любую фразу представлять в виде нужных переменных. По сути тема мощная, но её раскрыть у меня нет сил. Даже в интернете крупицы.

Про контейнер. Он нужен, чтобы не писать своё API и читать муторную документацию https://cloud.google.com/dialogflow/cx/docs/reference Google это понимает и для этого сделала библиотеку https://github.com/actions-on-google/assistant-conversation-nodejs для NodeJS, а я чтобы не мучаться просто оберунл её в виде веб-сервиса и подружил с 1С. Если кратко контейнер сокращает разработку API для взаимодействия. Просто так 1С будет сложно подключить, но я буду рад, если кто-нибудь напишет общий модуль на 1С который будет соответствовать документации.
deadmp3; +1
5. avryanovalexey 82 28.10.21 15:39 Сейчас в теме
Прикольно ) Наверное вряд ли стоит ожидать слишком интеллектуальных возможностей, а вот автоматизировать запуск пары десятков рутинных ежедневных операций с доступом через телефон или отвечать на 20-30 типовых запросов, точно прикольно.

Можно даже клиентам создать такой как голосовой автоответчик )) Думаю будет веселее, чем, "если вы хотите узнать курс валюты, нажмите цифру 1".
deadmp3; Soloist; +2
6. malikov_pro 1293 29.10.21 00:21 Сейчас в теме
(4) По Docker прослойке понял, нужно детально смотреть.

"она будет понимать текст и любую фразу представлять в виде нужных переменных." - корректно распознавать речь, выделять паттерны из которых часть функции, часть переменные. "Понимать" применимо к человеку, не к машине (гуглите "Ученый с миллиардом. Тупик нейронауки, искусственный интеллект и инвестиции Softbank", "Нейросети, стихи и операции на мозге. Зачем нужна лингвистика").
Если Вам интересна тема то нужно идти в группы по этой теме, в одного оч трудно осваивать, на этом ресурсе мало людей разбирающихся в ML.
Soloist; +1
Оставьте свое сообщение