Русский
Русский
English
Статистика
Реклама

Чат-бот

Перевод Интеграция чат-бота Dialogflow с Angular-приложением

08.12.2020 20:18:28 | Автор: admin
Существует множество публикаций о разработке чат-ботов с использованием возможностей платформы Dialogflow. Но для выхода на решение, которое применимо на практике, просто создать бота недостаточно. Бота надо подключить к веб-интерфейсу. Это интересная и сложная задача. Чат-боты используются в различных веб-проектах, в том числе тех, которые созданы с использованием Angular популярного, постоянно развивающегося фреймворка для разработки веб-приложений. Сегодня мы поговорим о том, как интегрировать чат-бота Dialogflow с Angular-приложением.



Предварительные требования


Для того чтобы приступить к работе вам понадобится готовый чат-бот Dialogflow (или знания о том, как его создать) и Angular-приложение (ниже мы поговорим о создании такого приложения). Для того чтобы интегрировать бота в приложение вам будет нужна учётная запись на Kommunicate. Всё, что нам понадобится, можно, как минимум, бесплатно испытать.

Интеграция чат-бота с Angular-приложением


Сейчас я хочу рассказать о том, как подключить бота к Angular-приложению с помощью Kommunicate.

Обратите внимание на то, что для того чтобы не усложнять это учебное руководство, мы будем рассматривать очень простые примеры кода. Код проекта, которым мы будем тут заниматься, можно найти на GitHub. Здесь можно почитать хороший материал об интеграции ботов в веб-проекты, подготовленный компанией Kommunicate.

Шаг 1. Создание чат-бота Dialogflow


Для освоения этого руководства вам понадобится чат-бот Dialogflow либо готовый, либо, например, созданный на основе одного из предлагаемых платформой шаблонов. Имея бота, вы сможете создавать собственные намерения (Intents) и сущности (Entities).

Шаг 2. Интеграция чат-бота Dialogflow с Kommunicate


Войдите в вашу панель управления Kommunicate и перейдите в раздел Bot Integrations. Если у вас ещё нет учётной записи Kommunicate создать её можно здесь. Войдите в раздел Dialogflow и перейдите к настройкам интеграции бота.


Начало настройки интеграции бота и платформы Kommunicate

Теперь перейдите в консоль Dialogflow и загрузите файл с ключом сервисной учётной записи (service account key file). Для того чтобы найти этот файл выполните следующие действия:

  1. Откройте окно настроек агента Dialogflow (значок шестерёнки в левой панели).
  2. Щёлкните по ссылке на Google Cloud, которая имеется в панели проекта.
  3. В Google Cloud перейдите в раздел Credentials, щёлкнув по APIs & Services.
  4. В разделе Credentials найдите подходящую сервисную учётную запись (service account) и щёлкните по кнопке её редактирования.
  5. В нижней части страницы щёлкните по кнопке Add Key и создайте ключ, выбрав формат JSON. Файл с ключом будет загружен на ваш компьютер.

Для того чтобы интегрировать бота Dialogflow CX с Kommunicate выполните те же шаги для загрузки JSON-ключа и укажите в панели Kommunicate Agent ID. Для того чтобы узнать Agent ID, войдите в консоль Dialogflow CX, выберите проект, а в разделе, соответствующем вашему агенту, скопируйте в буфер обмена имя агента, выглядящее примерно так, как показано ниже.

projects/billing-d041f/locations/global/agents/54b0c663-2c01-4a09-a482-277ff39c0b05

То, что нам нужно, Agent ID, выглядит примерно так: 54b0c663-2c01-4a09-a482-277ff39c0b05.


Копирование Agent ID

Далее, продолжая настройку интеграции бота с Kommunicate, дайте боту имя и назначьте изображение для его профиля. На итоговом этапе настройке укажите, нужна ли боту возможность автоматического перевода диалога на оператора-человека в том случае, если он не смог распознать запрос пользователя (bot to human handoff). После этого нажмите на кнопку завершения интеграции.


Финальный этап настройки интеграции бота с Kommunicate

Для того чтобы увидеть список ботов, интегрированных с Kommunicate, перейдите в панели управления системы в раздел Bot Integration. Тут имеется список интегрированных ботов. В частности, в разделе Dialogflow можно будет увидеть зелёный значок, на котором указано количество интегрированных ботов.


Управление ботами, интегрированными в Kommunicate

Теперь мы готовы к тому, чтобы интегрировать чат-бота в Angular-приложение.

Шаг 3. Глобальная установка Angular CLI


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

npm install -g @angular/cli

Создадим новый проект Angular-приложения. Для этого используется команда ng new, которой передают имя приложения (my-app в нашем случае):

ng new my-app

Это простое приложение, которое, тем не менее, можно запустить и испытать. В Angular имеется локальный сервер, поэтому собирать и запускать приложение можно прямо на вашем компьютере.

Перейдём в папку приложения (my-app).

cd my-app

Запустим сервер, воспользовавшись командой ng-serve с опцией --open:

ng serve --open

Шаг 4. Оформление бота в виде Angular-компонента


Интегрируем бота с Angular-приложением, оформив соответствующий код в виде компонента. При создании нового Angular-проекта с помощью Angular CLI уже был создан первый компонент. Это корневой компонент с именем app-root.

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

Откроем файл компонента в каком-нибудь текстовом редакторе. Вот код компонента:

@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']})export class AppComponent {title = 'My First Angular App!';}

Для того чтобы встроить код чат-бота в компонент, перейдём в раздел Settings панели управления Kommunicate. Там, в разделе Configuration, нужно щёлкнуть по ссылке Install.


Поиск кода, используемого для встраивания бота в Angular-приложение

Здесь, в разделе Website, имеется JavaScript-код, который нужно скопировать и добавить в приложение. А именно, в нашем случае речь идёт о включении кода в состав файла app.component.ts. Готовый код должен выглядеть так, как показано ниже:

@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.scss']})export class AppComponent {title = 'my first app';ngOnInit() {(function(d, m){var kommunicateSettings = {"appId":"<YOUR_APP_ID>","popupWidget":true,"automaticChatOpenOnNavigation":true};var s = document.createElement("script"); s.type = "text/javascript"; s.async = true;s.src = "https://widget.kommunicate.io/v2/kommunicate.app";var h = document.getElementsByTagName("head")[0]; h.appendChild(s);window.kommunicate = m; m._globals = kommunicateSettings;})(document, window.kommunicate || {});}}

Сервер, используемый в Angular, наблюдает за состоянием файлов, пересобирая приложение в том случае, если файлы меняются. А благодаря использованию при запуске сервера опции --open (или просто -o) в браузере будет открыта ссылка http://localhost:4200/, ведущая к домашней странице Angular-проекта.


Окно чата в Angular-приложении

Если вы увидели окно чата на странице приложения это значит, что теперь вы можете пообщаться с ботом.

Итоги


Как видите, интегрировать чат-бота Dialogflow в Angular-приложение совсем несложно. Надеемся, вам пригодится то, о чём вы сегодня узнали.

P.S. Для хостинга проектов, подобных описанному в этом материале, можно использовать наши виртуальные серверы.

Пользуетесь ли вы чат-ботами в своих веб-проектах?



Подробнее..

Перевод Чат-бот для электронной коммерции

04.04.2021 14:14:58 | Автор: admin
В наши дни чат-боты используются в самых разных сценариях взаимодействия с пользователями. Например, в службах поддержки клиентов различных компаний, о чём я уже писала. В этом материале я хочу рассказать о механизмах, которые используются в чат-ботах при поиске того, что нужно пользователю.



Например, посетитель сайта что-то ищет и пользуется для этого чат-ботом, работающим на сайте или в мобильном приложении. Бот разбирает сообщение и, основываясь на имеющихся в нём ключевых словах, отвечает пользователю, выдавая ссылку на страницу с результатами поиска, среди которых пользователь может найти то, что ему нужно.

Бот, о котором пойдёт речь в этом материале, создан с использованием Java и Apache OpenNLP. Здесь мы поговорим о том, как боты разбирают сообщения пользователей, удаляя из них всё ненужное.

Удаление из сообщений ненужных символов


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

Вот пример сообщения, которое пользователь отправил боту. В верхней части находится исходный текст, а в нижней он же, но очищенный от ненужных символов.


Исходное и обработанное сообщение

В Java для удаления ненужных символов можно воспользоваться следующим регулярным выражением:

"[^\\w.,;:'\"\\s]+"

Токенизация текста в OpenNLP


После очистки текста от ненужных символов его нужно токенизировать с использованием соответствующих инструментов OpenNLP. В результате исходное предложение будет разбито на мелкие фрагменты (токены). Этот процесс и называют токенизацией. В целом можно сказать, что исходный необработанный текст токенизируется с опорой на набор символов-разделителей (это, в основном, пробелы). Токенизация используется при решении, например, следующих задач:

  • Проверка правописания.
  • Выполнение поиска.
  • Идентификация частей речи.
  • Обнаружение предложений.
  • Классификация документов.

В следующем примере сначала выполняется обучение токенизатора с использованием классов TokenizerMe и TokenizerModel:

try (InputStream modelIn = new ByteArrayInputStream(Files.readAllBytes(tokeniserTrainingFile.get()))) {this.tokenizer = new TokenizerME(new TokenizerModel(modelIn));}

Класс TokenizerMe преобразует исходный текст в набор токенов. Он, принимая решение о разделении текста на токены, пользуется показателем энтропии.

В машинном обучении энтропия это мера неопределённости некоей системы (1 полная определённость, 0 полная неопределённость).

Затем выполняется токенизация текста:

private tokenizerMe;final String[] tokenizedMessage = this.tokenizerMe.tokenize(RobotUtil.getOnlyValidCharacters(inputMessage));

На следующем изображении показан результат токенизации сообщения.


Результат токенизации сообщения

После токенизации сообщения нужно определить тип токенов, понять, к каким частям речи они относятся, и убрать те из них, которые нам не нужны.

Выявление частей речи с использованием OpenNLP


Теперь нам нужно выяснить то, к какой части речи относится каждый из токенов. Узнать о том, что это: имя существительное, глагол, наречие, имя прилагательное. В OpenNLP для обозначения частей речи используются сокращения, приведённые в следующей таблице.

Сокращение Часть речи
NN Имя существительное в единственном числе или неисчисляемое существительное
DT Определяющее слово
VB Глагол в базовой форме
VBD Глагол в прошедшем времени
VBZ Глагол в третьем лице единственного числа настоящего времени
IN Предлог или подчинительный союз
NNP Имя собственное в единственном числе
TO to
JJ Имя прилагательное

Вот код, в котором для выявления частей речи в тексте используется класс POSTaggerME:

private POSTaggerME ptagger;try (InputStream modelIn = new ByteArrayInputStream(Files.readAllBytes(trainingFile.get()))) {this.ptagger = new POSTaggerME(new POSModel(modelIn));}

Класс POSTaggerME используется для определения частей речи в исходном тексте. Он, при обработке текста, использует показатель энтропии.

final String[] tags = this.ptagger.tag(tokenizedMessage);

После того, как выяснено то, к какой части речи относится каждый из токенов, мы убираем из текста всё ненужное.


Удаление ненужных токенов

Нас в данном случае интересует имя прилагательное (JJ) и имя существительное (NN).

Теперь в нашем распоряжении оказываются ключевые слова. Бот, воспользовавшись ими, может выдать ссылку, позволяющую пользователю найти то, что ему нужно.


Бот отвечает пользователю

Применяются ли в ваших проектах чат-боты?

Подробнее..

Из песочницы Urban Bot или как писать чат-ботов для Telegram, Slack, Facebook на React.js

27.07.2020 22:10:16 | Автор: admin

image


В этой статье я хочу познакомить с новой библиотекой Urban Bot, которая адаптирует React для написания чат-ботов. Ниже я расскажу, зачем эта библиотека появилась на свет, какие дает преимущества и как написать вашего первого чат-бота.


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

В отличии от большинства чат-бот библиотек, которые чаще всего просто оборачивают http запросы в функции с готовыми аргументами и предоставляют подписки вида bot.on('message', callback), иногда позволяя передавать контекст между вызовами, Urban Bot предлагает совершенно иной подход к разработке чат-ботов через декларативное программирование и компонентный подход. Живой пример, написанный на Urban Bot, вы можете попробовать в Telegram, cсылка на чат-бот, и посмотреть код на GitHub.


Как мы заметили выше, чат-боты это полноценные UI приложения. А какой язык в 2020 и какая библиотека наиболее подходит для разработки UI приложений? Правильно, JavaScript и React. Такая интеграция позволяет легко и непринужденно строить чат-боты любой сложности без единого знания об API мессенджеров. Далее я расскажу, как создавать простые компоненты и на их основе строить сложных чат-ботов, работать с навигацией, создавать диалоги любой вложенности, писать одно приложение и запускать в любых мессенджерах, и многое другое.


Отправка сообщений


Так выглядит самый простой пример на Urban Bot. Для отправки текстового сообщения нам нужно создать функцию и вернуть из него готовый компонент Text с текстом внутри, который мы хотим отправить. Когда компонент отрендериться, все пользователи чат-бота получат сообщение "Hello, world!".


import React from 'react';import { Text } from '@urban-bot/core';function App() {    return (        <Text>           Hello, world!        </Text>    );}

Изображение можно отправить так:


import React from 'react';import { Image } from '@urban-bot/core';function App() {    const imageByURL =  'https://some-link.com/image.jpg';    return <Image file={imageByURL} />;}

Urban Bot имеет готовый набор компонентов, для каждого вида сообщений, для файлов File, для кнопок ButtonGroup и много других, подробнее можно взглянуть здесь. В каждый из них можно передать определенный набор пропсов, например, имитировать будто бот печатает сообщение 1 секунду <Text simulateTyping={1000}>.


Получение сообщений


Мы рассмотрели как посылать сообщения, давайте разберемся как подписываться на сообщения от пользователей. За подписки в Urban Bot отвечают React Hooks.


Чтобы подписаться на текстовые сообщения, мы можем использовать хук useText.


import React from 'react';import { Text, useText } from '@urban-bot/core';function App() {    useText(({ text }) => {        console.log(`Пользователь отправил сообщение ${text}`);    });    return (        <Text>            Hello, world!        </Text>    );}

Urban Bot предоставляет готовы набор хуков для разных типов сообщений. Например, useImage, если пользователь отправил изображение, useFile и т.д. Полный список здесь. В каждый хук также приходит мета информация, кто отправил сообщение и т.д.


Эхо бот


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


В этом компоненте мы впервые добавим работу с переменными через React хук useState. Этот хук возвращает переменную и функцию, чтобы ее изменять. React.useState нужен, чтобы изменение переменной приводило к ререндеру и, соответсвенно, отправке нового сообщения. Мы определим начальное значение переменной text как "Привет" и передадим в компонент Text. Также мы подпишемся на сообщения от пользователей с помощью хука useText, и будем изменять text через функцию setText. После вызова setText React перерендерит компонент Echo с новым значением, и пользователь получит новое сообщение с тем что он сам отправил боту.


import React from 'react';import { Text, useText } from '@urban-bot/core';function Echo() {    const [text, setText] = React.useState('Привет!');    useText(({ text }) => {        setText(text);    });    return (        <Text>            {text}        </Text>    );}

Кнопки


Давайте также напишем пример с кнопками, сделаем простейший счетчик. Для этого нам понадобятся компоненты ButtonGroup и Button. Каждой кнопке мы определим свой обработчик, который будет менять count на +1 или -1 и будем передавать результат в ButtonGroup в проп title. Мы установим проп isNewMessageEveryRender как false, чтобы при последующих ререндерах отправлялось не новое сообщение с новыми кнопками, а просто изменялось начальное сообщение.


import React from 'react';import { ButtonGroup, Button } from '@urban-bot/core';function Counter() {    const [count, setCount] = React.useState(0);    const increment = () => setCount(count + 1);    const decrement = () => setCount(count - 1);    return (        <ButtonGroup title={count} isNewMessageEveryRender={false}>            <Button onClick={increment}>+1</Button>            <Button onClick={decrement}>-1</Button>        </ButtonGroup>    );}


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


Теперь, когда пользователь напишет "/echo" отрендериться компонент Echo, когда "/counter" управление перейдет в Counter. Роуты также могут принимать path как regexp.


import React from 'react';import { Router, Route } from '@urban-bot/core';import { Echo } from './Echo';import { Counter } from './Counter';function App() {    return (        <Router>            <Route path="/echo">                <Echo />            </Route>            <Route path="/counter">                <Counter />            </Route>        </Router>    );}

Визуальный пример, чтобы увидеть как будет работать код.


image


Если вы почувствовали концепцию, то уже поняли, что можно создавать десятки, сотни компонентов, комбинировать их вместе, либо разделять роутером, делиться компонентами между разными чат-ботами и строить действительно сложные SPA внутри мессенджеров.


Форматирование текста


Urban Bot позволяет стилизовать сообщения через привычные HTML теги. Писать жирным <b>, курсивом <i>, зачеркнутым <s>, переносить строки <br /> и так далее, полный список здесь.


Пример
const someCode = `function sum2() {    return 2 + 2;}if (sum2() !== 4) {    console.log('WTF');}`;<Text>    Usual text    <br />    <b>Bold text</b>    <br />    <i>Italic text</i>    <br />    <u>Underscore text</u>    <br />    <s>Strikethrough text</s>    <br />    <q>quote</q>    <br />    <b>        Bold and <s>Strikethrough text</s>    </b>    <br />    <code >Code 2 + 2</code >    <br />    <pre>{someCode}</pre>    <br />    <a href="http://personeltest.ru/aways/github.com/urban-bot/urban-bot">External link</a></Text>


Диалоги


Чат-боты могут вести диалоги с пользователем, что-то спрашивать, реагировать на сообщения в зависимости от ответа пользователя. В Urban Bot встроен компонент Dialog, который позволяет легко создавать диалоги любой сложности.


Пример плоского диалога. Бот задаст первый вопрос, после ответа задаст второй, потом третий, потом запустит callback onFinish с готовыми ответами. На каждом шаге можно обрабатывать ответ пользователя через callback onNext.


import React from 'react';import { Dialog, DialogStep, Text } from '@urban-bot/core';function FlatDialogExample() {    return (        <Dialog onFinish={(answers) => console.log(answers)}>            <DialogStep                content={<Text>Привет, как тебя зовут?</Text>}                 id="name"                onNext={(name) => console.log(name)}            >                <DialogStep                    content={<Text>Cколько тебе лет?</Text>}                    id="age"                >                    <DialogStep                         content={<Text>Из какого ты города?</Text>}                        id="city"                    />                </DialogStep>            </DialogStep>        </Dialog>    );}

Можно получать на следующем шаге прошлый ответ через паттерн render-props .


function FlatDialogExample() {    return (        <Dialog>            <DialogStep content={<Text>Привет, как тебя зовут?</Text>}>                {(name) => (                    <DialogStep                         content={<Text>{`${name}, cколько тебе лет?`}</Text>}                    />                )}            </DialogStep>        </Dialog>    );}

Можно добавить валидацию на каждый шаг.


function FlatDialogExample() {    return (        <Dialog onFinish={(answers) => console.log(answers)}>            <DialogStep                content={<Text>Привет, как тебя зовут?</Text>}                id="name"                validation={{                     isValid: (answer) => answer !== 'Самуэль',                     errorText: 'Самуэль заблокирован.'                 }}            >                // ...            </DialogStep>        </Dialog>    );}

Также возможно построение более сложных диалогов, когда бот отвечает определенным образом в зависимости от ответа пользователя. Для предопределенных ответов можно использовать кнопки.


import React from 'react';import { Dialog, DialogStep, Text, ButtonGroup, Button } from '@urban-bot/core';function TreeDialogExample() {    return (        <Dialog>            <DialogStep                content={                    <ButtonGroup title="Привет, что вы хотите купить?">                        <Button id="hat">Футболка</Button>                        <Button id="glasses">Очки</Button>                    </ButtonGroup>                }            >                <DialogStep                    match="hat"                    content={                        <ButtonGroup title="Футболка какого размера?">                            <Button id="m">S</Button>                            <Button id="s">M</Button>                            <Button id="l">L</Button>                        </ButtonGroup>                    }                />                <DialogStep                    match="glasses"                    content={                        <ButtonGroup title="Очки какого цвета?">                            <Button id="black">Черный</Button>                            <Button id="white">Белый</Button>                        </ButtonGroup>                    }                />            </DialogStep>        </Dialog>    );}

Состояние


Что вы можете использовать для управления состоянием? Все то же что и в любом React приложении. Можете использовать React useState и передавать состояние ниже по дереву компонентов через пропсы или React Context. Можно использовать библиотеки для управления состоянием: Redux (пример), MobX (пример), Apollo и любые другие, которые обычно используют вместе с React, вы можете даже переиспользовать готовые части из готовых React Web или React Native приложений, так как Urban Bot использует тот же чистый React, который работает в миллионах приложений.


Сессия


Urban Bot запускается на сервере, соответсвенно, все логика от всех чатов и пользователей обслуживается на одном железе, что кардинально отличается от стандартных React приложений, которые запускаются на стороне каждого клиента. Urban Bot решает эту проблему на своей стороне и отображает приложение уникальным для каждого пользователя, так что, если вы уже писали на React веб или мобильные приложения, вы не почувствуете разницу.


В любом примере на Urban Bot уже вшита работа с сессией. Например, в примере ниже у каждого пользователя, кто зайдет в персональный чат-бот, будет его собственный счетчик.


function Counter() {    const [count, setCount] = React.useState(0);    const increment = () => setCount(count + 1);    const decrement = () => setCount(count - 1);    return (        <ButtonGroup title={count} isNewMessageEveryRender={false}>            <Button onClick={increment}>+1</Button>            <Button onClick={decrement}>-1</Button>        </ButtonGroup>    );}

Если нам понадобится глобальный счетчик, то к этому примеру можно сделать хук, который будет содержать уже общую информацию.


function Counter() {    const [count, setCount] = useGlobalCount();   // ...}

Также, в любом месте приложения мы можем получить данные о конкретном чате, какой пользователь написал, с каким никнеймом и т.д. Если чат-бот персональный, то chat и from будут совпадать.


import React from 'react';import { Text, useText, useBotContext } from '@urban-bot/core';function UserId() {    const { chat } = useBotContext();    useText(({ from }) => console.log(`Пришло сообщение от ${from.username}`));   return <Text>Чат id {chat.id}</Text>;}

Типизация


Urban Bot написан на TypeScript, соответсвенно проект полностью типизирован, и если вы пишете на TypeScript, вам будет очень удобно.


Запуск в мессенджерах


Большой плюс Urban Bot, что он не привязан ни к одному мессенджеру. Есть основной пакет @urban-bot/core, который позволяет создавать абстрактных чат-ботов, а уже их подключать к определенным мессенджерам. В данный момент есть поддержка Telegram, Slack, Facebook. В дальнейшем, мы планируем добавлять любые мессенджеры, где есть чат-боты и открытое API. Если вам интересно, и вы хотите писать Urban Bot приложения для других мессенджеров, скажем Viber, Discord или у вас есть свой мессенджер то пишите к нам в группу https://t.me/urbanbotjs, одной просьбы будет достаточно, чтобы появилось большая мотивация реализовать ваш функционал.


Теперь перейдем к практике. Выше мы создавали компоненты и приложение, но не запускали его. Для запуска нам нужно выбрать мессенджер или мессенджеры, в которых мы хотим запустить наше приложение.


Скажем, у нас есть готовое приложение App и мы хотим его запустить его в Telegram. Для этого нам понадобится класс UrbanBotTelegram из пакет @urban-bot/telegram. Функция render из @urban-bot/core подобная ReactDOM.render и компонент Root. Мы создаем экземпляр UrbanBotTelegram и передаем туда бот токен из Telegram, также можно передать isPolling, чтобы не настраивать вебхук, и бот работал локально. Готовый экземпляр мы передаем в компонент Root, и оборачиваем наше готовое приложение и, соответсвенно, передаем все в функцию render, которая запустит все процессы.


Более подробная инструкция с видео как разрабатывать локально и деплоить Telegram бота можно прочитать в инструкции.


import React from 'react';import { render, Root } from '@urban-bot/core';import { UrbanBotTelegram } from '@urban-bot/telegram';import { App } from './App';const urbanBotTelegram = new UrbanBotTelegram({    token: 'telegramToken',    isPolling: true,});render(    <Root bot={urbanBotTelegram}>        <App />    </Root>);

Если нам нужно запустить два и более мессенджера, просто используем пакеты других мессенджеров, передаем туда нужные данные и делаем по аналогии с Telegram.


// ...import { UrbanBotSlack } from '@urban-bot/slack';// ...render(    <Root bot={urbanBotTelegram}>        <App />    </Root>);const urbanBotSlack = new UrbanBotSlack({    signingSecret: 'slackSigningSecret',    token: 'slackToken',});render(    <Root bot={urbanBotSlack}>        <App />    </Root>);

Прямой вызов API


С помощью Urban Bot вы можете создавать чат-ботов просто описывая их через компоненты. А что если вам будет нужно вручную вызвать API? Каждый экземпляр UrbanBot* содержит в себе API клиент для активного мессенджера. Рассмотрим пример для Telegram.


Мы можем получить bot с помощью хука useBotContext. bot содержит client и type c типом мессенджера. client будет представлять собой экземпляр библиотеки node-telegram-bot-api . В любом месте приложения можно получить client и вызвать любой метод на ваше усмотрение, скажем блокировать пользователя, если он написал нецензурное сообщение.


import React from 'react';import { useText, useBotContext } from '@urban-bot/core';function SomeComponent() {    const { bot } = useBotContext();    useText(({ text, chat, from }) => {        if (text.includes('бл***')) {            bot.client.kickChatMember(chat.id, from.id);        }    });    // ...}

В каждом мессенджере уникальный API. Если вы разрабатываете несколько мессенджеров одновременно, можно отделять функционал сравнивая bot.type.


import { useBotContext } from '@urban-bot/core';import { UrbanBotTelegram } from '@urban-bot/telegram';import { UrbanBotSlack } from '@urban-bot/slack';function SomeComponent() {    const { bot } = useBotContext();    if (bot.type === UrbanBotTelegram.type) {        // telegram api        bot.client.kickChatMember(/* ... */);    }    if (bot.type === UrbanBotSlack.type) {        // slack api        bot.client.conversations.kick(/* ... */);    }    // ...}

Как попробовать?


У Urban Bot есть стартер, который позволит вам начать разрабатывать чат-ботов за минуту, сделан по аналогии с create-rect-app. Все что вам нужно, чтобы попробовать Urban Bot это выполнить команду в терминале для


TypeScript


npx create-urban-bot my-app

JavaScript


npx create-urban-bot my-app --template js

Команда склонирует шаблон приложения с нужными зависимостями и скриптами на ваш компьютер, и вам останется только открыть проект, передать ваши токены в .env файл и расскоментировать мессенджеры, которые вы хотите разрабатывать. Видео инструкция.


Итого


Несмотря на то что Urban Bot запустился только недавно, на мой взгляд это библиотека с огромным потенциалом. Только представьте, если у вас есть базовые знания React, вы можете написать чат-бот любой сложности на все возможные платформы, создавать и использовать библиотеки с готовым набором компонентов на манер ui-kit, переиспользовать код между вашими другими UI приложеними на React, будь то web или mobile.


Если вы уже разрабатывали чат-ботов, попробуйте Urban Bot, вы почувствуете как библиотека делает за вас кучу работы. Если никогда не разрабатывали, но имеете представление о React, то напишете вашего первого чат-бота за 5 минут. Если вам понравилась идея и хотите, чтобы проект развивался дальше, вступайте в нашу группу в Telegram, ставьте звезду на гитхабе, будем рады любому фидбеку.


Полезные ссылки


Сайт
Github
Группа в Telegram
Наглядный чат-бот в Telegram, с открытым кодом.
Как создать Todo List чат-бот в Telegram с помощью React.js

Подробнее..

Как разработчику голосовых навыков получить выход на аудиторию Сбера (короткий путь)

13.03.2021 14:14:35 | Автор: admin

Just AI стал первым аккредитованным технологическим партнером SberDevices по созданию голосовых навыков для виртуальных ассистентов Салют. Теперь бизнес может заказывать в Just AI разработку голосовых смартапов, которые будут доступны в ТВ-приставке SberPortal, умном экране SberBox и в мобильных приложениях Сбера в том числе навыки со встроенными платежами. А в конструкторе чат-ботов Aimylogic и enterprise-платформе JAICP появилась удобная интеграция с новым каналом разработчики могут самостоятельно создавать смартапы и даже переносить в ассистентов Салют уже готовые навыки (например, разработанные для Алисы). Рассказываем, как это делать и зачем.

Интеграция Aimylogic и JAICP с экосистемой Салют позволяет не только разрабатывать любые новые голосовые навыки под устройства и приложения Сбера (это само по себе интересно, там много любопытных фич), но и переносить в ассистентов Салют ваши навыки, которые уже работают в Алисе, Марусе, Google Assistant. Что это дает?

Выход на аудиторию экосистемы Сбера

Голосовых ассистентов в России всё больше, они становятся всё популярнее. Это дает возможность разработчикам привлекать новых пользователей и увеличивать трафик в навыки. Ассистенты семейства Салют Афина, Джой и Сбер живут в умной ТВ-приставке SberBox, умном экране SberPortal и даже в мобильных приложениях Сбера. Ежемесячная аудитория виртуальных ассистентов Салют по итогам первого квартала после запуска 2,5 млн, а потенциальная аудитория всей экосистемы Сбера 100+ млн.

Возможность выиграть 2,5 млн рублей

Каждый квартал команда SmartMarket определяет лучшие навыки (смартапы) для виртуальных ассистентов Салют. Разработчики Aimylogic тоже могут побороться за призовой фонд! Например, Сергей Кулаков, который рассказал на Хабре о том, как завоевал несколько Премий Алисы с помощью разработки на Aimylogic, недавно завоевал главный приз в 2,5 миллиона в номинации Ежедневные активные пользователи за навык Угадай песню.

Попробовать новые фичи

Удобный прием платежей в голосовых навыках. Почти у каждого пользователя ассистентов Салют есть платежная карта. Подключить прием оплаты можно на любом шаге сценария прямо в навыке виртуального ассистента (важно: чтобы пользоваться благами монетизации, у разработчика должно быть юр.лицо).

Проверить, как навыки будут работать на экранах и не только. Для смартапов, подключенных к платформе Сбера, доступен эмулятор. Он упрощает их тестирование на основных поверхностях платформы умных устройствах SberPortal и SberBox, а также на мобильных устройствах в приложениях СберБанк Онлайн и Сбер Салют.

В Aimylogic вывод готовых голосовых навыков в ассистентов Салют возможен с текстом, картинками и аудио (а там и видео не за горами): читайте туториал Как подключить канал Салют

Екатерина Лебедева, руководитель партнерской программы Just AI:

Выход Сбера на рынок голосовых ассистентов и умных устройств поднимает планку требований к разработке контента ассистенты Салют доступны на разных поверхностях, в том числе на умных экранах, навыки для которых отвечают тренду мультимодальности, то есть сочетают в себе голосовой, визуальный и тач-интерфейсы. Это позволит бизнесу воплощать самые смелые и интересные с точки зрения UX идеи, и мы рады предложить свою экспертизу и помощь в реализации.

Ну и на заметку. Just AI помогает бизнесу создавать контент для голосовых ассистентов и умных устройств с 2018 года. Компания внимательно следит за трендами в области голосового UX и бизнес-моделями в voice-индустрии и обладает серьезной экспертизой в реализации таких проектов. В области голосовых ассистентов и создания контента для них Just AI сотрудничает с Google, Яндекс, Mail.Ru Group, SberDevices, а также с производителями умных устройств Roobo, NotAnotherOne, Cinemood, Mishka AI, Elari и другими компаниями.

Подробнее..

Реинкарнация в чат-бота Microsoft запатентовал технологию создания цифрового клона человека

15.01.2021 22:23:38 | Автор: admin
Источник

Человека смогут формально превратить в чат-бота. Microsoft получила патент на эту технологию. Чат-бот будет создан с учетом имеющейся в базе личных данных человека. Если в ближайшем будущем предоставить чат-ботам достаточно данных, они смогут клонировать/имитировать любого. Если использовать эту технологию не в благих целях, то последствия могут быть непредсказуемыми. Разбираемся, что за патент зарегистрировала Microsoft. И самое интересное: кого он будет клонировать живых или умерших людей?

Патент, который корпорация зарегистрировала в конце прошлого года, называется Создание разговорного чат-бота конкретного человека (Creating a Conversational Chatbot of a Specific Person). С одной стороны, в аннотации к проекту все выглядит безобидно. Например, там сказано, что в некоторых случаях программа будет получать доступ к личным данным человека: фотографиям, записям голоса, сообщениям в социальных сетях, к письмам на электронной почте. Если обобщить эти данные, то может показаться, что цель Microsoft улучшить пользовательский опыт, обучить ИИ для таких инструментов, как Alexa или Siri.

Но есть и другая сторона. Подобная технология применима к имитации стиля общения умершего человека. Такие чат-боты смогут клонировать цифровую личность: стиль общения и манеру ведения переписки. Более того, аналогично технологию можно использовать для создания имитации любого живого человека. А это как минимум небезопасно и может вызвать волну киберпреступлений.

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

Как выглядит идеальный клонированный чат-бот


В идеале хороший чат-бот проходит эмпирический тест Тьюринга на способность к осуществлению мыслительной деятельности. Это стандартный тест из 50-х годов прошлого века. Его главная задача: ввести человека в заблуждение, запутать, сделать так, чтобы было неясно, с кем в данный момент он ведет диалог с машиной или компьютером.

За последние годы в этом вопросе ИИ ушел достаточно далеко, чат-боты становятся все популярнее, а общение с ними все больше напоминает живое человеческое. Но часто это синтез самых разных данных о людях, которые очеловечивают бездушного чат-бота из интернет-магазина. То есть чат-бот не является полной копией конкретной личности, это обобщенный, можно сказать, нарицательный персонаж.

Что планирует клонировать Microsoft



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

  • Изображения. Вспомните, как у вас их много в соцсетях, селфи, в полный рост, разные ракурсы. Их даже можно превратить в 3D-модель.
  • Голос. С переходом на аудиосообщения в мессенджерах получить эти данные все проще.
  • Записи в социальных сетях. На что вы реагируете, какими новостями делитесь, кого упоминаете, где находитесь и в каком настроении.
  • Электронные письма. Здесь вообще целый клад всего: присущая вам манера письма, слова-паразиты, которые вы любите применять.
  • Сообщения в мессенджерах. Тут комментарии излишни. Вы уже представили масштаб.


На основе этих данных будет создан индекс человека с набором определенных характеристик, привязанный к конкретному боту. Есть версия, что алгоритм будет использовать нейросети, но напрямую об этом не говорится.

Последовательность клонирования



Информация о конкретном человеке будет поступать из всевозможных личных девайсов: смартфон, планшет, ноутбук, компьютер и пр. Данные будут переданы на сервер. Для хранения данных будут использовать удаленный веб-портал.

Обилие данных позволяет по-разному ими распоряжаться. Помимо достаточно обыденной текстовой версии личности, может появится его голосовая версия, а также 2D- и 3D-модель, что куда изощреннее. Для голосового клона будут применять персонализированный синтезатор голоса.

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

Dadbot: реинкарнация в действии


Фото: Альма Хазер

Microsoft не единственные, кто смотрит в сторону цифрового бессмертия. Журналист Джеймс Влахос несколько месяцев до смерти отца записывал историю его жизни. Его отцу поставили страшный диагноз рак легких IV степени. Журналист записал десятки интервью с отцом. Во время этих разговоров тот вспоминал подробности своей жизни: как исследовал пещеры, будучи ребенком, как встретил и полюбил свою будущую жену, как стал спортивным диктором, певцом, успешным юристом.

Во время разговоров отец травил анекдоты, давно знакомые Джеймсу, и вспоминал редкие подробности своей биографии. Всего за это время журналист записал 91 970 слов, которые заняли 203 страницы текста с одинарным интервалом 12 кеглем Palatino. Сначала он сброшюровал эти страницы, оставил фолиант на полке. Но задумал воплотить их в нечто большее, чем просто текстовое наследие жизни близкого родственника.

В его голове уже был план действий. Дело в том, что с ИИ Джеймс был знаком с юношества. В 1982 году он увидел первого чат-бота Элизу. Нашел он ее за компьютером в музее науки рядом с домом. Ученый из MIT создал чат-бота в середине 1960-х годов. Элиза потрясла мальчика, но потом он отошел от программирования и ушел в журналистику.

В 2015 году судьба снова свела его с любопытным ИИ. Он готовил материал о новом цифровом воплощении разговорной куклы Hello Barbie. Над аудиовоплощением куклы работали команды из Mattel и компании PullString, которая создала бота Call of Duty и специализируется на разработке ПО. От основателя PullString Джеймс узнал об их новом ПО, способном генерировать чат-ботов.

Джеймс решил создать настоящего Dad-bot бота, имитирующего его отца. Он рассказал о своей идеи отцу еще при его жизни и получил одобрение.

В итоге Джеймсу Влахосу действительно удалось создать чат-бота умершего отца. Вся его семья общается с ним через сообщения и может переходить на голос благодаря голосовому помощнику Alexa. Хотя им и немного странно слушать ответы отца голосом Alexa.

Кто еще работает над вечной жизнью


Выходцы из MIT запустили несколько лет назад стартап Eterni.me, который разрабатывает цифровые аватары умерших людей.

Eterni собирает все, что создано человеком при жизни, все доступные данные. Затем эти сведения обрабатываются сложным алгоритмом ИИ. После генерируется цифровой аватар. Он подражает личности конкретного человека, может общаться с родственниками и друзьями. Разработчики сравнили это с чатом Skype в прошлое.

Подробнее..

Биометрия, персонализация голоса, NLU и речевая аналитика о чем расскажут на конференции Conversations

05.06.2021 12:14:00 | Автор: admin

21 и 22 июня в Питере (и онлайн) пройдет конференция по разговорному ИИ Conversations. Поток для разработчиков будет посвящен conversational lego технологиям вокруг разговорного AI, из которых состоят чат-боты, голосовые ассистенты и диалоговые решения. Персонализация голоса от Yandex Speechkit, стратегия управления диалогом от DeepPavlov, платформа речевой аналитики Тинькофф Банка, голосовая биометрия от SberDevices, анализ и разметка интентов при создании голосовых ботов от X5 Retail Group и другие тулзы рассказываем, с чем еще можно познакомиться на Conversations V.

Доклад про лайфхаки разговорного UI на Conversations'19: как сделать бота и не разозлить пользователяДоклад про лайфхаки разговорного UI на Conversations'19: как сделать бота и не разозлить пользователя

Конференция будет проходить два дня Business Day (21 июня) и Technology Day (22 июня). Онлайн-билет дает доступ к двухдневному стриму!

Technology Day откроет секция Conversational Lego, посвященная технологиям, которые лежат в основе различных разговорных решений от чат-ботов с NLU до прокачанных голосовых ассистентов.

Кто выступит и о чем расскажут?

  • Поиск смысла в океане данных: анализ и разметка интентов при создании голосовых ботов. Антон Кленицкий, X5 Retail Group

  • Голос бренда. Зачем нужны технологии персонализации голоса и как они устроены. Никита Ткачев, Yandex.Cloud

  • Биометрический бум: как технологии помогают нам в повседневной жизни. Станислав Милых, SberDevices

  • Стратегия управления диалогом: как сделать чат-бота более умным и объемным с помощью дискурс-менеджмента. Данила Корнев, CPO, DeepPavlov

  • Особенности алгоритмов распознавания речи и их влияние на опыт пользователей. Николай Шмырев, CEO, АЦ Технологии

  • Как спроектировать диалоговый интерфейс для мультилингвальных ботов. Brielle Nickoloff, Cofounder & Head of Product, Botmock.

Больше имен и тем на сайте Conversations!

Еще разработчиков в Technology Day ждет секция по голосовым ассистентам, где Яндекс, SberDevices, Mail.Ru Group расскажут о новых фичах Алисы, Маруси и семейства Салют. Например, Алексей Фивинцев из Mail.ru покажет, какой профит можно извлечь из разработки голосовых навыков для Маруси, используя интеграцию Маруси с ВКонтакте.

А на секции Partners in AI: как заработать на разговорных решениях расскажут, как разработчику стать предпринимателем, как придумать и монетизировать сценарии для различных бизнес-задач и индустрий.

В общем, будет много интересного! Один билет в стрим два дня экспертизы, доступ к приложению для нетворкинга и всем материалам конференции. За новостями можно следить в официальномтелеграм-канале Conversations.

Подробнее..

Как сделать интеллектуального чат-бота для проведения опросовинтервью

24.03.2021 10:15:26 | Автор: admin

В современном мире всё большую популярность приобретает методика под названием customer development для тестирования идей и гипотез о будущем продукте. Методику придумал "крёстный отец Кремниевой долины" Стив Бланк.
Одним из числа сильных инструментов в "разработке клиентов" является интервью, когда вы можете побеседовать с респондентом. Однако им не всегда можно воспользоваться ввиду разных причин, которые условно можно свести к объёму бюджета и имеющемуся времени. Но во многих ситуациях можно воспользоваться опросом. Причём опросом, который можно автоматизировать за счёт применения чат-бота и нейронной сети для определения смысла слов, которые написал респондент в ответ на заданный вопрос.

В этой статье сконцентрируюсь на алгоритме работы чат-бот для проведения опроса. Как сделать чат-бота для VK писал в отдельной статье на Хабре. Использовал: Python, MySQL, API VK и готовую нейросеть от RusVectores.

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

Дисклеймер. Не претендую на академическую точность изложения, говорю лишь о том, что удалось понять на текущий момент по итогу изучения различных материалов. Не рекламирую какие-либо технологии и сервисыодержание

Нейросеть для понимания смысла текста, вводимого пользователем

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

В данном решении была использована готовая нейросеть от сервиса RusVectores, обученная на корпусе НКРЯ с использованием алгоритма word2vec CBOW с длиной вектора 300.

НКРЯ это совокупность русскоязычных текстов, Национальный Корпус Русского Языкав полном объёме. Содержит 270 миллионов слов, объём словаря 189 193 слова.

Word2vec CBOW алгоритм, благодаря которому слово на естественном языке представляется в виде числового вектора. Т.е. определяет координату слова в смысловом пространстве. CBOW это аббревиатура Continuous Bag of Words. Она обозначает алгоритм, который есть в word2vec. Данный алгоритм называют моделью мешка слов, он предсказывает слово по контексту. Ещё один алгоритм в word2vec - Skip-gram предсказывает контекст по слову.

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

Более подробно о word2vec можно почитать в статье "Немного про word2vec: полезная теория".

О векторном представлении слов (эмбеддинге) хорошо и с примерами описано в статье "Что такое эмбеддинги и как они помогают машинам понимать тексты".

Представление слова в виде вектора позволяет оценивать его смысловую близость с другими словами, так же представленными в виде вектора. Для оценки близости слов можно вычислить косинус угла между их векторами. Чем ближе к 1 будет косинус угла между векторами слов, тем они ближе по смыслу. Единице будет соответствовать косинус угла 0 градусов, т.е. когда векторы слов совпадают.

Чтобы создать такой набор векторов почти для 200 000 слов и постоянно иметь к ним доступ, нужно располагать вычислительными мощностями. Т.к. у меня таких мощностей нет, я воспользовался доступным онлайн сервисом RusVectores.

База данных для хранения вопросов

Для проведения опроса я подготовил табличку с вопросами и разместил её в базе данных MySQL. Как видно из рисунка ниже, вопросы имеют ответвления, похожие на древовидную структуру или структуру графа.

Структура вопросовСтруктура вопросов

В базе данных таблица с вопросами выглядит так (фрагмент):

Фрагмент таблицы в БД с вопросамиФрагмент таблицы в БД с вопросами

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

Описание алгоритма работы чат-бота

Начало опроса

По договорённости с пользователем он заходит на страницу сообщества в ВК и инициирует диалог, нажав кнопку Сообщение.

Бот здоровается и спрашивает разрешения начать опрос. Текст приветствия задавал в разделе "Управление" "Сообщения" на странице сообщества в ВК.

Если пользователь ответил что-то близкое по смыслу со словом да, то бот начинает задавать вопросы. Как определить, что пользователь одобрил старт интервью? Для этого как раз нужна нейросеть, чтобы определить смысловую близость введённых пользователем слов к словам: да, можем, можно, начинай, ок. Для этого воспользуемся API сервиса RusVectores.

Далее приведён код функции, которая определяет начинать интервью или нет. Если интервью уже было начато, то функция определяет какой вопрос задать следующим.

фрагменты кода из bot_methods.py
модуля, в котором реализованы все методы бота

def _identify_phrase(user_id, user_message):    """    identify start question or greeting    return number of phrase in database    """    # identification variable, on start set "I don't know"    identi = 'I dont know'    # find in database current position in conversation between user and chatbot    identi = get_current_position_in_conversation(user_id)    if identi != 'err':        # if the conversation has just begun        if identi == '0':            # define greetings            similarity = _get_similarity(user_message, u'привет здравствуйте добрый')            if similarity > 0.5:                identi = "greetings"            else:                # define start interview or not                identi = _start_or_not(user_message)        # if the conversation continues        elif identi == '1':            # define start interview or not            identi = _start_or_not(user_message)        else:            pass                return identi

Вначале определим возможность начать опрос исходя из ответа пользователя с помощью метода _start_or_not():

def _start_or_not(user_message):    """    define <identi>: start or don't start interview    """    if user_message != 'старт' or user_message != 'Старт':        _identi = 'I dont know'        # define if user agree to start interview        start = _get_similarity(user_message, u'да можем можно начинай ок')        # define if user don't agree to start interview        later = _get_similarity(user_message, u'нет позже потом завтра')        if start > later and start > 0.15:            _identi = 'start'        elif later > start and later > 0.15:            _identi = 'later'    else:        _identi = "start"    return _identi

Если пользователь решил сначала поприветствовать бота, то нужно понять это и поприветствовать в ответ. Для этого проверим на смысловую близость сообщения от пользователя со словами приветствия с помощью метода _get_similarity(). Данный метод будет использоваться и далее для определения смысловой близости сообщений пользователя.

def _get_similarity(text1, text2):    """    Function return similarity between text1 and text2    text1 - user message    text2 - key words    """    text1.strip()  # delete empty space on start and end of string    text2.strip()    text1_words = text1.split(' ')    text2_words = text2.split(' ')    similarity = 0.0 # init variable    try:        for word1 in text1_words:            if word1 != '':                for word2 in text2_words:                    if word2 != '':                        # prepare url for request to API rusvectores.org                        # url example https://rusvectores.org/ruscorpora_upos_cbow_300_20_2019/дело__папка/api/similarity/                        url = '/'.join(['https://rusvectores.org/ruscorpora_upos_cbow_300_20_2019',                                         word1 + '__' + word2, 'api', 'similarity/'])                        # GET request to API rusvectores.org                        r = requests.get(url, stream=True)                        # sum similarity of couple of words                        similarity = similarity + float(r.text.split('\t')[0])    except Exception as e:        log_exception = str(e)    # average similarity    similarity = similarity/len(text2_words)    # return similarity between text1 and text2    return similarity

Переменная similarity содержит числовое обозначение смысловой близость фраз text1 и text2. Чем ближе similarity к 1, тем ближе фразы по смыслу.

Метод _identify_phrase() используется для обработки всех фраз, которые пользователь пишет в чат. Поэтому необходимо заложить в него логику проверки как начального этапа - приветствие и старт интервью, так и последующее движение по вопросам. Для этого необходимо определять на каком вопросе и на какой развилке находится диалог. Текущую позицию в беседе определяем с помощью метода get_current_position_in_conversation()

фрагмент кода из mysqldb_methods.py
модуля, в котором реализованы все методы для работы с MySQL базой данных

def get_current_position_in_conversation(user_id):    """    find in database current position in conversation between user and chatbot    using in bot_methods.py    """    try:        conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD,                                db=DATABASE, charset='utf8', init_command='SET NAMES UTF8')        cursor = conn.cursor()        query = "SELECT `question_num` FROM `conversations` WHERE `user_id`=%(user_id)s LIMIT 1"        cursor.execute(query, {'user_id': user_id})        result = cursor.fetchone()        if result is None:            identi = '0'        else:            identi = result[0]        conn.close()    except Exception as e:        identi = 'err'        return identi

Таким образом мы обрабатываем три сценария взаимодействия с чат-ботом:
- старт опроса (понимаем согласен пользователь начать опрос или нет с помощью функции _start_or_not()),
- обмен приветствиями, если пользователь поздоровался (понимаем по смысловой близости к словам приветствия с помощью функции _get_similarity());
- движение по структуре вопросов с помощью функции get_current_position_in_conversation() для определения текущего положения в структуре вопросов.

Давайте рассмотрим движение по структуре вопросов более подробно.

Стоп-слова

Одним из важных моментов является удаление "стоп-слов", т.е. слов, которые можно с лёгкостью удалить из предложения и при этом его смысл не потеряется. Вот набор стоп-слов, которые я использовал в данном проекте:

stop_words = [u'а',u'большой',u'бы',u'быть',u'в',u'весь',u'вот',u'всей',u'вы',u'говорить',u'год',u'для',u'до',u'еще',u'если',u'же',u'знать',u'и',u'из',u'или',u'к',u'как',u'который',u'мочь',u'мы',u'мне',u'на',u'наш',u'него',u'нее',u'них',u'но',u'о',u'один',u'она',u'они',u'оно',u'оный',u'от',u'ото',u'по',u'с',u'свой',u'себя',u'сказать',u'та',u'такой',u'такое',u'только',u'тот',u'ты',u'то',u'у',u'что',u'это',u'этот',u'я']stop_characters = [u'.',u',',u' - ',u'- ',u' -',u':',u';',u'?',u'',u'!',u'_',u'(',u')',u'=',u'+',u"#",u'$',u'@',u'%',u'*',u'   ',u'<',u'>','1','2','3','4','5','6','7','8','9','0']

С помощью метода _clear_text() очищаю предложение от стоп-слов:

Движение по структуре вопросов

Для определения в каком направлении опроса двигаться исходя из ответов респондента воспользуемся функцией _define_conversation_way():

def _define_conversation_way(user_message, identi):    """    define in which way we are goin to?    """    # all questions, unless  3 has two ways: 'yes' (positive) or 'no' (negative)    if identi != '3' and identi != '6':        yes = _get_similarity(user_message, u'да заказывал просить')        no = _get_similarity(user_message, u'нет никогда')    elif identi == '6':        # the question number 6 has different ways: 'delivery' or 'self-delivery'        yes = _get_similarity(user_message, u'заказываю доставку')        no = _get_similarity(user_message, u'еду сам ищу аналог')    elif identi == '3':        # the question number 3 has different ways: 'from store' or 'delivery'        yes = _get_similarity(user_message, u'магазин сам')        no = _get_similarity(user_message, u'доставка почта все перечисленное курьер дом')    if yes > no and yes > 0.15:        _way = 'yes'    elif no > yes and no > 0.15:        _way = 'no'    else:        _way = 'I dont know'    return _way

Для удобства использования я сгруппировал всю логику по определению того что бот должен ответить в функцию _get_bot_answer(). Для удобства восприятия приведу ниже не только данный метод, а модуль с методами бота в целом:

bot_methods.py
полный код модуля, в котором реализованы все методы бота

# -*- coding: utf-8 -*-"""Bot methods.Realizes all what bot can do."3. Использование API сервиса RusVectores"https://github.com/akutuzov/webvectors/blob/master/preprocessing/rusvectores_tutorial.ipynb"""import re  # for work with regular expressionsimport requests  # for using HTTP requestsfrom bot_config import stop_wordsfrom bot_config import stop_charactersfrom mysqldb_methods import get_current_position_in_conversationfrom mysqldb_methods import get_question_from_DBfrom mysqldb_methods import write_current_question_number_for_userdef get_bot_answer(user_id, user_message):    """    using in views.py    make answer to user    """    answer = ''    # delete stop-words and punctuation characters in sentence    user_message = _clear_text(user_message)    # identify what to do: start or continue conversation    identi = _identify_phrase(user_id, user_message)    if identi == 'greetings':        answer = get_question_from_DB('1')        write_current_question_number_for_user(user_id, '1')    elif identi == 'start':        answer = get_question_from_DB('2')        write_current_question_number_for_user(user_id, '2')    elif identi == 'later':        answer = "Когда у вас будет возможность пройти интервью напишите мне 'старт'."    elif identi == 'I dont know':        answer = "Я не совсем вас понимаю...\nУточните, пожалуйста."    elif identi == 'end':        answer = "Спасибо за ваше участие в интервью!"    else:        # if top-level question: 1, 2 or 3 etc.        if len(identi) == 1:            # define in which way we are goin to?            way = _define_conversation_way(user_message, identi)            if way == 'yes' or way == 'no':                if way == 'yes':                    # going to positive way                    question_num = '.'.join([identi,'1','1'])                if way == 'no':                    # going to negative way                    question_num = '.'.join([identi,'2','1'])                answer = get_question_from_DB(question_num)                if answer != 'None':                    write_current_question_number_for_user(user_id, question_num)                else:                    question_num = str(int(identi) + 1)                    answer = get_question_from_DB(question_num)                    write_current_question_number_for_user(user_id, question_num)            else:                # if way='I dont know'                answer = "Я не совсем вас понимаю...\nУточните, пожалуйста."        else:            # if subquestion: e.g. identi=2.1.1 or 3.2.2 etc.            identi_numbers = identi.split('.')            next_num = str(int(identi_numbers[2]) + 1)            question_num = '.'.join([identi_numbers[0],identi_numbers[1],next_num])            answer = get_question_from_DB(question_num)            # if we get end of subquestions in this top-level-question            if answer == 'None':                # going to the next top-level question                question_num = str(int(identi_numbers[0]) + 1)                # checking that the question is the last                if _is_the_last_question(question_num):                    answer = get_question_from_DB(question_num)                    question_num = 'end'                else:                    # is not the last question                    answer = get_question_from_DB(question_num)                        write_current_question_number_for_user(user_id, question_num)            return answerdef _is_the_last_question(question_num):    """    define is the last question?    by the condition (len(identi) == 1) of the function "get_bot_answer"    question_num has lenght 1    """    is_the_last = True    question_num = str(int(question_num) + 1)    question = get_question_from_DB(question_num)    if question != 'None':        is_the_last = False    return is_the_lastdef _define_conversation_way(user_message, identi):    """    define in which way we are goin to?    """    # all questions, unless  3 has two ways: 'yes' (positive) or 'no' (negative)    if identi != '3' and identi != '6':        yes = _get_similarity(user_message, u'да заказывал просить')        no = _get_similarity(user_message, u'нет никогда')    elif identi == '6':        # the question number 6 has different ways: 'delivery' or 'self-delivery'        yes = _get_similarity(user_message, u'заказываю доставку')        no = _get_similarity(user_message, u'еду сам ищу аналог')    elif identi == '3':        # the question number 3 has different ways: 'from store' or 'delivery'        yes = _get_similarity(user_message, u'магазин сам')        no = _get_similarity(user_message, u'доставка почта все перечисленное курьер дом')    if yes > no and yes > 0.15:        _way = 'yes'    elif no > yes and no > 0.15:        _way = 'no'    else:        _way = 'I dont know'    return _waydef _identify_phrase(user_id, user_message):    """    identify start question or greeting    return number of phrase in database    """    # identification variable, on start set "I don't know"    identi = 'I dont know'    # find in database current position in conversation between user and chatbot    identi = get_current_position_in_conversation(user_id)    if identi != 'err':        # if the conversation has just begun        if identi == '0':            # define greetings            similarity = _get_similarity(user_message, u'привет здравствуйте добрый')            if similarity > 0.5:                identi = "greetings"            else:                # define start interview or not                identi = _start_or_not(user_message)        # if the conversation continues        elif identi == '1':            # define start interview or not            identi = _start_or_not(user_message)        else:            pass                return identidef _start_or_not(user_message):    """    define <identi>: start or don't start interview    """    if user_message != 'старт' or user_message != 'Старт':        _identi = 'I dont know'        # define if user agree to start interview        start = _get_similarity(user_message, u'да можем можно начинай ок')        # define if user don't agree to start interview        later = _get_similarity(user_message, u'нет позже потом завтра')        if start > later and start > 0.15:            _identi = 'start'        elif later > start and later > 0.15:            _identi = 'later'    else:        _identi = "start"    return _identidef _clear_text(sentence):    """    delete stop-words and punctuation characters in sentence    """    try:        # sentence to low-case        sentence = sentence.lower()        # delete stop-characters        for char in stop_characters:            sentence = sentence.replace(char, '')        # delete stop-words        words_of_sentence = sentence.split(' ')        result = ''        for word in words_of_sentence:            if word not in stop_words:                result = result + ' ' + word    except Exception as e:        result = str(e)    return resultdef _get_similarity(text1, text2):    """    Function return similarity between text1 and text2    :param text1: user message    :param text2: key words    """    text1.strip()  # delete empty space on start and end of string    text2.strip()    text1_words = text1.split(' ')    text2_words = text2.split(' ')    similarity = 0.0 # init variable    try:        for word1 in text1_words:            if word1 != '':                for word2 in text2_words:                    if word2 != '':                        # prepare url for request to API rusvectores.org                        # url example http://rusvectores.org/araneum_none_fasttextcbow_300_5_2018/дело__папка/api/similarity/                        url = '/'.join(['http://rusvectores.org/araneum_none_fasttextcbow_300_5_2018',                                         word1 + '__' + word2, 'api', 'similarity/'])                        # GET request to API rusvectores.org                        r = requests.get(url, stream=True)                        # sum similarity of couple of words                        similarity = similarity + float(r.text.split('\t')[0])    except Exception as e:        log_exception = str(e)    # average similarity    similarity = similarity/len(text2_words)    # return similarity between text1 and text2    return similarity

Как видно из кода, с помощью метода write_current_question_number_for_user() бот сохраняет в базу данных текущую позицию в диалоге с пользователем. Это необходимо для того, чтобы бот понимал какой следующий вопрос нужно задать респонденту.
Функция get_question_from_DB() возвращает текст вопроса из базы данных для того, чтобы бот задал его в чате.

Для удобства приведу полный код модуля с методами для работы с базой данных:

mysqldb_methods.py
полный код модуля, в котором реализованы все методы для работы с MySQL базой данных

# -*- coding: utf-8 -*-"""Methods for work with MySQL database."""import MySQLdb  # before using it do in ssh: pip install mysqlclient""" import configuration variables for connect to MySQL database:"""from mysqldb_config import HOSTfrom mysqldb_config import USERfrom mysqldb_config import PASSWORDfrom mysqldb_config import DATABASEdef write_current_question_number_for_user(user_id, question_num):    """    write question number to database for this user    """    try:        conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD,                                db=DATABASE, charset='utf8', init_command='SET NAMES UTF8')        cursor = conn.cursor()        if question_num == '2':            query = (                "INSERT INTO `conversations`(`user_id`, `question_num`) "                "VALUES (%s, %s)"            )            data = (user_id, question_num)        else:            query = (                "UPDATE `conversations` "                "SET `question_num`=%s "                "WHERE `user_id`=%s "            )            data = (question_num, user_id)        cursor.execute(query,data)        conn.commit()  # commit transaction        conn.close()    except Exception as e:        exception = str(e)def get_current_position_in_conversation(user_id):    """    find in database current position in conversation between user and chatbot    using in bot_methods.py    """    try:        conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD,                                db=DATABASE, charset='utf8', init_command='SET NAMES UTF8')        cursor = conn.cursor()        query = "SELECT `question_num` FROM `conversations` WHERE `user_id`=%(user_id)s LIMIT 1"        cursor.execute(query, {'user_id': user_id})        result = cursor.fetchone()        if result is None:            identi = '0'        else:            identi = result[0]        conn.close()    except Exception as e:        identi = 'err'        return identidef get_question_from_DB(question_num):    """    return question text from database    """    try:        conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD,                                db=DATABASE, charset='utf8', init_command='SET NAMES UTF8')        cursor = conn.cursor()        query = "SELECT `question_text` FROM `questions` WHERE `question_num`=%(num)s LIMIT 1"        cursor.execute(query, {'num': question_num})        result = cursor.fetchone()        if result is not None:            question_text = result[0]        else:            question_text = "None"        conn.close()    except Exception as e:        question_text = str(e)        return question_text

Теперь для полноты картины приведу код скрипта, который резюмирует всю логику работы чат-бота.

скрипт views.py
"точка входа" для приёма сообщений пользователя и отправки ответов бота в чат

# -*- coding: utf-8 -*-from __future__ import unicode_literalsimport jsonimport threading  # for async executing tasks with VK APIimport vk  # vk is library from VKfrom django.views.decorators.csrf import csrf_exemptfrom django.shortcuts import renderfrom django.http import HttpResponsefrom bot_config import *  # import token, confirmation_token and over constants from bot_config.pyfrom bot_methods import get_bot_answer@csrf_exempt  # exempt index() function from built-in Django protectiondef index(request):  # requested url    if (request.method == "POST"):        data = json.loads(request.body)  # take POST request from auto-generated variable <request.body> in json format        if (data['secret'] == secret_key):  # if json request contain secret key and it's equal my secret key            if (data['type'] == 'confirmation'):  # if VK server request confirmation                """                For confirmation my server (webhook) it must return                confirmation token, which issuing in administration web-panel                your public group in vk.com.                Using <content_type="text/plain"> in HttpResponse function allows you                response only plain text, without any format symbols.                Parameter <status=200> response to VK server as VK want.                """                # confirmation_token from bot_config.py                return HttpResponse(confirmation_token,                                     content_type="text/plain",                                     status=200)            if (data['type'] == 'message_new'):  # if VK server send a message                # t - is new thread to async execute answer_to_message()                t = threading.Thread(target=_answer_to_message, args=(data,))                t.start()                return HttpResponse('ok', content_type="text/plain", status=200)    else:        return HttpResponse('see you :)')# send anser to user messagedef _answer_to_message(data):    session = vk.Session()    api = vk.API(session, v=5.5)    user_id = data['object']['user_id']    user_message = data['object']['body']    # get bot answer    answer = get_bot_answer(user_id, user_message)    # token from bot_config.py    api.messages.send(access_token = token, user_id = str(user_id), message = answer)

О том как устроена структура файлов приложения, его настройка описывал в подробностях в отдельной статье на Хабре.

Успехов!

Уверен, что для решения изложенной задачи существуют более элегантные решения и подходы. Несмотря на это надеюсь что изложенный материал найдёт своего читателя и будет полезен как в целом, так и в каких-то аспектах.
Желаю всем интересных проектов и успехов в их реализации!

Подробнее..

Как мы запустили документооборот в Telegram и что из этого вышло? Да, это не сон

24.05.2021 12:21:25 | Автор: admin

Разбираем аргументы за и против. В конце также можно ознакомиться с моим мнением на этот счет.

С чего все начиналось?

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

Немного обо мне: я Python разработчик, архитектор, тимлид. В программировании с 2009 года. Ранее опубликовал эту статью на vc.ru.

В реализации проекта мне помогал аналитик от заказчика, и в общем-то всё.

Итак, к кейсу

В коллектив организации входит большое количество выездных сотрудников. Часто возникают ситуации, когда у работника нет возможности CRM-системой на компьютере (в нашем случае ноутбуке) для выполнения рабочих задач.

Если коротко описать задачу: человек в полевых условиях должен иметь возможность войти в систему и отправить необходимые документы. Иначе из-за временных задержек компания теряет приличные суммы денег.

Более подробно описать ситуации я, к сожалению, не могу, т.к. есть договоренность о неразглашении подробностей этого кейса.

Как решить проблему потери времени? У сотрудника должна быть возможность коннектиться с CRM-системой с планшета или телефона.

Как осуществить задуманное?

Выход нашёлся быстро: создать чат-бот в Telegram.

И на это решение можно посмотреть с двух сторон: с позиции управленцев и со стороны айтишников.

Не буду кривить душой, мне ближе позиция программистов с небольшими оговорками. Моя идея хороша, как ни крути. Но давайте сначала рассмотрим позиции обеих сторон.

Если рассуждать со стороны управленцев, соединение CRM-системы с чат-ботом Telegram значительно снижает энергозатраты и финансовые расходы компании. И вот, почему:

  • Не нужно обучать большой штат новым программам-интеграторам CRM с телефоном.

  • Тем более, стоимость таких программ значительно выше, чем стоимость написания и поддержания работоспособности чат-бота для Telegram.

  • Это удобно. Сейчас у каждого есть возможность скачать Telegram, который не занимает много места в памяти телефона.

  • Работает Telegram-бот действительно быстрее, чем сложная программа. Кроме того, чат-бот помогает сотруднику сориентироваться во внутреннем документообороте фирмы.


Но со стороны безопасности и сохранности данных такое внедрение в электронный документооборот крупной компании нужно считать неприемлемым. Здесь на арену выходят возможные доводы IT-отдела.

  • Интеграция мессенджера в CRM-систему может привести к утечке информации. Сам по себе документооборот необходимо строить на основе внутренних ресурсов, также необходимо предусмотреть авторизацию пользователей. Если не учесть эти моменты, то данные могут уйти не в те руки.

  • Если изменить процесс документооборота, например, ввести отправку редактированных вариантов, то решение рассыпается. В таком случае сотруднику необходимо будет сначала отредактировать документ, а потом отправить его в чат с ботом.

С точки зрения офисного сотрудника это легко выполнимая задача. А со стороны полевого человека, это сильно усложняет процесс работы с документами.

  • Ещё один весомый аргумент: данные будут храниться в разных системах. Telegram-бот может быть напрямую привязан к CRM или ERP-системе, но в большинстве случаев он имеет свое хранилище, в котором агрегирует данные и обрабатывает их.

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

А что я думаю по этому поводу?

Более логичное решение, как программист, я вижу таким: выездным сотрудникам всё-таки работать с мобильной версией CRM-системы компании. Но напомню, это технически сложно для большой организации, и значительно бьёт по карману управленцев.

Тем более, если говорить об удобстве главных героев этой эпопеи - полевых работниках, то загрузить документ и отправить его на дальнейшее согласование, получить нужное уведомление гораздо проще через бот в Telegram, чем через специализированную программу, типа 1C, Диадок и т.д.

По моему мнению, идея с созданием чат-бота в Telegram является довольно простой с точки зрения использования и реализации. Да, он имеет интеграции с другими системами, но мы решили проблему удобства и оперативности получения информации.

Даже удивительно, почему другие компании не используют подобные методы. А может и использует, кто их знает?

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

О технической стороне вопроса

Идея была реализована на основе Telegram API на вебхуках. Для разработки был использован любимый python, данные хранятся на базе postgresql. Для ускорения работы и асинхронности задач применили связку redis + celery, в качестве серверной операционной системы использована Ubuntu 18 Server.

К слову сказать, мой клиент остался доволен. Нововведение принесло компании прибыль, которая терялась на простоях из-за пауз в цепочках бизнес-процессов.

А вы на стороне программистов или управленцев? Делитесь своим мнением, задавайте вопросы!

Подробнее..

Из песочницы Онлайн Магазин будущего

04.11.2020 18:10:50 | Автор: admin
Последний кризис показал, как важно уметь продавать онлайн. Угроза второй волны гонит магазины в киберпространство.

Мало сделать сайт. Надо привести в него людей. Стоимость привлечения посетителей в веб-магазины зашкаливает. Остается горестно вспоминать те времена, когда пионеры индустрии деловито занимали места на новой торговой площадке. Поисковики были маленькими, а цены зелеными.

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

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

image

Уходим от конкуренции


По данным Digital 2020 больше половины времени(50.1%), которое мы проводим в интернете теперь приходится на мобильные телефоны.
Тренд 1: Мобильный интернет начинает доминировать
Аналитики из App Annie заявляют, что на мобильные приложения теперь приходится 10 из каждых 11 минут пользования мобильным устройством, а на просмотр веб-страниц уходит только 9% нашего мобильного времени. Приходится признать, что роль магазинов здесь выполняют мобильные приложения. Правила игры совсем другие. И конкуренция существенно ниже.
Тренд 2: В мобильной среде первую скрипку играют мобильные приложения

Снимаем ограничения


Обычно мобильные магазины работают с небольшим ассортиментом товаров/услуг. Ограничение напрямую связано с маленьким экраном смартфона.

Мы привыкли использовать меню классификации для поиска товара. Прайс в несколько тысяч наименований, в маленьком окошке, превращается в кошмар с картинками (как же без них). Большой объем данных делает классификатор не эффективным.



На заре интернета существовали классификаторы сайтов желтые страницы интернета. Они забыты. Сейчас, мы считаем нормальным, написать запрос и найти ответ в первой десятке выдачи поисковиков.

Похоже, что мы лучше стали общаться с компьютером. Монолог: "Смотри что у меня есть", меняется на диалог: "Что вам угодно?". Если пофантазировать, то вполне естественно сообщить телефону: "Хочу капучино", и получить его, где-нибудь поблизости.
Тренд 3: Среди большого объема данных, доминирует поиск по запросам, близким к естественному общению.
Заменяя классификатор на запросы, мы получим несколько плюшек.

  • Не надо ломать голову что важнее: категория Сапоги/Туфли или Мужские/Женские.
  • Легко использовать сложный товар с характеристиками. Для обуви это размеры и цвет, для автомобилей это марка авто или номер кузова.
  • Мы, побуждаем пользователя формулировать желание. Это помогает онлайн продавцу мониторить ход визита и помогать покупателю не задавая лишних вопросов.

Развивающийся искусственный интеллект делает язык запросов естественнее и точнее. Известны удачные кейсы с запросами по фотографиям или голосом. Обратите внимание, что та-же Яндекс Алиса наиболее полезна именно в мобильном секторе. С компьютера не сделать фотографию или видео так же свободно, как с телефона.
Смартфон в наименьшей степени удобен для коммуникации на экране, в наибольшей для голоса, фото или видео общения.
Примерно половина из 3,7 часов в день, которые люди проводят с мобильными в руках, они тратят на приложения социальных сетей и мессенджеры.

image
Тренд 4: Самые популярные мобильные приложения социальные сети и месcенджеры.
Время подвести итоги и заметить, что интернет смещается в сторону мессенджеров в мобильных устройствах. Вот удивил! Поддержка общения, это прямое назначение телефона. Можно ли утверждать, что к этому стремится центр тяжести всего интернета?

Давайте рассуждать: Интернет, это в первую очередь способ коммуникации. Мобильный телефон это средство коммуникации которое всегда под рукой. Коммуникации с кем? Не только с человеком, но и программой. Самое время вспомнить очередной тренд:


Тренд 5: Чат-боты набирают популярность
В более общем случае я бы сформулировал общее направление так:
Развитие интернета идет в сторону естественного общения человека
с человеком или машиной посредством мобильного терминала.
Я далек от радикальных мыслей, что все остальное вымрет. Думаю, что на горизонте ближайших 5-10 лет будет преобладать такая вот клиент-серверная архитектура, где основными клиентами выступают мобильные телефоны в лице своих владельцев. Не претендуя на роль первооткрывателя посмотрим через призму этой формулировки на онлайн торговлю.

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

Общение покупателя и консультанта на расстоянии очень актуально на фоне пандемии. Такой магазин может стать выходом для офлайн магазинов в условиях локдауна.

Написать Мобильное приложение это недешево. А наделить его способностями серьезного чата и подавно. Как оказаться на этой поляне раньше других?

Снижаем стоимость


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

И знаете, выбор пока оказывается не велик Чат-боты, так или иначе, можно сделать во многих мессенджерах, но способности Telegram заметно шире. Самое важное для нас отличие, это возможность программировать кнопки (Помнить и набивать команды вручную, понравится не каждому). Если знаете аналоги напишите пожалуйста в комментарии.

Вдобавок, каналы делают Телеграмм социальной сетью. А это не лишняя плюшка в способностях онлайн магазина.
Телеграмм с чат-ботом это недорогая основа собственного онлайн магазина.
Получается достаточно запрограммировать внутреннюю логику чат-бота, об остальном позаботится мультиплатформенный Telegram.

Я предпринял попытку создать такой чат-бот. То что у меня получилось, после установки Телеграмм, можно посмотреть на https://t.me/repassBot.
Подробнее..

Demo Day в Райффайзенбанке какие продукты и сервисы показали команды

19.04.2021 12:12:03 | Автор: admin

Увиделись онлайн и вместе посмотрели на банковские продукты и сервисы изнутри: какие процессы ускоряем и автоматизируем, какие интеграции реализуем и какие технологии для этого используем.

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

Начинаем трансляцию

Устроились поудобнее и заглянули в zoom, где уже встречаем всех гостей приветственным словом Сергея Монина, председателя правления банка, и играем в квиз, чтобы получить приятный подарок фирменный мерч Open Demo Day Райффайзенбанка.

Теперь переходим к главному, ради чего собрались: восемь демо восемь суперфич!

20:44 >>> Сервис для оптимизации работы курьерской доставки
Команды: Customer Relations for PI, Site, Cards, Notifications & On Demand Development

Показываем, как организовали доставку банковских продуктов для физических и юридических лиц. Начиналось все с нескольких десятков доставок в месяц, и вот у нас уже работает собственная курьерская служба. Большие объемы и стремительное развитие бросают вызовы: нужно соответствовать высоким ожиданиям клиентов и автоматизировать процессы. Для этого и разрабатываем сервис, а под капотом используем наработки собственного open-source решения ViennaNET.

Задавали вопросы? Отвечаем здесь

Подсказки при заполнении ФИО с помощью Dadata? Пользователям нравится? На форме заявки ФИО заполняется при помощи подсказок сервиса Dadata, в том числе пол клиента определяется автоматически. A/b тестирование показало большой прирост конверсии в заявку с использованием этого сервиса.

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

Как будет работать сервис, если Dadata недоступна? На текущий момент клиент не сможет завершить процесс подачи заявки, если сервис Dadata будет недоступен. В бэклоге продукта заложена задача по устранению этой проблемы.

Не думали на тему заполнения анкеты на доставку через интеграцию с Госуслугами? У нас был проведен тест с возможностью подачи заявки с авторизацией и получением клиентских данных из сервиса Госуслуги, но результаты показали снижение конверсии по количеству поданных заявок.

У курьеров личные телефоны для работы, и фото документов они делают на личные телефоны? Телефоны корпоративные с секьюрной оболочкой, внутри которой установлено курьерское ПО. Фото не сохраняются в телефоне в галерею, невозможно сделать видео экрана и скриншот.

Есть ли возможность отмены/переноса встречи клиентом или хотя бы номер телефона, по которому клиент может предупредить о том, что не сможет встретиться в ранее согласованное время? Клиенту приходит нотификация о дате встречи с телефоном линии, куда он может позвонить, если его планы изменились. В целом все курьеры делают утренний прозвон клиентов, если клиент желает перенести дату, курьер это фиксирует и дата будет перенесена.

Если все-таки ошибки в документах, корректировки вы внесете, проведете пересчет, а документы с клиентом потом переподписываете повторно? Если в документах есть критические ошибки, которые изменяют условия продукта, будет повторная встреча для подписания скорректированных документов.

Мобильные приложения нативны под обе платформы? Только под Android. Ввиду экономики оснащать курьеров телефонами с хорошими характеристиками ОС и камеры дешевле на Android.

Может ли курьер свернуть приложение и воспользоваться камерой для фото документов в личный фото архив? Курьеры не используют личный телефон для работы, весь процесс происходит строго с использованием корпоративного телефона.

Курьеры сами готовят документы и формируют пакеты с картами? Или где-то происходит их формирование? В городах, где есть инфраструктура банка, курьеры всю подготовку ко встрече делают сами (печать, подбор карты). В части городах есть специализированные агенты, которые поддерживают этот процесс по договору.

Как считаете экономику? Какие KPI стоят перед командой? Экономика завязана на стоимости доставки. KPI NPS, скорость доставки и конверсия от заявки в выданный продукт.

Как документы попадают в ПО курьерки? Можно ли их изменить силами курьера? В ПО попадают фото документов. Документы на бумаге курьерам для изменения недоступны.

42:19 >>> Переводы по номеру телефонав мобильном банке
Команда Instant &Easy

У нас в фокусе работа над самым важным и популярным функционалом для наших пользователей в мобильном банке, и к этим фичам относятся платежи и переводы. В этом направлении мы реализовали две истории: первая история, где отсортировали банки по популярности и добавили им логотипы. Это базовые и понятные вещи, которые экономят в среднем 2,5 секунды на перевод по номеру телефона. Вторая история вот о чем: упростили перевод получателю, номер которого указан в адресной книге. Что делать, если СБП у получателя не включен? Это тоже предусмотрели все наглядно показываем в демо.

Задавали вопросы? Отвечаем здесь

Как СБП изменил процесс перевода денег? Радикально упростил межбанковские переводы, ради которых раньше пользователи специально открывали карты определенных банков.

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

Перевод по Bluetooth, осуществляется только при версии 5? Если нет, то как защитите перевод? Переводы по Bluetooth полностью безопасны, вне зависимости от версии.

Брались ли в расчет практики переводов по номеру телефона других банков? Да, российских и зарубежных.

Быстрые суммы перевода показаны в контексте пользователя по последним платежам? Или просто заданы статичные шаблоны? На данный момент статичные шаблоны, но в планах отображение сумм в контексте конкретного пользователя.

Какой для вас приоритетный канал перевода как для банка? Перевод по карте или по телефону? По телефону более приоритетный и более быстрорастущий канал.

46 дней сэкономили за всю жизнь? относительно чего метрика? 46 дней в месяц. Мы взяли сэкономленное на одном переводе количество секунд и умножили это время на количество переводов, совершающихся за месяц.

Есть идеи насчет введения жестов для облегчения переводов? Есть мысли и прототипы, но конкретика, удобная пользователям, пока отсутствует.

Шаблон перевода в другой банк удобен. Мне не встречался шаблон перевести по карте из другого банка, каждый раз приходится вносить данные своей же карты (я клиент банка как индивидуальный зарплатный клиент). Можно ли сделать сохранение данных своей карты для перевода из другого банка? Согласны, шаблоны очень нужны, их реализация есть в ближайших планах.

А можно ли отображать остаточную сумму переводов без комиссии? Можно добавить такую функциональность вместе с другими лимитами.

Подскажите, что с международными переводами? В Европу или США есть ли подобные реализации? На данный момент такие решения отсутствуют.

Если будет комиссия, то как будут показываться % или сумма, если сумма большая, то как это выглядит? Будет показываться сумма комиссии, чтобы пользователю всегда было понятно, сколько денег он заплатит.

Насколько популярен способ перевода по Bluetooth? Недостаточно популярен, чтобы мы концентрировались на его развитии :)

Какой процент активных пользователей мобильного банка от общего количества клиентов банка? Примерно 2/3.

Много чего внедрили для aml / ft ? Может, какие-то новинки? Мы буквально каждый месяц делаем доработки в этой части, большая часть из которых реализуется совместно с НСПК.

Зачем смотреть инструкцию, если ее надо отправить? Не всегда необходимо ее отправлять, так как почти половина переводов переводы себе в другой банк. Но поделиться инструкцией тоже можно.

Есть ли планы сделать каждому клиенту индивидуальные подсказки для полей, исходя из статистики по его операциям? На данный момент персонализацию подсказок мы не планируем.

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

Может быть ошибка, если у получателя на одном телефоне 2+ банковские карты разных банков? Нет, эта ситуация нормально обрабатывается.

Как вы собираете обратную связь от клиентов? Ходите ли на гембы? По текущему приложению: отзывы в сторах и соцсетях, звонки и письма в контактный центр. Новые разработки тестируются с помощью Usability тестов.

Можно ли осуществить перевод не с текущего счета, а с карты другого банка? Например, приложение зеленого банка не работает из-за сбоя. Да, можно.

1:02:58 >>> Интеграция банковских услуг в SAP
Команда CDC Integrations

Мы работаем с корпоративными клиентами, и когда мы провели исследование, то увидели две важные вещи: пользователи хотят, чтобы все финансовые операции были в их учетной системе и чтобы никуда не нужно было выходить, особенно если у них много банков. Интегрировались в SAP и сделали для наших клиентов все внутри одной платформы. Интерфейсы получились почти идентичными, чтобы не было разрыва пользовательского опыта.

1:22:55 >>> Опросник NPS для кандидатов
Команда Recruitment Dev Team

Кандидаты такие же клиенты, как и другие пользователи наших банковских продуктов. И нам важно, что они думают о процессе найма в банке. Для этого мы с командой встроили опросник NPS в этот процесс: система позволяет кандидатам оценивать нас и помогает нанимающим менеджерам, собеседующим и рекрутерам со своей стороны также посмотреть на все шаги по пути найма.

Задавали вопросы? Отвечаем здесь

8 вопросов достаточно много. Текст в свободной форме практически никогда не заполняют, как менялась ваша анкета по NPS со временем? Планируете ли что-то менять в анкете в ближайшее время, какие в анкете сейчас есть явно слабые места? Это второй вариант анкеты, поменялись формулировки вопросов, их стало на один меньше. Хороший response rate (23%) показывает, что ответ на эти вопросы несильно напрягает респондентов. Мы планируем создать и другие варианты анкеты. Комментарий в свободной форме оставили около 50% кандидатов из числа тех, кто заполнил опросник.

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

Какие гипотезы выдвигались в процессе разработки опросника / интервалов отправки анкет? Гипотез было много, например, Кандидаты, которые получили отказ по вакансии, будут давать более негативные оценки, и она подтвердилась. Есть гипотеза, что задержка на отправку анкеты в 7 дней после принятия решения о судьбе кандидата поможет избежать чрезмерного влияния эмоций на результат опроса.

А вы считаете eNPS уже текущего состава команды? Пока нет.

Используется ли ваш продукт для переоценки сотрудников/чекапов/чекпойнтов и т.д.? Или это только про внешний рекрутмент? Продукт используется только для рекрумента.

Накладываете ли вы эти данные на карту пути кандидата? Отдельно или внутри вашей команды? Интересное предложение, спасибо!

Коллеги, есть ли особенности в инструментах для рекрутинга/опросов кандидатов с ограниченными возможностями? Это важная тема, но скорее относится к самому процессу рекрутмента. В наших электронных продуктах мы стараемся проектировать интерфейсы так, чтобы для людей с ограниченными возможностями они не вызвали затруднений, но пока не дошли до того, чтобы делать специальные версии ПО.

Сколько раз вы отошлете опросник отказному кандидату, ибо каждый раз качество интервьюирования может падать в зависимости от вакансии? Если кандидат одновременно проходит собеседования на несколько вакансий, он получит только один опросник за один месяц.

Вы как-то автоматизируете процесс проведения собесов? Например, скрипты для проведения собеса с последующим подсчетом балов, скорингом и т.п. Да, но пока не для всех. В IT-рекрутменте большинство компетенций оцифрованы, и интервьюеры проверяют кандидатов по единым стандартам, которые задают коммьюнити. По завершению коллеги могут принимать решение на основе единой оценки, например, в виде паутинки.

Если кандидата оценивают сразу на несколько позиций, как это учитывает ваша система? Кандидат получает один опросник по той вакансии, процесс найма по которой заканчивается быстрее, и далее 30 дней не будет получать новый опросник. Если после этого он побывает еще на одной вакансий, то процесс повторится.

1:45:43 >>> Омниканальная чат-платформа собственной разработки
Команда Chat

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

Задавали вопросы? Отвечаем здесь

Есть ли у оператора мобильное приложение с чатом? Чтобы он мог общаться с клиентами вне фиксированного рабочего места. Нет. Наши операторы сейчас могут работать и из дома (не обязательно из офиса), так что проблема по итогам 2020 стала неактуальна).

Используется ли на входящей линии КЦ голосовой бот (не IVR)? Да, уже работает в проде с сентября. Сейчас обрабатывает 90% входящих обращений, дает персонализированные ответы и 20% из них закрывает е2е. При этом не мучает клиента просьбами переформулировать вопрос :) Старый IVR остался только в 10% операций (на входе и 1-2 малых ветках). Чуть позже и их убьем.

Какое максимальное количество диалогов у оператора? Зависит от оператора. Каких-то ограничений не вводим.

Ведется ли сбор статистики по тематикам обращений? Как будет реализовано на этой платформе? Сбор тематик реализован на базе отдельного решения речевая аналитика. Уже успешно работает.

В шаблон можно вставить имя того, с кем диалог, чтобы не было сухой фразы? Да, конечно. Все шаблоны редактируемые.

Вот у вас диалог ждал, пока оператор вернется... А если оператор не вернулся по каким-либо причинам? Все, клиент повис? Состояние диалогов постоянно мониторит руководитель данной группы/сектора. К клиенту обязательно вернутся.

Если оператор принудительно закрыл беседу, до конца не ответив на вопрос клиента, происходит ли переоткрытие или всегда назначается новый оператор? Сколько храните переписки, и есть ли контроль качества работы операторов с клиентами по данным каналам? Механика, возврата к существующему оператору (если это возможно) есть. Переписки храним долго :) Есть не просто контроль качества, а амбассадоры стиля. А вообще мы стараемся сделать так, чтобы качество нашего общения было приоритетом не для выделенных сотрудников, а для всех.

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

Есть ли логика назначения диалога по компетенциям операторов + переназначение диалога другому оператору? Логика назначения по компетенциям возможна, но мы стремимся к универсализации и дифференцируем операторов не тематикой, а объемом одновременных диалогов. Для отдельной группы диалогов, по которым все же необходима выделенная группа, перевод, конечно, возможен.

Участвуете ли вы в каких-либо сторонних исследованиях, или сами проводите все продуктовые исследования и в стороннем нет потребности? Проводим как свои исследования (опросы, проблемные интервью), так и внешние(мистери шоппинг, UX аудит, рэнкинги).

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

Может ли оператор перевести вопрос на другого оператора? Например, сложный вопрос и ответа нет. Или вопрос нужно уточнять у продуктовой команды, например. Как это работает? Да, конечно. Оператор может перевести вопрос как на конкретного оператора, так и на выделенную группу.

А как вы планируете делать работу с чатом эффективнее? Чтобы ответы на вопрос занимали меньше времени? Есть несколько оригинальных идей (и да, это не ботизация 99% вопросов, так как мы еще хотим, чтобы наши клиенты были счастливы), но, к сожалению, мы не можем их рассказать, потому что они по-своему уникальны.

Есть ли смысл пилить свой чат? На рынке очень много крутых решений: например, Intercom. Какие плюсы своего решения? Может ли банк построить решение лучше, чем компания, которая на этом специализируется? К счастью, за нас это проверили разработчики мобильных банков, которые также на рынке изначально использовали вендорские решения, а в итоге все лидеры пришли к внутренней разработке. В области чатов уже сейчас ряд лидеров также разрабатывают собственные решения, хотя тоже начинали с коробок. У внутреннего решения как минимум три плюса: лучший ТТМ (думаю, не надо объяснять, что внедрение новых фич через вендора на практике очень редко можно вписать даже в двухнедельный спринт), большая гибкость в кастомизации (часть решений являются облачными, что фактически блокирует большую часть доработок, часть онпремис, но кастомизация отдельных веток или радикальные доработки архитектуры либо невозможны, либо очень дорогие и долгие). Ну и, в-третьих, вендорские решения намного сложнее использовать в комплексе с другими решениями ландшафта. В нашем случае мы сами разрабатываем как чат-платформу, так и чат-бота, голосового бота и CRM-систему. Это позволяет на входе с минимальными усилиями реализовывать самые эффективные задачи.

Резюмируя вопрос: вендорские коробки создаются, чтобы быть хорошими всем, внутренние решения, чтобы быть лучшими конкретным компаниям. Все зависит от амбиций :)

P.S. Intercom отличный пример, решение приетарно облачное, поддерживает только live-chat (чат на сайте) и очень плохо (мне неизвестны кейсы) встраивается в приложение, заточено под собственное бот-решение (а это не конек intercom, так как по факту есть rule-based решение). А для нас чат на сайте это 5-10% траффика. Решение Intercom в целом не является чат-платформой и отвечает на другие вопросы (к примеру, у коллег большой фокус на маркетинг, онбординг продуктов, что не является частью чат-платформ).

2:08:46 >>> Автоматический процесс принятия решения по заявке
Команда Personal Loans

Реализовали полностью автоматический процесс принятия решения по кредитным заявкам. Конечно, есть критерии: такие заявки рассматриваются от уже существующих клиентов, по которым не нужна дополнительная проверка. Так что система быстро проверяет все сама, без участия сотрудников. Теперь самый долгий срок рассмотрения заявки 6 минут.

Задавали вопросы? Отвечаем здесь

Отличается ли состав данных, которые должен заполнить клиент, для зарплатных клиентов? Или данные о работе просто автоматически подставляются? В общем случае о действующем клиенте банка мы знаем больше информации, чем о новом. Заново заполнять уже известную нам информацию не заставляем. Зарплатный частный случай действующего клиента.

Какое количество внешних сервисов подключено к СПР? Всего девять, из них семь влияют на принятие решения по заявке.

А что если номер телефона у клиента начинается с 8? По умолчанию указываем +7. Можно изменить.

Сколько у вас тестовых сред? Сколько времени заняла разработка с нуля до первой выдачи в иб? Сколько занимает тестирование? Есть ли в командах специалисты от юротдела или безопасников? Сколько человек в продуктовой команде? Решение на микросервисах? Что делаете с упавшими ошибочными заявками? Тестовая среда и пред-прод-разработка заняла два месяца. Тестирование выполняется в общем цикле разработки, поэтому можно считать, что тоже два месяца. Специалисты юр.отдела и ИБ вне скрам-команды, но с ними активно взаимодействуем по многим вопросам. Решение на микросервисах, и еще legacy-наследие в виде монолита. Для упавших заявок используем механизм переповторов.

Планируете ли автоматически загружать данные клиентов из Цифрового Профиля Госуслуг? Да, такие работы ведутся.

Как обошли риски по запросу в БКИ без согласия клиент? Согласие получено в рамках других продуктов Банка? Клиент предоставляет согласие при оформлении анкеты. Подтверждает простой цифровой подписью.

Кешируются ли данные, полученные из БКИ, чтобы не портить историю частыми запросами? Да, данные кешируются.

Как идет одобрение и оформление карты dual to credit по данному процессу? В пилотном решении выдача дуальной карты не предусмотрена. В дальнейшем функционал будет расширяться и дополняться.

2:26:07 >>> Цифровой маркетинг Райффайзен-Лизинг, новый сайт и маркетплейс
Команда Leasing

Для лизинга 2020 был непростым: в целом рынок упал на 6%. Что делала наша команда в прошлом году? Запустили цифровой Лизинг автомобилей и спецтехники и предоставили доступ в систему нашим партнерам. Еще активно занимались развитием сайта и маркетплейса: появился раздел по каталогам автомобилей и условиям и более заметная кнопка с оформлением заявки.

2:41:51 >>> Автоматизация исходящих платежей на базе блокчейн-платформы
Команды Technosoul Cash Management & Payments Service Team

Командами работали над интересной задачей проведение расчетов через собственную блокчейн-платформу R-chain. Как это все устроено? Есть несколько компаний покупатель и поставщик, есть банк, который поддерживает эти расчетные функции. Все участники на своих серверах устанавливают ноды, узлы блокчейна, и далее информационные системы участников объединяются в единую сеть. Так появляется возможность вести общий реестр сделок и расчетов. В теории объяснили, теперь показываем в действии на демо.

Спасибо, что были с нами!
Второй открытый Demo Day мы уже запланировали на ноябрь, следите за анонсами здесь, в нашем корпоративном блоге, и до следующей встречи :)

Подробнее..

Как чат-боты помогают цирку, вузу и эко-проекту 5 неординарных кейсов на визуальном конструкторе c NLU

19.05.2021 18:19:31 | Автор: admin

Чат-бот МЕГИ и ИКЕА распознает 8 наиболее распространенных фракций отходов и ежедневно обрабатывает порядка 30 сообщений.Бот АкБарс Банка развивает сотрудников и в прошлом году обучил 54% специалистов в компании. Бот Президентской академии в Санкт-Петербурге отвечает на вопросы абитуриентов и в августе 2020 года помог более 1000 поступающим.При этом все кейсы были реализованы на визуальном конструкторе с NLU. Just AI, разработчик технологий в сфере разговорного AI,рассказывает о деталях создания чат-ботов.

Чат-бот МЕГИ и ИКЕА сортирует мусор

Ежегодно в России образуется около 70 млн тонн бытового мусора, это в 10 раз больше веса пирамиды Хеопса. При разложении отходы выделяют опасные химикаты, например, метан, которыми мы же потом и дышим.

МЕГА и ИКЕА реализуют глобальную стратегию по устойчивому развитию ДА людям и планете! и несколько лет назад запустили программу раздельного сбора мусора Правила Деления в Санкт-Петербурге. На территории двух центров МЕГА появились сортировочные пункты, было налажено сотрудничество с перерабатывающими предприятиями. Организаторы движения стали проводить лекции и сделали группу в социальной сети ВКонтакте, на момент публикации в ней состоят более 22 тыс. подписчиков.

Отчасти причина непопулярности экологических инициатив в России в недостаточном эко-образовании населения. Люди не понимают, как, куда и в каком виде можно сдавать отходы. Мы постоянно получали вопросы, принимается та или иная продукция, нужно ли снимать этикетки с бутылок. Нам хотелось сделать так, чтобы любой человек мог мгновенно получить ответы на запросы о маркировке и раздельном сборе отходов, - Александр Страдышев, куратор проекта, МЕГА Парнас.

Количество мусора можно сократить почти на 80%, если органические и пищевые отходы закапывать в почву, а опасные правильно утилизировать.

Организаторы получали так много сообщений ВКонтакте, что решили автоматизировать ответы на типовые запросы. Команда Правил Деления разработала в конструкторе Aimylogiс чат-бота, который теперь помогает администратору группы. Бот представляет собой интерактивный FAQ, где есть ответы на часто задаваемые вопросы: Можно ли это сдать, Где вы находитесь, Время работы станций, Нужно ли снимать этикетку и др.

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

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

В будущем команда Правил Деления планирует научить чат-бота распознавать маркировки по фото за несколько недель работы пользователи прислали боту 127 фотографий.

Результат

Чат-бот умеет распознавать 8 наиболее распространенных фракций отходов. Ежедневно он обрабатывает порядка 30 сообщений, а в пиковый день помог более чем 500 людям. За все время работы ботом воспользовались 4 430 человек.

Чат-бот Упсала-Цирка знает расписание спектаклей

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

От AI-технологии в Упсала-Цирке в первую очередь хотели получить больше возможностей для общения со зрителями и волонтерами.

У многих компаний есть одна проблема: люди заходят на сайт, что-то узнают и просто уходят, а мы по факту узнаем, какой был трафик на сайте. Мы хотели собрать контактные данные пользователей, понять, что это за люди, и в дальнейшем отправлять им релевантную информацию, Екатерина Черемисина, PR-менеджер Упсала-Цирка.

Персонажем чат-бота стала собака по кличке Пина, которую списали с реальной собаки режиссера.

Цирк в целом про эмоции и удивление. Кто-то в шутку предложил сделать Пину персонажем чат-бота. Я зацепилась за эту мысль, потому что Пина постоянно в цирке, у всех на виду. Мне показалось, что такой персонаж может заинтересовать и завлечь пользователей, Екатерина Черемисина.

Задумка, действительно, удалась. Бегу за мячиком! Но на пару вопросов отвечу! пишет собака Пина в диалоге. Она может скинуть расписание спектаклей, сориентировать в курсах, объяснить, как добраться до цирка и каким транспортом лучше воспользоваться. В чат-боте есть ветки по вопросам сотрудничества, волонтерства, пожертвований. Также Пина предлагает всем заполнить контактную форму.

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

Результат

За два с половиной месяца работы в цирке роботизированная собака Пина помогла 144 уникальным пользователям. У команды Упсала-Цирка есть задумка встроить в чат-бота окошко для вноса пожертвований. Кроме того, сейчас цирк разрабатывает новый сайт и планирует интегрировать чат-бота туда.

Большие планы связаны с тем, чтобы разделить посетителей, оставивших контактные данные, на сегменты и отправлять им таргетированные рассылки. В зависимости от того, какой контент будет интересно получать пользователям и какой на него пойдет отклик, будет зависеть дальнейшая стратегия работы с аудиторией.

Затрачено на конструктор чат-ботов Aimylogic на момент публикации: 3 960 руб.

Чат-бот АкБарс Банка развивает сотрудников

Технология чат-ботов востребована в HR-сфере, часто ее используются для задач прескрининга кандидатов, онбординга новых сотрудников и опросов. В АкБарс Банке взглянули на возможности технологии шире и разработали 9 ботов, задача которых обучение и развитие персонала.

Мы планировали запустить обучающий, прикладной и массовый продукт в компании, но бюджета на реализацию не было. Также мы понимали, что региональные сотрудники хотят обучаться, но не имеют возможности ездить в командировки, - Марина Вахтина, руководитель Учебного центра Ак Барс Банка.

Чат-боты АкБарс Банка помогают сотрудникам осваивать профессиональные навыки вроде владения Excel и развивать софт-скиллы. Бот Барсик обучает коммуникативным навыкам: он дает задание и варианты ответов, а потом проговаривает правильный вариант и объясняет, почему другие варианты неправильные.

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

Многие боты задеплоены в телеграм. Мессенджер можно установить на компьютер и смартфон. Соответственно, сотрудник всегда и отовсюду имеет доступ к своим учебным материалам, текстам, видео и оценкам и в любой момент может снова обратиться за информацией, которая не уложилась сразу. Это позволяет обучать сотрудников с минимальным отрывом от рабочего процесса. Кроме того, в компании признали важную социальную функцию обучения с помощью чат-бота: в процессе занятий знакомятся друг с другом и обмениваются практиками сотрудники, которые до этого никогда не пересекались.

Результат

За 3 месяца 2019 года с помощью чат-бота прошли обучение 1798 человек 31% сотрудников компании. Командировочные расходы, связанные с выездами на обучение, упали на 36%.

В 2020 году, когда командировки стали невозможны, значение удаленного обучения существенно возросло. Чат-бот обучил 2726 человек 54% сотрудников. По результатам опроса, в 27 удаленных регионах удовлетворенность обучением выросла с 62 до 75%.

Затрачено на конструктор чат-ботов Aimylogic на момент публикации: 47 200 руб.

Чат-бот Президентской академии помогает абитуриентам

Прием абитуриентов время предельной нагрузки для любого вуза. Чтобы сделать процесс поступления максимально комфортным, в Петербургском РАНХиГС при Президенте РФ действует проект Виртуальный помощник абитуриента. Суть программы в том, что каждый поступающий оставляет электронную почту и потом регулярно получает на нее полезную информацию.

Но на этом в вузе не остановились и решили сделать помощника действительно виртуальным. Для этой роли выбрали чат-бота. Сегодня он работает на сайте вуза и в Telegram. В отличие от сотрудника приемной комиссии бот может отвечать на вопросы в любое время суток. Для популярного вуза, поступать в который едут со всей России, это актуальная задача.

По данным Совета ректоров Санкт-Петербурга и Ленинградской области, 70% из числа поступающих приезжают в наш город из других субъектов России. Чтобы процесс поступления в вуз для них был максимально простым и понятным, мы решили создать консультанта с искусственным интеллектом силу, которая никогда не спит и способна общаться с тысячью пользователями одновременно, говорит директор Северо-Западного института управления Владимир Шамахов.

Стоит сказать, что виртуальный консультант СЗИУ РАНХиГС коренной петербуржец, именно поэтому он готов ответить на вопросы не только о поступлении, но и рассказать абитуриентам о главных достопримечательностях города. Для этого потребуется задать лишь один вопрос: Куда сходить в Петербурге?.

В разработке бота участвовали сотрудники приемной комиссии. Они собрали обращения абитуриентов, провели мозговой штурм и определили часто задаваемые абитуриентами вопросы. После создания в конструкторе Aimylogic и публикации чат-бота стали анализировать обращения и добавлять новые ответы и вопросы.

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

Результат

Пик вопросов предсказуемо пришелся на время вступительных экзаменов. В августе 2020 года ботом воспользовались более 1000 человек.

Цветочный чат-бот принимает заказы в интернет-магазине

Цветы в интернет-магазине БукетОпт покупают клиенты из разных регионов и даже часовых поясов. Каждый день у них возникают вопросы по ассортименту, доставке и ценам. Сначала их можно было задать по телефону или в чате на сайте, отвечал на них оператор. Сотрудник заканчивал работу в 8 вечера часть вопросов оставалась без ответов, и компания теряла деньги.

Затем для удобства покупателей в БукетОпт подключили Открытые линии Битрикс24. Эта система собирает сообщения с разных площадок Instagram, ВКонтакте, WhatsApp, сохраняет в CRM и ставит в очередь к оператору. Оказалось, что людям удобно задавать вопросы в привычных социальных сетях и мессенджерах число обращений выросло в несколько раз, и ресурса одного оператора перестало хватать. Тогда в компании задумались о виртуальном помощнике.

Люди часто задают однотипные вопросы: оформление заказа, оплата, доставка, ассортимент, и гораздо проще, когда на них отвечает бот. Мы прослушали порядка 300 звонков и выделили 11 групп часто задаваемых вопросов, - Лада Трегубова, маркетолог БукетОпт.

На изучение материалов и инструкций Aimylogic ушла неделя. Основной задачей была верно составить логику вопросов и ответов для чат-бота.

По образованию я лингвист, и интенты, слова и словоформы подобрала достаточно быстро. Люди формулируют свои запросы очень по-разному, а смысл один, - Лада Трегубова.

За время работы чат-бота стало понятно, что лучше работают вопросы, где покупатель выбирает однозначный ответ да или нет. Это сокращает процент ошибок и форс-мажоров, требующих подключения оператора. В ближайших планах переделать часть сценария под закрытые вопросы.

Результат

Бот обслуживает около 1000 диалогов каждый месяц. Их результативность в компании отслеживают по utm-меткам. 1000 запросов дают 269 переходов на сайт, из посетивших интернет-магазин клиентов 23% добавляют заказ в корзину и 14% оплачивают покупку.

В интернет-магазине БукетОпт планируют, что в дальнейшем бот будет собирать контактные данные покупателей, создавать лиды в Битрикс24 и самостоятельно оформлять заказы. Это сократит время покупки и увеличит продуктивность всего интернет-магазина.

Затрачено на конструктор чат-ботов Aimylogic на момент публикации: 68 990 руб.

Подробнее..

Все, что вы хотели знать про диалоговый UXUI в проектировании чат-ботов

21.05.2021 20:16:58 | Автор: admin

Читайте в статье: что такое диалоговый UX/UI и какего создавать, а также полезные лайфхаки при проектировании сценария длячат-бота.

В марте 2021 годааналитики Voicebot провели опрос300 маркетологов и узнали, что они думают про голосовых помощников. Оказалось, что более 60% специалистов уверены в пользе голосовых ассистентов длямаркетинга. Виртуальные помощники и чат-боты больше не новинка и не пустой повод дляхайпав новостях. Бизнесактивно использует разговорные технологии дляэффективной коммуникации спользователями, дляпрямых продаж и создания прочных связей сбудущими и настоящими клиентами. И мы в Just AI уверены, что в будущем эта тенденция будет толькорасти.

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

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

Для новичков. Что такое диалоговый UX и в чем его отличие отдиалогового UI?

Начнем спростого: UX это user experience или опыт, который получает пользователь в ходе его взаимодействия синтерфейсом сервиса, продукта или услуги. UI это user interface, пользовательский интерфейсили то, что мы привыкли называть дизайном.

Идем дальше. Диалоговый UX это опыт пользователя, который позволяет ему общаться сботом, свиртуальными помощниками или людьми. К нему относятся: общение сголосовыми помощниками, игра в голосовую игру, голосовое управление автомобилем, голосовая команда в поисковую строку.

А диалоговый UI это интерфейсы, которые позволяют взаимодействовать между пользователем и системой. Элементом диалога может стать голосовой или текстовый ввод и вывод информации, а также модальное окно на сайте, поп-ап в приложении и т. п.

В рамках диалогового UI мы рассматриваем два условных типа интерфейсов: голосовой и разговорный. Кажется, что это синонимы, но не все такпросто. Под разговорным интерфейсом или Conversational User Interface (CUI) подразумеваются все интерфейсы, скоторыми можно общаться на естественном языке кактекстом, таки голосом.

Соответственно, в понятие CUI входит Voice User Interface (VUI) или голосовой интерфейс. Он предполагает взаимодействие сустройством спомощью голоса.

Так выглядит схема диалогового интерфейсаТак выглядит схема диалогового интерфейса

Чтобы разобраться, посмотрите на иллюстрацию. Есть общее понятие диалоговой интерфейс (длявзаимодействия пользователя ссистемой), его частью является разговорный интерфейс(длявзаимодействия пользователя ссистемой естественным языком), а уже в него входит голосовой интерфейс(длявзаимодействия пользователя ссистемой естественным языком и спомощью голоса).

Закрепим. Итак, Алиса в Яндекс.Станции это VUI, а в смартфоне, где сней можно говорить голосом и чатиться CUI. А все вместе это диалоговый UI.

Кто создает диалоговый UX и UI при проектировании чат-ботов

Созданием диалогового UХ и UI занимается отдельный специалист. Он разрабатывает диалоговый пользовательский интерфейс, продумывая пользовательский опыт.В Just AI мы называем такого специалиста дизайнер разговорных интерфейсов.

Но в русском языке точный термин до сих пор не закрепился. Поэтому можно встретить разные переводы. Так, на HH.ru мы встретили 17 разных названий вакансий: дизайнер диалогов, диалоговый редактор, digital-лингвист, voice UX designer, диалог-дизайнер, сценарист чат-бота и такдалее. Подробности о нашем исследовании смотрите в вебинаре Создатели разговорных интерфейсов: кто они и чем занимаются?. На нем мы рассказали, каксделать так, чтобы специалисты и компании нашли друг друга.

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

Собрали основные термины из этой статьи. Сохраняйте себе, чтобы не потерятьСобрали основные термины из этой статьи. Сохраняйте себе, чтобы не потерять

Для продвинутых. Какразработать диалоговый UX/UI

Шаг 1. Узнайте, подходит ли разговорный интерфейсдляваших задач.

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

Чек-лист диалогового UX/UI

  • Ваш вопросможно решить только при участии человека.

  • В качестве формата диалога подойдет вопрос-ответ без дополнительных уточнений.

  • Чтобы выполнить задачу, сейчаснужно кликать на экран несколько раз.

  • Чтобы выполнить задачу, сейчаснужно переключаться между экранами или приложениями.

  • Сейчаспользователю сложно или долго искать, где решить проблему.

  • Задачу можно выполнить, одновременно делая другие дела.

  • Задачу можно выполнить, даже если глаза и руки пользователя заняты другими делами.

  • Пользователю комфортно говорить или писать о теме задачи.

Отмечайте в чек-листе, какие пункты соответствуют вашей задачеОтмечайте в чек-листе, какие пункты соответствуют вашей задаче

Обратите внимание, что голосовой интерфейсможет не подойти в следующих ситуациях и пространствах:

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

  • Если неудобно общаться синтерфейсом. Например, когда клиент находится в офисе среди работающих коллег или в пространстве, где посторонние шумы ограничены или запрещены.

  • Когда пользователь предпочитает текст. Есть целая группа пользователей, которым просто удобнее общаться текстом, и они не готовы кголосовому каналу. Им лучше предложить текстовый интерфейс.

  • В случаях, когда речь идет о чем-то личном. Если в переписке счат-ботом необходимо сообщить персональные данные или личные сведения, то голосовой интерфейсдлятакого не подойдет.

Если голосовой интерфейс не подходит, возможно, подойдет текстовыйЕсли голосовой интерфейс не подходит, возможно, подойдет текстовый

Шаг 2. Узнайте все о пользователе

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

Чтобы составить пользовательскую персону, дляначала ответьте длясебя на вопросы:

  • Кто ваши пользователи?

  • Что хотят сделать? Какую проблему хотят решить?

  • Какони делают это сейчас?

  • Какие слова или фразы они используют, говоря о задаче?

  • Каков контекст, обстоятельства этих задач или проблем пользователей?

Перед разработкой сценария задайте себе эти вопросы о пользователяхПеред разработкой сценария задайте себе эти вопросы о пользователях

Продумайте tone of voice то, какую речь будет использовать ботили ассистент при общении спользователем. Если это чат-бот, какон обращается кклиенту на ты или на вы? Использует ли он профессиональные термины? Умеет ли общаться на отвлеченные темы и шутить,какботКвик?

Tone of voice основывается на стратегии поведения компании в отношении пользователей. Это то, какботбудет разговаривать свашим пользователем. В отрыве отполитики компании ботможет выглядеть очень странно, например, если он слишком шутлив в диалогах, а в компании принято говорить склиентом серьезно и на Вы сбольшой буквы.

Чтобы найти tone of voice, поизучайте ресурсы, на которых сидят пользователи это могут быть Известия, Ревдинский рабочий, Одноклассники, ВКонтакте и такдалее.

Поищите, какпользователи сейчасрешают похожие проблемы. Возможно, вы найдете похожие кейсы боты, навыки. И посмотрите, какпользователи общаются при этом, чтобы говорить сними на одном языке.

Ирина Степанова, аналитикразговорных интерфейсов отдела лингвистики в компании Just AI

Сравните сами, какможет отличаться Tone of Voice в сообщениях отразных компаний:

1. Привет, Иван! Посмотри новые тарифы на сайте в разделе Цены! Мы подготовили длятебя классные предложения!

2. Здравствуйте, Иван Иванович. Просим обратить внимание, что с1.06.2021 обновляются Тарифы. Актуальная информация находится в соответствующем разделе.

Тональность диалогов влияет на то, как пользователи воспринимают бота или голосового помощникаТональность диалогов влияет на то, как пользователи воспринимают бота или голосового помощника

При создании диалогов обязательно используйтемаксимы Грайса. Это правила ведения разговора, которые подчиняются принципу кооперации, введенному философом Гербертом Полом Грайсом. Они актуальны и дляголосового ассистента сискусственным интеллектом, и дляпростого бота в Facebook Messenger.

Четыре максимы помогают сделать диалог бота спользователем наиболее человечным и эффективным.

Максима качества информации:

  • не говори того, что считаешь ложным;

  • не говори того, в чем сомневаешься, длядоказательства чего нет исчерпывающих аргументов.

Максима количества информации:

  • изложи не меньше информации, чем требуется;

  • изложи не больше информации, чем требуется.

Максима релевантности:

  • не отходи оттемы.

Максима ясности:

  • будь последовательным:

  • избегай неясности;

  • избегай двусмысленности;

  • будь краток;

  • будь систематичен.

В кратком изложении они описаны на картинке.

Эти принципы помогут сделать диалог бота с пользователем эффективнееЭти принципы помогут сделать диалог бота с пользователем эффективнее

Шаг 3. Спроектируйте диалог

Создание сценария чат-бота стоит начать со схемы диалога в голосовом или текстовом каналах (Voice Flow или Chat Flow). Это диаграмма, которая показывает пути, через которые может идти диалог.

Для начала пропишите happy path или счастливый путь идеальный диалог пользователя сботом отначала и до конца. А затем продумайте ответвления, которые могут возникнуть на этом пути: сложности, дополнительные вопросы, уточнения.

На этом этапе не нужно подробно прописывать реплики, достаточно общей информации, о чем должен говорить бот.

Так выглядит схема диалога от начала и до конца. Нажмите, чтобы увеличить картинку и рассмотреть подробнееТак выглядит схема диалога от начала и до конца. Нажмите, чтобы увеличить картинку и рассмотреть подробнее

Шаг 4. Пропишите текстовый сценарий

Чтобы выполнить этотшаг, берите за основу путь пользователя и выбранный tone of voice. Готовые кусочки диалогов потом пойдут в код и превратятся в реальные реплики бота или ассистента.

Кусочек настоящего текстового сценария чат-бота. Показано, что произойдет, если бот не знает ответаКусочек настоящего текстового сценария чат-бота. Показано, что произойдет, если бот не знает ответа

Шаг 5. Сборка прототипа диалога

Итак, вы узнали самое важное про диалоговый UX и UI, изучили задачу и аудиторию, а также подготовили сценарий. После этого нужно заняться UX-проектированием диалога и собрать его прототип. Это поможет узнать, кактекст будет восприниматься в мессенджере, проверить навигацию и протестировать гипотезы. Такой работой обычной занимается дизайнер-проектировщик UX-дизайнер, специализирующийся на разговорных интерфейсах.

UX-дизайнер не просто рисует красивые кнопки. Он проектирует эмоциональный и чувственный опыт. Неважно приятный, неприятный, напряженный Эти оттенки зависят отпоставленной задачи, а UX-дизайнер спроектирует то, что необходимо.

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

Екатерина Юлина, Head of Product UX, Just AI

Чтобы узнать, какими будут дальнейшие шаги и увидеть практикум сборки прототипа диалога, посмотрите наш вебинар Дизайн голосовых интерфейсов: как, что, где и главное, зачем?. Специалисты Just AI рассказали и показали, каксоздают UX и UI при проектировании чат-бота HR дляпроизводственной компании, а также поделились практическими советами.

Во второй части цикла на вебинаре Создатели разговорных интерфейсов: кто они и чем занимаются? специалисты разобрали, какие сотрудники нужны длясоздания диалогового UX и что каждый из них должен делать, чтобы система работала.

Подробнее..

4-й конкурс Тест Тьюринга стартует в ноябре

12.11.2020 16:17:09 | Автор: admin


Всем привет! Компании Нейросети Ашманова и Наносемантика приглашают всех желающих принять участие в 4-м всероссийском онлайн Тесте Тьюринга 2020, который мы организуем.
Разработчики смогут посоревноваться у кого чат-бот умнее, остальные фанаты ИИ и технологий посмотреть, насколько разумны сейчас боты.
Под катом история конкурса, правила, ссылка на регистрацию и актуальное расписание.

Главное о Тесте Тьюринга

Мы взяли за основу нашего конкурса тест, который был предложен ещё в 1950-м году английским математиком и основоположником современной информатики Аланом Тьюрингом. Он предложил считать машину мыслящей, если человек, общаясь с ней с помощью сообщений, не может определить, кто с ним говорит человек или программа.

Наш тест работает также: если независимый эксперт в процессе анонимного параллельного общения с роботом или человеком не сможет определить, кто есть кто, то чат-бот прошел проверку.

Да, есть экспериментаторы, которые шагнули дальше, предложили вариации Теста Тьюринга (например, проводить минимальный тест Тьюринга всего по одному слову тут уже фишка скорее в понимании психологии человека), но мы всё же остановились на классическом варианте.

История конкурса

Тест Тьюринга на русском языке мы проводили 3 раза.
На первом конкурсе, который прошёл в 2015 году на конференции StartupVillage, победил робот Соня Гусева. Её создатели команда Инобот добились того, что за человека Соню приняли 47% судей. Этот конкурс, организованный Наносемантикой и Фондом Сколково, был первым тестом Тьюринга для виртуальных роботов, говорящих на русском языке.

На втором мероприятии, которое мы проводили в 2016 году вместе с Microsoft и Сколково, призёром стал Иван Шумилов.

А на третьем Тесте Тьюринга в 2019 году победителем стал бот Волчица, ее приняли за человека 33,3% судей. Любопытно, что ботам удалось притвориться человеком в 58% случаев (в ~34/59%). Такой большой процент объясняется двумя причинами: по правилам Теста-2019, люди могли притворяться ботами, а диалог был ограничен 12 репликами. Поэтому третий тест был проще по сравнению с первыми двумя, но намного веселее и интереснее для наблюдателей. Что касается статистики, то в конкурсе приняли участие 270 пользователей, которые отправили более 13 000 сообщений в 600+ диалогах с пользователями и в 600+ диалогах с ботами.

Правила конкурса 2020

Наша команда дает возможность каждому выставить на конкурс своего чат-бота или попробовать угадать, кто бот, а кто человек, пообщавшись с несколькими собеседниками.

  • Место проведения. Мы проводим Тест Тьюринга в Telegram-канале @turing_test_competition_bot. Все, кому интересно, смогут зайти с 26 по 28 февраля 2021 года в телеграм-бота Теста Тьюринга в рабочее время (с 9.00 до 19.00), нажать на кнопку /start и начать диалог. После этого ему достанется случайный собеседник.

  • Регистрация по ссылке потребуется только для разработчиков, чтобы побороться за главный приз. Если же вы хотите поболтать с ботом, то просто переходите 26 февраля 2021 года в Telegram-канал @turing_test_competition_bot в назначенное время.
  • Требования к чат-ботам для разработчиков. Каждый участник может выставить на конкурс до 3-х ботов. После регистрации участникам на почту придет письмо с подтверждением регистрации. Также письмо будет содержать инструкцию по API, правила и просьбу выслать свой Webhook в ответном письме.

  • Выбор победителя. Лучшим мы признаем того бота, которого максимальное количество независимых экспертов признает человеком, а наградим призами 3 команды с самым достойными результатами.

  • Призы. 1-е место 150 тыс. рублей, 2-е место 100 тыс. рублей, 3-е место 50 тыс. рублей.


Этапы конкурса

10 ноября 2020 Объявление конкурса и правил. Старт регистрации заявок на участие.
20 ноября 2020 Запуск программной платформы конкурса. Тестирование.
04 декабря 2020 Открытие API для компаний-участников.
20 декабря 2020 Окончание регистрации команд-участников.
20 февраля 2021 Отсев команд, не подключившихся к API.
24 февраля 2021 Тестирование ботов. Тренинг разработчиков.
26 февраля 2021 Старт Теста Тьюринга.
1 марта 2021 Окончание Теста Тьюринга. Подведение итогов и награждение победителей.

В конце нашего теста, проходящего в телеграм-канале @turing_test_competition_bot, мы объявим победителей и продемонстрируем лучшие и интересные диалоги, которые после конкурса отберут наши судьи.

За всеми обновлениями по конкурсу вы можете следить на сайте мероприятия.

До встречи на конкурсе!
Подробнее..

Ускоряем разработку с помощью сервисов Azure создаем чат-боты и когнитивные службы средствами платформы

29.06.2020 12:20:00 | Автор: admin
Привет, Хабр! Сегодня мы расскажем, как решать с помощью Azure задачи, которые обычно требуют человеческого участия. Операторы тратят много времени, чтобы отвечать на одни и те же вопросы, обрабатывать телефонные звонки и текстовые сообщения. Чат-боты автоматизируют общение и распознавание и позволяют снизить нагрузку на людей. Также боты используются в Azure DevOps, где позволяют, например, утверждать релизы, управлять сборками просматривать, запускать и останавливать прямо из Slack или Microsoft Teams. По сути, чат-бот в чем-то напоминает CLI, только интерактивный, и позволяет разработчику не выходить из контекста обсуждения в чате.

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



Чат-боты и когнитивные сервисы: чем похожи и в чем различие


Для создания ботов в Microsoft Azure используются служба Azure Bot и платформа Bot Framework. Вместе они представляют собой набор ПО для сборки, тестирования, развертывания и администрирования ботов, который позволяет создавать из готовых модулей как простые, так и продвинутые системы общения с поддержкой речи, распознаванием естественного языка и другими возможностями.

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

  1. Сервисы быстрой разработки диалоговых интерфейсов (ботов).
  2. Готовые когнитивные сервисы ИИ под разные сценарии использования (распознавание образов, речи, база знаний и поиск).
  3. Сервисы создания и обучения моделей ИИ.

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



Когнитивные сервисы это еще один из способов коммуникации с пользователем, помогающий конвертировать произвольный запрос в четкую команду и передать его далее боту.

Таким образом, чат-боты это приложения для работы с запросами, а когнитивные сервисы это инструменты умного анализа запросов, которые запускаются отдельно, но к которым может обращаться чат-бот, становясь интеллектуальным.

Создание чат-ботов


Рекомендуемая схема проектирования бота в Azure выглядит следующим образом:



Для проектирования и разработки ботов в Azure используется Bot Framework. На GitHub есть примеры ботов, возможности фреймворка меняются, поэтому необходимо учитывать версию SDK, которая используется в ботах.

Фреймворк подразумевает несколько вариантов создания ботов: с помощью классического кода, инструментов командной строки или блок-схем. Последний вариант визуализирует диалоги, для этого можно использовать менеджер Bot Framework Composer. Он создавался на базе Bot Framework SDK как наглядный инструмент разработки, который междисциплинарные команды могли бы использовать для создания ботов.



Bot Framework Composer позволяет с помощью блоков создать структуру диалога, с которой будет работать бот. Дополнительно можно создавать триггеры, то есть ключевые слова, на которые бот будет реагировать во время диалога. К примеру, на слова оператор, кража или стоп и хватит.

В Bot Framework Composer можно создать сложно разветвленную систему диалогов, используя Adaptive Dialogs. Диалоги могут использовать как когнитивные сервисы, так и карточки событий (Adaptive Cards):



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

QnA Maker


Для создания простых ботов на основе корпоративных БД вопросов и ответов можно использовать когнитивный сервис QnA Maker. Реализованный в виде простого веб-визарда, он позволяет подать на вход ссылку на корпоративную базу знаний (FAQ Urls) или взять за основу базу документов в формате *.doc или *.pdf. После создания индекса бот будет сам подбирать наиболее подходящие ответы на вопросы пользователя.

С помощью QnAMaker можно также создавать цепочки уточняющих вопросов с автоматическим созданием кнопок, дополнять базу знаний метаданными и дообучать сервис в процессе использования.

Сервис может использоваться как чат-бот, реализующий только одну эту функцию, либо как часть сложного чат-бота, использующего, в зависимости от запроса, и другие сервисы ИИ или элементы Bot Framework.

Работа с другими когнитивными сервисами


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


Чаще всего в чат-ботах могут использоваться следующие:

  1. Распознавание текста.
  2. Распознавание определяемых разработчиком категорий образов Custom Vision Service (производственный кейс: распознавание, надел ли сотрудник каску, защитные очки или маску).
  3. Распознавание лиц (отличный кейс использования проверка, свое ли лицо разместил анкетируемый, или, скажем, фото собачки или фото человека другого пола).
  4. Распознавание речи.
  5. Анализ изображений.
  6. Перевод (все мы помним, сколько шума наделал синхронный перевод в Skype).
  7. Проверка орфографии и предложения по исправлению ошибок.

LUIS


Также для создания ботов может потребоваться LUIS (Language Understanding Intelligent Service). Задачи сервиса:
  • Определять, имеет ли смысл высказывание пользователя и необходима ли реакция бота.
  • Сокращать усилия по транскрипции речи (текста) пользователя в понятные боту команды.
  • Прогнозировать истинные пользовательские цели/намерения и извлекать ключевые сведения из фраз в диалоге.
  • Дать возможность разработчику осуществлять запуск бота с использованием всего нескольких примеров распознавания смысла и последующим дообучением бота в процессе работы.
  • Дать возможность разработчику использовать визуализацию для оценки качества транскрипции команд.
  • Помочь в поэтапных улучшениях распознавания истинных целей.

По сути, главная цель LUIS с определенной вероятностью понять, что имел в виду пользователь и конвертировать естественный запрос в стройную команду. Для распознавания значений запросов LUIS использует набор интентов (смыслов, намерений) и сущностей (либо предварительно настроенных разработчиками, либо взятых и заранее сформированных доменов некоторых готовых библиотек типовых фраз, подготовленных Microsoft).

Простой пример: у вас есть бот, выдающий прогноз погоды. Для него интентом будет перевод естественного запроса в действие запрос прогноза погоды, а сущностями время и место. Приведем схему работы интента CheckWeather для такого бота.

Интент Сущность Пример естественного запроса
CheckWeather {type: location, entity: moscow}
{type: builtin.datetimeV2.date, entity: future ," resolution ":" 2020-05-30 "}
Какая погода будет завтра в Москве
CheckWeather { type: date_range, entity: this weekend } Покажи мне прогноз для этих выходных


Для сочетания QnA Maker и LUIS можно использовать Dispatcher.



Когда вы работаете с QnA Maker и получаете запрос от пользователя, то система определяет, с каким процентом вероятности ответ из QnA подходит для запроса. Если вероятность высокая, пользователю просто выдается ответ из корпоративной базы знаний, если низкая запрос может быть отправлен в LUIS для уточнения. Использование Dispatcher позволяет не программировать эту логику, а автоматически определять эту грань разделения запросов и оперативно их распределять.

Тестирование и публикация бота


Для тестирования используется еще одно локальное приложение, Bot framework emulator. С помощью эмулятора можно общаться с ботом и проверять сообщения, которые он отправляет и получает. Эмулятор отображает сообщения так, как они будут выглядеть в интерфейсе веб-чата, и регистрирует запросы и ответы JSON при обмене сообщениями с ботом.

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


https://youtu.be/u7Gql-ClcVA?t=564

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

Тестирование прошло успешно, бот готов, и теперь его надо опубликовать и подключить каналы. Публикация осуществляется средствами Azure, а в качестве каналов можно использовать мессенджеры или социальные сети. Если нет нужного канала для входа данных, можно поискать его в соответствующем комьюнити на GitHab.

Также для создания полноценного чат-бота в качестве интерфейса общения с пользователем и когнитивными сервисами вам, конечно, понадобятся дополнительные сервисы Azure, такие как базы данных, serverless (Azure Functions), а также сервисы LogicApp и, возможно, Event Grid.



Оценка и аналитика


Для оценки взаимодействия с пользователями можно использовать как встроенную аналитику Azure Bot Service, так и специальный сервис Application Insights.

В результате можно собирать информацию по следующим критериям:

  • Сколько пользователей получили доступ к боту из различных каналов за выбранный промежуток времени.
  • Сколько пользователей, отправивших одно сообщение, вернулись позже и отправили еще одно.
  • Сколько действий было отправлено и получено с помощью каждого канала за указанный интервал времени.

При помощи Application Insights можно мониторить любые приложения в Azure и, в частности, чат-боты, получая дополнительные данные о поведении пользователей, нагрузках и реакции чат-бота. Нужно отметить, что сервис Application Insights имеет свой интерфейс на портале Azure.

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



Всем спасибо за внимание! В этой статье мы использовали материал из вебинара архитектора Microsoft Azure, Анна Фенюшиной Когда люди не успевают. Как на 100% использовать чат-боты и когнитивные сервисы для автоматизации рутинных процессов, на котором мы наглядно показывали, что такое чат-боты в Azure и каковы сценарии их применения, а также демонстрировали, как за 15 минут создать бота в QnA Maker и как расшифровывается структура запросов в LUIS.

Мы сделали этот вебинар в рамках онлайн-марафона для разработчиков Dev Bootcamp. На нем речь шла о продуктах, которые ускоряют разработку и снимают часть рутинной нагрузки с сотрудников компании с помощью инструментов автоматизации и готовых преднастроенных модулей Azure. Записи других вебинаров, которые вошли в марафон, доступны по ссылкам:

Подробнее..

Из песочницы Как я подключил официальный бизнес API WhatsApp через Twilio

01.11.2020 06:21:35 | Автор: admin
Как известно, WhatsApp не так давно начал предоставлять доступ к своему официальному бизнес API, который так необходим для создания чат-ботов для этого мессенджера белыми методами.

Но сделать это напрямую большинству компаний по прежнему не под силу, а только через крупных партнеров Facebook, которые в данном случае выступают в роли посредников.

Одним из таких доступных партнеров является американская компания Twilio. Самое основное их преимущество на мой взгляд, это невысокая стоимость использования WhatsApp Business API.

Я подключил через Twilio официальный бизнес API WhatsApp и сейчас подробно расскажу, как это сделать.

WhatsApp Messenger

Основным условием Facebook является наличие зарегистрированного юридического лица, например ООО или ИП, на физическое лицо доступ получить не получится.

Итак, начнем двигаться по шагам.

1. Создание аккаунта в Facebook Business Manager


Войдем в свой личный аккаунт в Facebook и создадим аккаунт Business Manager, для чего перейдем по ссылке business.facebook.com/overview и нажмем кнопку СОЗДАТЬ АККАУНТ, откроется окно для ввода данных компании.

Создание аккаунта Business Manager в Facebook

Согласно подсказкам над полями, вводим название компании, имя и фамилию, e-mail и нажимаем кнопку Отправить.

В следующем окне введем информацию о компании и нажмем кнопку Отправить.

Добавление информации о компании при создании аккаунта в Facebook Business Manager

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

Необходимость подтверждения адреса электронной почты при создании аккаунта в Facebook Business Manager

Зайдем в почту и нажмем на кнопку Подтвердить из письма.

Подтверждение адреса электронной почты при создании аккаунта в Facebook Business Manager

2. Регистрация аккаунта в Twilio


Зарегистрируем аккаунт в Twilio по ссылке twilio.com/try-twilio. Сделать это совсем не сложно, регистрация бесплатная и не требует данных банковской карты, нужно только ввести имя, фамилию, e-mail и придумать пароль.

Регистрация аккаунта в Twilio

Подтверждаем e-mail.

Подтверждение e-mail при создании аккаунта в Twilio.

Подтверждаем номер телефона.

Подтверждение телефона при создании аккаунта в Twilio

3. Запрос в Twilio на активацию возможности добавления WhatsApp отправителей


Подготовим и отправим запрос в Twilio на активацию возможности добавления WhatsApp отправителей, для чего перейдем в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и нажмем кнопку Sign Up to Receive Updates.

Открытие формы запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Откроется форма запроса на активацию возможности добавления WhatsApp отправителей в Twilio. Заполняем поля формы данными, которые указывались выше, при создании аккаунта в Facebook Business Manager:

First Name Имя (латиницей);

Last Name Фамилия (латиницей);

Phone Number Номер телефона компании (указанный в Facebook Business Manager);

Email Address Адрес электронной почты компании (указанный в Facebook Business Manager);

Company Name Название компании (латиницей, указанное в Facebook Business Manager);

Company Website Веб-сайт компании (указанный в Facebook Business Manager);

Company HQ Country Страна регистрации компании (указанная в Facebook Business Manager);

Twilio Account SID Идентификатор аккаунта Twilio скопировать из поля ACCOUNT SID на странице www.twilio.com/console;

Twilio Account SID

Facebook Business Manager ID Идентификатор созданного аккаунта в Facebook Business Manager скопировать из поля Идентификатор Бизнес-менеджера: на странице business.facebook.com/settings/info (Facebook Business Manager -> Настройки компании -> Информация о компании);

Facebook Business Manager ID

I've completed Facebook Business Verification ставим No, если в Facebook Business Manager -> Настройки компании -> Информация о компании -> Статус подтверждения компании -> указано Не подтверждена или Yes, если Подтверждена;

Company Vertical выбираем из списка направление деятельности компании;

What is your use case? выбираем из списка, для чего будет использоваться WhatsApp: Notifications (Оповещения), Customer Support (Поддержка клиентов), 2FA or User Verification (Двухфакторная аутентификация или верификация пользователей);

Which regions are you sending messages to? В какие регионы будут отправляться сообщения (выбираем из списка Global);

How many messages are you sending per month during the first year? Сколько сообщений будет отправляться в месяц в течение первого года (выбираем из списка нужный диапазон);

I wish to provision this account with a third party vendor Будет ли предоставляться эта учетная запись стороннему поставщику (выбираем No);

Assign approval to alternate Account SID (Optional) Назначить утверждение альтернативному SID учетной записи (необязательно) (ничего не вводим, оставляем поле пустым);

I understand Twilio can modify my SMS/Voice URL and that approval is only for the brand submitted. Я понимаю, что Twilio может изменять мой URL-адрес SMS / голосового сообщения, и это одобрение предназначено только для отправленного бренда (соглашаемся и выбираем Yes).

Заполняем поля формы запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Для отправки запроса, нажимаем кнопку Request Now. После успешной отправки появится соответствующее уведомление: Спасибо за Ваш интерес. Мы будем держать Вас в курсе по мере открытия доступа..

Уведомление об успешной отправке запроса на активацию возможности добавления WhatsApp отправителей в Twilio

На почту получаем вот такое письмо:

Письмо от Twilio после отправки запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Переводим сообщение на русский:

Перевод на русский письма от Twilio после отправки запроса на активацию возможности добавления WhatsApp отправителей в Twilio.

Теперь ждем 3-4 недели ответ от Twilio, как указано в письме.

Через 4 недели получаем ответ от Twilio, что теперь можно добавить WhatsApp отправителя и продолжить процесс регистрации:

Ответ от Twilio на запрос по активации возможности добавления WhatsApp отправителей в Twilio

Переводим сообщение на русский:

Перевод на русский ответа от Twilio на запрос по активации возможности добавления WhatsApp отправителей в Twilio

4. Upgrade аккаунта в Twilio


Для продолжения, обязательно нужно перевести проект Twilio из пробного (Trial) в рабочий (Upgrade), для чего потребуется пополнить баланс. На пробном аккаунте Twilio не получится зарегистрировать WhatsApp отправителя. Минимальная сумма пополнения 20$ (двадцать долларов). Потом эти деньги можно будет тратить на аренду телефонных номеров для WhatsApp отправителей и оплату входящих и исходящих сообщений в WhatsApp. Аренда телефонного номера стоит от 1$ (один доллар) в месяц. Входящие и исходящие сообщения в WhatsApp 0.005$ (пол цента) за 1 сообщение.

Для апгрейда аккаунта перейдем по ссылке www.twilio.com/console/billing/upgrade.

Заполним латиницей поля в разделе Add Company Address.

Пополнение баланса Twilio: Добавление адреса компании

Нажмем кнопку Validate Address для подтверждения адреса. В открывшемся окне нажмем кнопку Use This Address.

Пополнение баланса Twilio: Валидация адреса компании

Аналогично, заполним поля в разделе Add Billing Address такими же данными.

Пополнение баланса Twilio: Добавление адреса компании для выставления счетов

И так же подтвердим адрес.

Пополнение баланса Twilio: Валидация адреса компании для выставления счетов

В разделе Add Payment Information and Funds введем данные банковской карты и нажмем кнопку Upgrade Account для проведения оплаты.

Пополнение баланса Twilio: добавление данных о способе оплаты и проведение платежа

После успешной оплаты увидим соответствующее уведомление.

Сообщение об успешной оплате в Twilio

5. Покупка телефонного номера в Twilio для создания WhatsApp отправителя


Российских номеров в Twilio к сожалению нет, но на практике это оказалось не так и важно. Зачастую пользователи даже и не смотрят на номер, когда пишут в WhatsApp.

Для покупки телефонного номера Twilio перейдем по ссылке www.twilio.com/console/phone-numbers/search, выберем страну в поле COUNTRY, по желанию можно выставить и другие дополнительные параметры поиска, и нажмем кнопку Search.

Подбор телефонного номера в Twilio для аренды

Подбор телефонного номера в Twilio для аренды

Выберем нужный телефонный номер и нажмем кнопку Buy.

В следующем окне подтвердим покупку.

Подтверждение покупки телефонного номера Twilio

6. Регистрация WhatsApp отправителя в Twilio


Для регистрации WhatsApp отправителя в Twilio перейдем в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и нажмем иконку плюс.

Добавление отправителя WhatsApp в Twilio

Пока создадим WhatsApp отправителя только для ответов на сообщения пользователей, то есть сами первыми писать не будем. Создание шаблонов для возможности написать пользователю первым будем рассматривать в следующих публикациях.

Заполним открывшуюся форму:

Select a Number (Required) Выберем номер телефона, который мы купили в Twilio выше.

Business Display Name (Required) Отображаемое имя, которое должно соотносится с вашей компанией в соответствии с требованиями Facebook. Можно указать просто название компании, которое мы вводили при регистрации аккаунта в Facebook Business Manager.

Company Address (Optional) Адрес компании (можно не указывать).

Company Email (Optional) Электронный адрес компании (можно не указывать).

Website (Optional) Веб-сайт компании (можно не указывать).

Link to Logo (Optional) Ссылка на логотип компании (можно не указывать). Минимальный размер изображения 640x640 px в форматах PNG или JPG (JPG рекомендуется), фон не должен быть прозрачным.

Check if profile is for a client. I've read the third party guidelines Эту галочку не ставим.

Форма регистрации WhatsApp отправителя в Twilio

Для отправки нажмем кнопку Submit Request, которая станет активной после после заполнения обязательных полей формы.

В списке отправителей появится запись со статусом Waiting for Approval from WhatsApp, означающая что теперь нужно подождать подтверждения со стороны WhatsApp.

Статус WhatsApp отправителя Waiting for Approval from WhatsApp в Twilio

И получаем письмо от Twilio, что они рассматривают наш запрос, и свяжутся с нами в ближайшее время.

Письмо от Twilio после отправки формы регистрации WhatsApp отправителя

Ждем ответа от Twilio.

7. Подтверждение компании в Facebook Business Manager


Примерно через полтора часа получаем от Twilio еще одно письмо, что в Facebook Business Manager необходимо принять запрос от Twilio, чтобы предоставить им разрешение на создание учетной записи WhatsApp Business. Для этого переходим по ссылке business.facebook.com/settings/requests/received_requests (Facebook Business Manager -> Настройки компании -> Запросы -> Полученные) и нажать кнопку Одобрить.

Принятие запроса от Twilio в Facebook Business Manager

После принятия запроса от Twilio, необходимо подтвердить компанию в Facebook Business Manager. Для этого переходим по ссылке business.facebook.com/settings/security (Facebook Business Manager -> Настройки компании -> Центр безопасности) и в разделе Подтверждение компании нажимаем кнопку Начать подтверждение, которая станет активной после принятия запроса от Twilio.

Начать подтверждение компании в Facebook Business Manager

С официальной информацией от Facebook о подтверждении компании можно ознакомиться по ссылке: www.facebook.com/business/help/2058515294227817?id=180505742745347.

На первом шаге подтверждения введем данные нашей компании:

Юридическое название компании название компании, как в указано в документах на регистрацию компании.

Страна страна регистрации компании.

Адрес (улица, дома) улица и номер дома юридического адреса компании, как в указано в документах на регистрацию компании.

Адрес 2/Населенный пункт вводим, если имеется.

Город город юридического адреса компании, как в указано в документах на регистрацию компании.

Штат/провинция/регион регион юридического адреса компании, как в указано в документах на регистрацию компании.

Почтовый индекс почтовый индекс юридического адреса компании, как в указано в документах на регистрацию компании.

Номер телефона компании номер телефона, который принадлежит данному юридическому лицу (должны быть подтверждающие документы: договор, счета на оплату за телефон и т.п.).

Сайт адрес веб-сайта компании (домен сайта должен совпадать с доменом электронного адреса компании).

Подтверждение компании в Facebook Business Manager. Шаг 1 - ввод данных компании.

На втором шаге подтверждения компании необходимо подтвердить юридическое название компании.

Для этого нужно загрузить документы из списка:

  • Лицензия на ведение коммерческой деятельности (если имеется);
  • Свидетельства о регистрации или учредительные договоры (ОГРН или учредительный договор);
  • Свидетельство о регистрации налогоплательщика (ИНН).

Я загрузил сканы ОГРН и ИНН компании.

Подтверждение компании в Facebook Business Manager. Шаг 2 - подтверждение юридического названия компании.

На третьем шаге подтверждения компании необходимо подтвердить юридический адрес и номер телефона компании.

Для этого нужно загрузить документы из списка:

  • Счет за коммунальные услуги, например электроэнергию или телефон;
  • Справка из банка, на которой указан адрес;
  • Лицензия на ведение коммерческой деятельности с адресом или телефоном компании (если имеется).

Я загрузил сканы: договора на аренду офисного помещения по юридическому адресу, информационного письма об учете в Статрегистре Росстата, счета на оплату за телефонный номер от оператора связи.

Подтверждение компании в Facebook Business Manager. Шаг 3 - подтверждение юридического адреса и номера телефона компании.

На четвертом шаге необходимо получить и ввести код подтверждения.

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

Вводим цифры кода подтверждения и нажимаем кнопку Отправить.

Ждем подтверждения от Facebook, как нам пишут в письме Twilio, это может занять 4-7 рабочих дней.

Мы получили подтверждение компании от Facebook в течении 1-го рабочего дня.

Письмо от Facebook с уведомлением, что компания успешно подтверждена.

Сообщение в Facebook Business Manager, что компания успешно подтверждена.

Зеленая иконка в Центре безопасности в Facebook Business Manager, что компания подтверждена.

Зеленая галочка в Информации о компании в Facebook Business Manager, что компания подтверждена.

Ждем завершения регистрации WhatsApp отправителя от Twilio.

8. Завершение регистрации WhatsApp отправителя в Twilio


Через 4 часа получаем письмо от Twilio, что они проверили наш бизнес-профиль в WhatsApp и отправили на рассмотрение отображаемое название нашей компании. Срок выполнения проверки отображаемого имени обычно составляет 2448 часов.

Письмо от Twilio, что они проверили наш бизнес-профиль в WhatsApp.

Переводим сообщение на русский:

Перевод на русский письма от Twilio, что они проверили наш бизнес-профиль в WhatsApp.

Ждем ответа от Twilio 24-48 часов, как указано в письме.

Примерно через 30 часов получаем письмо от Twilio, что наш профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Письмо от Twilio, что профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Переводим сообщение на русский:

Перевод на русский письма от Twilio, что профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Заходим в аккаунт Twilio, в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и видим, что у записи сменился статус на Approved (Одобрено).

WhatsApp отправитель одобрен в Twilio и готов к работе.

Итог


На этом подключение официального бизнес API WhatsApp через Twilio успешно завершено. По времени, со всеми ожиданиями, у меня это заняло примерно один месяц. Теперь его можно использовать для интеграции с различными сервисами для коммуникации с пользователями и для создания чат-ботов.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru