Я видел много сообщений о том, как создать чат-бота для самых разных платформ для совместной работы, таких как Slack, Facebook Messenger, HipChat… решил создать чат-бота с нуля до рабочего, используя последнюю версию Angular v5.0.0, DialogFlow и AWS.

Вот как будет выглядеть наш чат-бот в конце поста:

Примечание: это проект с открытым исходным кодом, его можно найти на моем Github.

Для начала создайте новый проект Angular с помощью Angular CLI:

ng новый smartbot - style = scss

1 - Архитектура чат-бота

Мы разделим приложение чата на разные компоненты, и каждый компонент сможет общаться с другими с помощью директив атрибутов:

2 - Сущность сообщения

Создайте пустой класс, введя следующую команду:

ng генерировать модели классов / сообщение

Сущность сообщения имеет 3 поля:

3 - Компонент списка сообщений

Создайте новый компонент:

ng сгенерировать компоненты / список сообщений

Теперь мы можем отображать сообщения, перебирая их:

Код этого компонента должен выглядеть так:

Обратите внимание на использование @ app / models вместо относительного пути, называемого псевдонимом. Чтобы иметь возможность использовать псевдонимы, мы должны добавить свойства paths в наш файл tsconfig.json следующим образом:

Примечание. Я также добавил псевдоним @env, чтобы иметь возможность доступа к переменным среды из любого места в нашем приложении.

4 - Компонент элемента сообщения

Давайте создадим компонент, который будет просто отображать сообщение в нашем списке сообщений:

ng сгенерировать компонентные компоненты / сообщение-элемент

В message-item.component.html добавьте следующее содержимое:

Код компонента должен выглядеть так:

5 - Компонент формы сообщения

Создадим форму, которая будет отвечать за отправку сообщений:

ng сгенерировать компонентные компоненты / сообщение-элемент

В message-form.component.html добавьте следующее содержимое:

И это соответствующий машинописный код в message-form.component.ts:

Метод sendMessage () будет вызываться каждый раз, когда пользователь нажимает кнопку отправки.

Вот и все! Попробуйте сами, и вы убедитесь, что он работает.

нг подавать

В этот момент вы не получите никакого ответа, и здесь вам пригодится НЛП.

6 - Серверная часть НЛП

Я выбираю DialogFlow. Зарегистрируйтесь в DialogFlow и создайте нового агента:

Затем включите функцию Светский разговор, чтобы просто поболтать:

Примечание. Вы можете легко изменить ответы на вопросы, если они вам не нравятся. Чтобы пойти дальше, вы можете создать свои собственные Намерения и Сущности, как описано в моем предыдущем руководстве.

Скопируйте токен клиентского доступа DialogFlow. Он будет использоваться для запросов.

Вставьте токен в файл environment / environment.ts:

7 - Служба DialogFlow

Создайте службу DialogFlow, которая будет вызывать DialogFlow API для получения соответствующего ответа:

ng сгенерировать сервисные сервисы / диалог

Он использует DialogFlow API для обработки естественного языка в виде текста. Каждый запрос API включает поле Авторизация в заголовок HTTP.

Обновите метод sendMessage () в MessageFormComponent следующим образом:

Наконец, в app.component.html скопируйте и вставьте следующий код, чтобы включить директивы message-list и message-form:

8 - Развертывание в AWS

Создание артефактов промышленного уровня:

ng build - env ​​= prod

Артефакты сборки будут храниться в каталоге dist /.

Затем создайте корзину S3 с помощью AWS CLI:

aws s3 mb s3: // smartbot-mlabouardy

Загрузите артефакты сборки в корзину:

aws s3 cp dist / s3: // smartbot-mlabouardy - рекурсивный - предоставляет read = uri = http: //acs.amazonaws.com/groups/global/AllUsers

Наконец, включает хостинг веб-сайтов для вашей корзины:

Веб-сайт aws s3 s3: // smartbot-mlabouardy - index-document index.html

Если вы укажете в браузере URL корзины S3, вы должны увидеть окно чата: