Окей, 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

См. также

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

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

36000 руб.

03.08.2020    17783    19    22    

16

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

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

5040 руб.

04.05.2021    19849    13    17    

16

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

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

22656 руб.

25.05.2021    14424    42    8    

18

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1172    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1324 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. Да это копия с моего сайта, в статье нет афиширования
3. malikov_pro 1324 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С который будет соответствовать документации.
5. avryanovalexey 82 28.10.21 15:39 Сейчас в теме
Прикольно ) Наверное вряд ли стоит ожидать слишком интеллектуальных возможностей, а вот автоматизировать запуск пары десятков рутинных ежедневных операций с доступом через телефон или отвечать на 20-30 типовых запросов, точно прикольно.

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

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