Окей, 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С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    3356    5    0    

11

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

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

60000 руб.

07.05.2019    35482    70    45    

30

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

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

57600 руб.

26.11.2024    3022    3    3    

5

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

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

24000 руб.

27.09.2024    5090    5    2    

6

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

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

36000 руб.

03.08.2020    19456    24    22    

20

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1229    7    2    

9

Обмен с ГосИС 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

3000 руб.

28.04.2016    93713    96    217    

347
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1331 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 551 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 1331 28.10.21 15:15 Сейчас в теме
(2) Описание варианта применения, какие задачи/проблемы может помочь решить.
"для понимания естественного языка." - думаю более корректно "распознавания"
Желательно описать связь компонентов, прочитал "по диагонали", зачем нужен docker образ не понял.
Из читающих мало кто разбирается в сборке контейнера, получается черный ящик от незнакомого человека.

Для нормального переиспользования нужно детальное описание, иначе заканчивается на "о прикольно".
4. Soloist 551 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 1331 29.10.21 00:21 Сейчас в теме
(4) По Docker прослойке понял, нужно детально смотреть.

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