Пошаговое руководство по созданию первого (голосового) бота с помощью Microsoft Power Virtual Agent

Пошаговое руководство по созданию первого (голосового) бота с помощью Microsoft Power Virtual Agent

21 апреля 2023 г.

Пошаговое руководство  —  Power Virtual Agent за один день

Power Virtual Agent является членом Microsoft Power Platform.

* Power Virtual Agents (PVA) — это гибкие чат-боты с искусственным интеллектом (ИИ). * PVA использует управляемый графический интерфейс без кода, поэтому вы можете быстро создавать своих виртуальных агентов и надежных чат-ботов, не требуя навыков разработки или специалистов по данным. * Вы можете использовать сотни готовых соединителей (через Power Automate) для подключения PVA к вашим повседневным товарам и услугам. * С помощью PVA вы можете отслеживать и постоянно улучшать производительность чат-бота с помощью информации, основанной на искусственном интеллекте и данных, представленной на простой для понимания приборной панели. * С помощью PVA вы можете интегрировать существующие боты и навыки или интегрировать ботов PVA в качестве навыков в существующий бот.

Об этом руководстве

Это руководство является моим "Power Virtual Agent in a Day" – скриптом практических упражнений и хорошей отправной точкой для изучения PVA. Представьте, что вы не только предоставляете своим клиентам текстовый чат-бот на своем веб-сайте, но с помощью этого руководства вы можете обслуживать их по своей телефонной линии до того, как они доберутся до вашего агента контакт-центра. Вы можете дать им ответы на их вопросы, не заставляя их ждать бесплатного агента контакт-центра. Вы можете сделать для них больше с меньшими затратами.

https://twitter.com/satyanadella/status/1580252407472488448?embedable=true

Содержание

  • Введите себя в курс дела
  • Создайте своего первого чат-бота
  • Подготовьте основы
  • Добавить несколько тем QnA
  • Добавить замену IVR с условиями и пользовательскими объектами
  • Необязательно: отправьте адаптивную карточку в канал Microsoft Teams
  • Необязательно: интегрируйте бота в веб-сайт.
  • Настройте своего бота в Audiocodes Voice.AI
  • Необязательно: система обратной связи AI Builder с анализом настроений.
  • Дальнейшие шаги: основы управления жизненным циклом приложений
  • Начните с CI/CD и экспортируйте решение в репозиторий GitHub
  • Дальнейшие шаги: основы аналитики
  • Объекты

Приведите себя в порядок

Прежде чем начать работу с Power Virtual Agent, убедитесь, что выполнены предварительные условия. Использование пробной подписки или плана сообщества — отличное начало.

* Пробная версия Power Virtual Agent

или

  • План разработчика Power Platform (предоставляет вам дополнительные среды и доступ ко всей платформе Power Platform)
  • План разработчика Power Virtual Agent

Используйте GitHub для управления жизненным циклом приложений и AudioCodes Voice.AI Connect Cloud для дайте вашему боту голос; рассмотрите возможность использования Voice AI Connect Enterprise для производства.

Создайте своего первого чат-бота

Запустите холст редактирования Power Virtual Agents и создайте своего первого чат-бота.

Create your first chatbot

Сделайте своего первого бота немного чище и подготовьте основы

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

Удалить «Урок 3»

Delete “Lesson 3”

Затем мы переходим к теме «Приветствия» и меняем поток, изменяя первое сообщение.

Modify greeting

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

Затем нам нужно создать новую тему «Подтвержденный успех» с названием «Успех».

Create a new Question node and name the response as “answer”

Can I help with anything else?

С ответами:

Yes


No

Create a negative condition

as-well-as a positive condition

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

Replace the last node

Затем создайте новую тему «transfer_agent_pva». Эта тема инициирует перевод звонка с бота на человека. Есть несколько способов сделать это.

Здесь мы будем работать со сторонним решением «Voice AI Connect» от AudioCodes.

Voice AI Connect доступен в двух вариантах:

  • Облачное решение для тестирования и разработки. Это то, что мы используем в этом мастер-классе. Вы можете использовать свой SIP Trunk & Телефонные номера или купите номера в AudioCodes.

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

Create a “Message” and a “transfer to agent” node

Please hold the line; you will be connected to a human.

{
"activityParams": {
"transferTarget": "tel:+49000000000"
}
}

Наконец, измените тему «Эскалация», чтобы использовать только что созданную тему «transfer_agent_pva» в качестве конечного узла.

Remove message node and add “transfer_agent_pva” as end node

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

Добавить несколько тем QnA

Чтобы дать вам представление о том, как создавать темы для стандартных вопросов, мы изменили «Урок 1» и «Урок 2». Изменение экономит часть работы, так как вам не нужно начинать с пустого потока.

Стандартный диалог QnA (простой)

Предположим, мы хотим ответить по телефону на вопросы о часах работы.

Открываем «Урок 1» и переименовываем его в «Часы работы»

modify both message nodes

Мы модифицируем оба узла сообщений, чтобы отразить это.

I'm happy to help with our daily open hours.

The Munich and Stuttgart hours are:
Mon-Fri: 9am to 6pm, Saturday: 10am to 4pm, Sunday: Closed   

The Frankfurt hours are: Mon-Fri: 
9am to 6pm, Saturday: 10am to 4pm., Sunday: Closed

Стандартный диалог QnA (расширенный — с переменной)

Предположим, мы хотим ответить по телефону на вопросы о местонахождении нашего магазина.

Modify nodes

Мы переименовываем «Урок 2» в «StoreLocation» и заменяем параметры на

Which location are you interested in? We are in Frankfurt, Stuttgart or Munich.

Stuttgart

Frankfurt

Munich

и изменить ответ в каждом условии (узел сообщения)

Our <variable.pva_StoreLocation> store located in Street Number, Postcode Stuttgart

Our <variable.pva_StoreLocation> store located in Street Number, Postcode Frankfurt

Our <variable.pva_StoreLocation> store located in Street Number, Postcode Munich

Добавить замену IVR (система интерактивного голосового ответа) с условиями и пользовательскими объектами

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

Создать пользовательский объект

Create a Custom Entity “IVRTargets” as closed lis

Создайте три элемента с тремя синонимами в каждом.

<цитата>

Цель передачи 1

Товар

human resources

с синонимами

personnel

workforce management

administration of human resources

<цитата>

Перенести цель 2

Товар

sales

с синонимами

sales department

shop

store

<цитата>

Цель передачи 3

Товар

support

с синонимами

technical helpline

service department

help

Создайте AI Attendant как новую тему

Переименуйте «Урок 4» в «IVRReplacement»

Change trigger phrases

Please connect me to sales
I want to speak with sales
I want to talk to sales
Please connect me to supporr
I want to speak with support
I want to talk to support
Please connect me to human resources
I want to speak with human resources
I want to talk to human resources

В качестве коммутатора используем созданную кастомную сущность «IVRTargets»; если нет идентифицируемой цели, мы направляемся к стандартной точке эскалации для людей «Эскалация» с перенаправлением на «transfer_agent_pva».

Change the question node, use custom entity “IVRTargets"

Change condition for human resources

Change condition for sales

Change condition for support

Change condition for others

Add a phone number to each target as a private message to agent

{
"activityParams": {
"transferTarget": "tel:+49000000000"
}
}

Необязательно: отправьте адаптивную карточку в канал Microsoft Teams

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

Добавьте вопросы в тему «IVRReplacement», например, запросите причину перевода и номер клиента.

Add questions

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

additional flow

Сам процесс прост.

Add “Post adaptive card in a chat or channel” action

Пример адаптивной карты может выглядеть так, вам нужно отредактировать части в «<>».

{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4",
    "body": [
        {
            "type": "TextBlock",
            "text": "Incoming Call",
            "wrap": true,
            "style": "heading"
        },
        {
            "type": "FactSet",
            "facts": [
                {
                    "title": "Customer Number",
                    "value": "<your variable customer number>"
                },
                {
                    "title": "Call Reason",
                    "value": "<your variable reason>"
                }
            ]
        }
    ],
    "actions": [
        {
            "type": "Action.OpenUrl",
            "title": "Open CRM",
             "url": "<your link to your crm systems record matching customer number>"
        }
    ]
}

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

example message

Необязательно: интегрируйте бота в веб-сайт

Чтобы интегрировать бота в свой веб-сайт, рекомендуется использовать компонент веб-чата Microsoft bot framework. . Поскольку Microsoft создала компонент ботов «Azure Bot Service», мы должны немного изменить код интеграции, чтобы он работал с Power Virtual Agent.

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

            var BOT_ID = "#{botidtoken}#"; 
            var theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID;

вы можете найти идентификатор в разделе «Настройки/Каналы/Пользовательский веб-сайт» (красная часть между «/bots/new_bot_» и «/webchat»)

Retrieve the bot ID

Рабочий пример можно найти на GitHub. Пример предварительно заполнен параметрами конфигурации; см. подробные сведения о параметрах конфигурации в defaultStyleOptions.ts. файл в репозитории компонента веб-чата Microsoft.

example website

Настройте своего бота в AudioCodes Voice.AI

Зарегистрируйтесь в «Voice.Ai Connect Cloud» и получите номер телефона или настройте свою SIP-магистраль, следуя документация.

Дадим боту голос. Получите секрет вашего веб-канала (в PVA: Настройки/Безопасность/Безопасность веб-канала)

retrieve your Web channel Secret

и перейдите в интерфейс конфигурации Voice.AI.

Конфигурация бота

Добавить бота

Add details for your bot.

Select TTS, STT and Voice Font

Настроить маршрутизацию

Figure 30: configure routing “inbound”

Рисунок 30. Настройка маршрутизации "входящий"

configure routing “transfer”

Необязательно: Система обратной связи AI Builder с анализом настроений

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

Если вы работаете в пробной среде, вам будет предложено подать заявку на пробную версию AI Builder во время создания потока. Это не связано с затратами.

С Power Virtual Agents варианты использования безграничны и основаны на требованиях, и мы можем продолжать раздвигать границы его возможностей. Интегрируя Power Virtual Agents с Power Automate и AI Builder, мы можем значительно расширить горизонты его использования. Здесь мы увидим, как использовать конструктор ИИ и использовать анализ настроений для анализа текстовой обратной связи от пользователя.

Создайте новую тему "Отзывы

create trigger phrases

и добавьте 2 узла,

one message node to greet the User and a Question node to get Feedback

Welcome to our Feedback System.

How was your experience with this virtual assistant?

Create a new Power Automate Flow with input and output and later a message to display the output

Figure 35: initialize a variable and analyse the sentiment

initialize a variable, set it to “overall text sentiment” and a switch

create a positive case with Response to User

create a negative case with Response to User

create a neutral/default case with Response to User

 return the Response to PVA

Следующие шаги: основы управления жизненным циклом приложений

Как сделать Virtual Power Agent более безопасным

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

Создайте учетную запись субъекта-службы

Чтобы создать учетную запись субъекта-службы, нам нужно настроить регистрацию приложения в Azure Active Directory.

На портале Azure выберите «Azure Active Directory» на левой панели, выберите «Регистрация приложений» и нажмите «Новая регистрация».

На странице "Зарегистрировать приложение" введите регистрационную информацию вашего приложения:

* В разделе «Имя» введите значимое имя приложения, например «Ботплатформа». * Выберите опцию «Учетные записи в любом организационном каталоге» в разделе «Поддерживаемые типы учетных записей». * Нажмите «Зарегистрироваться», чтобы создать приложение

При создании регистрации приложения запишите и сохраните «Идентификатор каталога (клиента)» и «Идентификатор приложения (клиента)» приложения.

На панели навигации страницы «Обзор» выберите «Разрешения API».

* Выберите «+ Добавить разрешение» и на вкладке «API Microsoft» выберите «Dynamics CRM». * В форме «Запросить разрешения API» выберите «Делегированные разрешения», отметьте «user_impersonation», а затем выберите «Добавить разрешения». * Вернувшись в форму «Запросить разрешения API», выберите «Служба времени выполнения PowerApps», выберите «Делегированные разрешения», отметьте «user_impersonation», а затем снова выберите «Добавить разрешения». * В третий раз в форме «Запросить разрешения API» выберите «API, которые использует моя организация». Найдите «PowerApps-Advisor» с помощью поля поиска и выберите «PowerApps-Advisor» в списке результатов. Выберите «Делегированные разрешения», отметьте права «Анализ.Все», а затем в последний раз выберите «Добавить разрешения».

Далее приступайте к созданию секрета клиента. На панели навигации выберите «Сертификаты и сертификаты». секреты»:

  • Под пунктом "Секреты клиента" выберите "+ Новый секрет клиента".
  • В форме введите описание и выберите «Добавить». Запишите секретную строку; вы не сможете снова просмотреть секрет после того, как покинете форму.

Создать пользователя приложения

Для развертывания решений в рамках конвейера CI/CD "пользователю приложения" необходим доступ к среде. «Пользователь приложения» представляет собой нелицензированного пользователя, который прошел проверку подлинности с помощью регистрации приложения, выполненной на предыдущих шагах.

* Перейдите в свою среду в Центре администрирования Power Platform. * Перейдите в "Настройки" > "Пользователи + разрешения" > «Пользователь приложения». * Выберите «+ новый пользователь приложения». В правой части экрана откроется панель. * Выберите «+ Добавить приложение». Отображается список всех регистраций приложений в вашем клиенте Azure AD. Перейдите к выбору имени приложения из списка зарегистрированных приложений. * В разделе «Бизнес-подразделение» в раскрывающемся списке выберите свою среду в качестве бизнес-подразделения. * В разделе «Роли безопасности» выберите «Системный администратор», а затем выберите «Создать». Это позволит субъекту-службе получить доступ к среде.

С помощью «Регистрация приложения» и «Пользователь приложения» мы можем использовать «Действия GitHub» для управления нашими средами. Да, среды, поскольку нам нужно несколько, чтобы работать безопасно и профессионально. Зарегистрируйте этого пользователя приложения во всех средах, которые вы развертываете (разработка, подготовка, тестирование и производство).

Создать решение

Решение — это своего рода «контейнер приложения». В этой «коробке» вы найдете все, что связано с вашим проектом. В решении вы найдете всех своих ботов, потоки, ссылки на коннекторы и другие материалы, созданные разработчиком.

* Перейдите на https://make.powerapps.com и войдите, используя свои учетные данные. Щелкните раскрывающийся список выбора среды в заголовке и выберите среду разработки. * Щелкните область «Решения» в левой навигационной панели и нажмите кнопку «Новое решение», чтобы создать новое решение. * В появившейся боковой панели введите имя приложения и нажмите «Добавить издателя». * На панели нового решения выберите только что созданного издателя и нажмите «Создать», чтобы создать новое неуправляемое решение в среде. * В списке решений выберите только что созданное решение и нажмите кнопку «Редактировать». * Ваше новое решение будет пустым, и вам нужно добавить в него компоненты. Нажмите «+ Добавить существующий» и выберите все элементы, относящиеся к вашей платформе бота.

Начните с CI/CD и экспортируйте решение в репозиторий GitHub

Действия GitHub могут экспортировать среду вашего бота (как неуправляемое решение) из среды разработки в репозиторий GitHub.

Создайте новый секрет для аутентификации субъекта-службы

  • Перейдите в свой репозиторий и нажмите "Настройки", затем разверните "Секреты" и нажмите "Действия".
  • На странице "Секреты" назовите секрет "POWERPLATFORMSPN". Используйте секрет клиента из регистрации приложения, созданной в Azure Active Directory, и введите его в поле «Значение», а затем выберите «Добавить секрет». Секрет клиента будет указан в файлах YML, используемых в ваших действиях на Github.

Создайте действие GitHub для экспорта решения

Замените имя решения в примере на имя вашего решения.

name: export-and-branch-solution-universal
# Export solution from DEV environment
# unpack it and prepare, commit and push a git branch with the changes

on:
  workflow_dispatch:
    inputs:
      # Change this value
      solution_name:
        description: 'name of the solution to worked on from Power Platform'
        required: true
        default: DemoEnvironment
       #Do Not change these values
      solution_exported_folder:
        description: 'folder name for staging the exported solution *do not change*'
        required: true
        default: out/exported/
      solution_folder:
        description: 'staging the unpacked solution folder before check-in *do not change*'
        required: true
        default: out/solutions/
      solution_target_folder: 
       description: 'folder name to be created and checked in *do not change*'
       required: true
       default: solutions/
      DEV_ENVIRONMENT_URL:
        description: 'Development environment url.'
        type: string
        required: true
      CLIENT_ID:
        description: 'Client ID.'
        type: string
        required: true
      TENANT_ID:
        description: 'Tenant ID'
        type: string
        required: true

jobs:
  export-from-dev:
    runs-on: windows-latest
    # or you can say runs-on: ubuntu-latest
    env:
      RUNNER_DEBUG: 1

    steps:
    - uses: actions/checkout@v2
      with:
        lfs: true

    - name: who-am-i action
      uses: microsoft/powerplatform-actions/who-am-i@0.4.0
      with:
        environment-url: ${{inputs.DEV_ENVIRONMENT_URL}}
        app-id: ${{inputs.CLIENT_ID}}
        client-secret: ${{ secrets.PowerPlatformSPN }}
        tenant-id: ${{inputs.TENANT_ID}}

    - name: export-solution action
      uses: microsoft/powerplatform-actions/export-solution@0.4.0
      with:
        environment-url: ${{inputs.DEV_ENVIRONMENT_URL}}
        app-id: ${{inputs.CLIENT_ID}}
        client-secret: ${{ secrets.PowerPlatformSPN }}
        tenant-id: ${{inputs.TENANT_ID}}
        solution-name: ${{ github.event.inputs.solution_name }}
        solution-output-file: ${{ github.event.inputs.solution_exported_folder}}/${{ github.event.inputs.solution_name }}.zip

    - name: unpack-solution action
      uses: microsoft/powerplatform-actions/unpack-solution@0.4.0
      with:
        solution-file: ${{ github.event.inputs.solution_exported_folder}}/${{ github.event.inputs.solution_name }}.zip
        solution-folder: ${{ github.event.inputs.solution_folder}}/${{ github.event.inputs.solution_name }}
        solution-type: 'Unmanaged'
        overwrite-files: true

    - name: branch-solution, prepare it for a PullRequest
      uses: microsoft/powerplatform-actions/branch-solution@v0
      with:
        solution-folder: ${{ github.event.inputs.solution_folder}}/${{ github.event.inputs.solution_name }}
        solution-target-folder: ${{ github.event.inputs.solution_target_folder}}/${{ github.event.inputs.solution_name }}
        repo-token: ${{ secrets.GITHUB_TOKEN }}
        allow-empty-commit: true

Используйте действие Github

Действие запускается вручную — событие: workflow_dispatch. Перейдите в «Действия», выберите рабочий процесс в меню слева, нажмите «Запустить рабочий процесс», параметры менять не нужно, а затем нажмите зеленую кнопку «Запустить рабочий процесс».

Проверьте импорт

и создайте запрос на слияние в основную ветку. Если вы впервые используете эту функцию, вы можете переименовать импортированное решение в «основное». Если это первый + x раз, создайте запрос на слияние в основную ветку.

Что дальше

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

Ссылка на мой репозиторий GitHub — ALM для PVA

Дальнейшие шаги: основы Google Analytics

Тематический список ссылок

Активы

Загрузите копию бота из этой статьи в качестве решения с GitHub.

файл-решения


:::информация Также опубликовано здесь

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE