Построение интеллектуального чат‑бота для предварительной консультации экстрасенса на Microsoft Azure

Построим умного бота на Azure для приема заявок и предконсультаций. Сэкономите время экстрасенсов и клиентов с интеграцией в Teams, Telegram и веб.

Цель статьи – показать, как с помощью сервисов Microsoft Azure построить интеллектуального чат‑бота, который будет принимать заявки, проводить предварительные консультации и собирать информацию перед тем, как клиент перейдёт к живому экстрасенсу․ Мы разберём весь цикл: от планирования и выбора технологий до развертывания, тестирования и интеграции с популярными каналами (веб‑сайт, Microsoft Teams, Outlook, Telegram)․


Почему именно Azure?

  • Полный набор AI‑инструментов: Azure Bot Service, QnA Maker, LUIS, Azure OpenAI․
  • Гибкая интеграция с Microsoft 365: Outlook, Teams, SharePoint – всё в одной экосистеме․
  • Безопасность и соответствие требованиям: GDPR, HIPAA, ISO‑27001 – важные аспекты при работе с персональными данными клиентов․
  • Масштабируемость: автоматическое масштабирование через Azure App Service и Azure Functions․
  • Низкая стоимость входа: бесплатный тариф Azure Bot Service + 30‑дневный пробный период Azure OpenAI․

Общая архитектура решения

Ниже представлена типовая схема, которую мы будем реализовывать:

+-------------------+ +-------------------+ +-------------------+
| Каналы общения | <---> | Azure Bot Service| <---> | AI‑модели (LUIS, |
| (Web, Teams, | | (Bot Framework) | | QnA Maker, |
| Outlook, Telegram| +-------------------+ | Azure OpenAI) |
+-------------------+ +-------------------+
 | |
 v v
+-------------------+ +-------------------+ +-------------------+
| База данных | <---> | Azure Functions | <---> | CRM / Планировщик |
| (Cosmos DB) | | (логика бизнес‑ | | (Dynamics 365) |
+-------------------+ | процессов) | +-------------------+
 +-------------------+

Ключевые компоненты

  • Azure Bot Service – хостинг и управление ботом, регистрация в Bot Framework․
  • QnA Maker – быстрый способ добавить базу часто задаваемых вопросов (например, «Как подготовиться к сеансу?»)․
  • LUIS (Language Understanding) – распознавание намерений (intent) и сущностей (entity) в запросах типа «Записаться на чтение карт Таро»․
  • Azure OpenAI (GPT‑4) – генерация естественных ответов, поддержка «мягкой» беседы и рекомендаций․
  • Azure Functions – сервер‑лесс логика: проверка свободных слотов, запись в календарь, отправка уведомлений․
  • Cosmos DB – хранение заявок, истории диалогов, согласий на обработку данных․
  • Microsoft Teams / Outlook – каналы, где клиент может сразу увидеть подтверждение записи․

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

  1. Учётная запись Azure (можно использовать бесплатный пробный период)․
  2. Подписка Microsoft 365 (для интеграции с Teams и Outlook)․
  3. Базовые навыки разработки на Node․js или C# (в примерах будет Node․js)․
  4. Доступ к Azure OpenAI (запрос доступа через портал Azure)․
  5. Созданный ресурс Azure Bot Service в Azure Portal․

Шаг‑за‑шаг: создание и настройка бота

Регистрация бота в Azure Bot Service

  • Откройте Azure Portal → Create a resource → AI + Machine Learning → Web App Bot․
  • Заполните форму:
    • Bot name: PsychicPreConsultBot
    • Subscription: ваш тариф
    • Resource group: PsychicBotsRG
    • Location: ближайший к вашим клиентам регион
    • Pricing tier: F0 (Free) для теста
    • Bot template: Echo Bot (Node․js) – базовый шаблон, который будем дорабатывать․
  • Нажмите Create․ После создания откройте ресурс и запомните Microsoft App ID и App password (секрет)․

Подключение QnA Maker

  1. В Azure Portal создайте ресурс QnA Maker → Create;
  2. Загрузите FAQ‑файл (например, faq_extrasyen․txt) со списком вопросов:
     Как подготовиться к сеансу?
     ⎻ Рекомендуется расслабиться, подготовить вопросы и обеспечить тишину․
     Сколько стоит первая консультация?
     ⎼ Стоимость первой 30‑минутной сессии – 1500 ₽․
     
  3. Опубликуйте Knowledge Base и скопируйте Endpoint URL и Subscription key․
  4. В коде бота добавьте обработчик, который будет обращаться к QnA Maker, если распознан Intent = "FAQ"․

Настройка LUIS для распознавания намерений

  1. Создайте ресурс Language Understanding (LUIS) → Create․
  2. В LUIS portal создайте приложение PsychicPreConsultApp и добавьте интенты:
    • BookAppointment – «Записаться», «записаться на чтение», «записать сеанс»․
    • AskFAQ – «Как подготовиться», «Сколько стоит», «Что нужно принести»․
    • CancelAppointment – «Отменить запись»․
  3. Для каждого интента добавьте примеры фраз и сущности:
     Intent: BookAppointment
     ⎼ Записаться на чтение Таро на 12 мая в 19:00
     ⎻ Хочу сеанс кристального шара завтра
    
     Entity: datetime (12 мая, 19:00)
     Entity: service (Таро, кристальный шар)
     
  4. Опубликуйте приложение и сохраните Endpoint URL и Prediction key․

Интеграция Azure OpenAI (GPT‑4) для «мягкой» беседы

  1. Запросите доступ к Azure OpenAI․ После одобрения создайте ресурс Azure OpenAI․
  2. В настройках выберите модель gpt-4 (или gpt-35-turbo для экономии)․
  3. Сохраните Endpoint и API key․ В коде бота реализуйте функцию generateResponse(prompt), которая будет отправлять запросы к OpenAI, добавляя контекст диалога․

Реализация бизнес‑логики в Azure Functions

Для записи в календарь и отправки уведомлений используем сервер‑лесс функции․

  1. Создайте ресурс Function App → Runtime stack: Node․js․
  2. Добавьте функцию scheduleAppointment:
     // Пример функции (Node․js)
     const { Client } = require("@microsoft/microsoft-graph-client");
     const { getToken } = require("․/auth"); // Managed Identity
    
     module․exports = async function (context, req) {
     const { userId, service, datetime } = req․body;
     const token = await getToken; // Получаем токен для Graph API
     const client = Client․init({ authProvider: (done) => done(null, token) });
    
     await client․api('/users/' + userId + '/events')
     ․post({
     subject: `Сеанс: ${service}`,
     start: { dateTime: datetime, timeZone: "UTC" },
     end: { dateTime: new Date(new Date(datetime)․getTime + 30*60000)․toISOString, timeZone: "UTC" }, });
    
     context․res = { status: 200, body: { success: true } };
     };
     
  3. Разрешите Function App доступ к Microsoft Graph через Managed Identity (Azure AD → Enterprise applications → Grant permissions → Calendars․ReadWrite)․

Связывание всех компонентов в Bot Framework

В файле index․js вашего бота добавьте следующий упрощённый роутинг:

const { BotFrameworkAdapter, MemoryStorage, ConversationState } = require('botbuilder');
const { LuisRecognizer } = require('botbuilder-ai');
const axios = require('axios');

const adapter = new BotFrameworkAdapter({
 appId: process․env․MicrosoftAppId,
 appPassword: process․env․MicrosoftAppPassword
});

const memoryStorage = new MemoryStorage;
const conversationState = new ConversationState(memoryStorage);

// LUIS recognizer
const recognizer = new LuisRecognizer({
 applicationId: process․env․LUIS_APP_ID,
 endpointKey: process․env․LUIS_PREDICTION_KEY,
 endpoint: process․env․LUIS_ENDPOINT
}, {
 includeAllIntents: true,
 includeInstanceData: true
}, true);

// Основной обработчик сообщения
adapter․use(async (turnContext, next) => {
 const result = await recognizer․recognize(turnContext);
 const intent = LuisRecognizer․topIntent(result);

 if (intent === 'BookAppointment') {
 // Извлекаем сущности
 const service = result․entities․service?․[0];
 const datetime = result․entities․datetime?․[0]?․timex?․[0];
 // Вызываем Azure Function
 const resp = await axios․post(process․env․FUNC_SCHEDULE_URL, {
 userId: turnContext․activity․from․id,
 service,
 datetime
 });
 await turnContext․sendActivity(`✅ Записано! Вы записаны на ${service} ${datetime}․`);
 } else if (intent === 'AskFAQ') {
 // Обращаемся к QnA Maker
 const qnaResp = await axios․post(process․env․QNA_ENDPOINT, {
 question: turnContext․activity․text
 }, {
 headers: { 'Authorization': `EndpointKey ${process․env․QNA_KEY}` }
 });
 const answer = qnaResp․data․answers[0]?․answer || 'Извините, я не знаю ответа․';
 await turnContext․sendActivity(answer);
 } else {
 // Дефолтный ответ через Azure OpenAI
 const prompt = `Пользователь: ${turnContext․activity․text}
Бот:`;
 const openAiResp = await axios․post(`${process․env․OPENAI_ENDPOINT}/v1/completions`, {
 model: "gpt-4",
 prompt,
 max_tokens: 150,
 temperature: 0․7
 }, {
 headers: { 'api-key': process․env․OPENAI_KEY }
 });
 const reply = openAiResp․data․choices[0]․text․trim;
 await turnContext․sendActivity(reply);
 }
 await next;
});

Подключение к каналам общения

Веб‑чат (Embedded Web Chat)

  • В Azure Bot Service включите канал Web Chat․
  • Скопируйте Secret key и вставьте в ваш сайт:
     <script src="https://cdn․botframework․com/botframework-webchat/latest/webchat․js"></script>
    
     <div id="webchat"></div>
     <script>
     const { directLine } = window․WebChat;
     window․WebChat․renderWebChat(
     { directLine: directLine({ secret: "YOUR_SECRET_KEY" }) },
     document․getElementById('webchat')
     );
     </script>
     

Microsoft Teams

  1. В Azure Portal → ваш Bot → Channels → добавить Microsoft Teams․
  2. В Teams App Studio создайте манифест:
     {
     "$schema": "https://developer․microsoft․com/en-us/json-schemas/teams/v1․11/MicrosoftTeams․schema․json",
     "manifestVersion": "1․11",
     "version": "1․0․0",
     "id": "YOUR_BOT_APP_ID",
     "packageName": "com․example․psychicbot",
     "developer": { "name": "Your Company", "websiteUrl": "https://example․com", "privacyUrl": "․․․", "termsOfUseUrl": "․․․" },
     "bots": [{ "botId": "YOUR_BOT_APP_ID", "scopes": ["personal", "team"] }],
     "permissions": ["identity", "messageTeamMembers"]
     }
     
  3. Загрузите пакет в Teams → Upload a custom app․ Бот будет доступен в личных чатах и в командах․

Outlook (через Exchange)

Для автоматической записи в календарь клиенту достаточно отправить письмо‑подтверждение․ В Azure Function после успешного создания события отправляем письмо через Graph API:

await client․api('/users/' + userId + '/sendMail')
 ․post({
 message: {
 subject: "Подтверждение записи", toRecipients: [{ emailAddress: { address: userEmail } }]
 }
 });

Telegram (по желанию)

  • Создайте бота через BotFather, получите Token․
  • В Bot Service добавьте канал Telegram и укажите токен․
  • Тестируйте: бот будет отвечать тем же образом, что и в Teams․

Обеспечение безопасности и конфиденциальности

  • Шифрование данных – все запросы к Azure сервисам идут по HTTPS, данные в Cosmos DB зашифрованы в покое․
  • Согласие пользователя – перед записью в календарь бот отправляет сообщение с запросом согласия (GDPR‑compliant)․
  • Управление доступом – используйте Azure RBAC и Managed Identities, чтобы функции имели только необходимые права․
  • Логирование – Azure Application Insights собирает метрики и логи, но не сохраняет содержимое личных сообщений (можно отключить)․
  • Регулярные аудиты – включите Azure Policy для контроля соответствия требованиям (HIPAA, ISO)․

Монетизация и аналитика

  1. Платные планы – в боте можно реализовать проверку подписки через Stripe API и предлагать «премиум‑консультацию»․
  2. Отчёты – с помощью Application Insights и Power BI создайте дашборд: количество записей, среднее время диалога, конверсия в живую сессию․
  3. Сбор обратной связи – после каждой записи бот отправляет короткую форму (Microsoft Forms) и сохраняет результаты в Cosmos DB․

Тестирование и деплой

Локальное тестирование

  • Установите Bot Framework Emulator и подключитесь к http://localhost:3978/api/messages․
  • Проверьте каждый интент: BookAppointment, AskFAQ, CancelAppointment․

CI/CD через Azure DevOps

  1. Создайте репозиторий в Azure Repos․
  2. Добавьте pipeline:
     trigger:
     ⎻ main
    
     pool:
     vmImage: 'ubuntu-latest'
     steps:
     ⎻ task: NodeTool@0
     inputs:
     versionSpec: '18․x'
     ⎼ script: |
     npm install
     npm run build
     displayName: 'Install & Build'
     ⎻ task: AzureWebApp@1
     inputs:
     azureSubscription: 'YourSubscription'
     appName: 'PsychicPreConsultBot'
     package: '$(System․DefaultWorkingDirectory)/*/․zip'
     
  3. После коммита в ветку main бот автоматически деплоится в Azure App Service․

Лучшие практики

  • Разделяйте диалоговые сценарии: FAQ – в QnA Maker, запись – в LUIS + Functions, «мягкая» беседа – в Azure OpenAI․
  • Не храните личные данные в открытом виде: используйте Cosmos DB с шифрованием и ограничьте доступ․
  • Тестируйте на реальных пользователях: проведите A/B‑тесты разных формулировок вопросов․
  • Обновляйте модели регулярно: добавляйте новые примеры в LUIS и новые вопросы в QnA Maker после каждой недели работы․
  • Контролируйте стоимость: мониторьте использование Azure OpenAI (токены) и ставьте лимиты в Azure Cost Management․

С помощью Azure Bot Service, QnA Maker, LUIS и Azure OpenAI можно быстро построить интеллектуального помощника, который будет принимать заявки, отвечать на часто задаваемые вопросы и автоматически записывать клиентов на сеансы с экстрасенсами․ Интеграция с Microsoft 365 (Teams, Outlook) делает процесс бесшовным, а встроенные средства безопасности Azure гарантируют защиту персональных данных․

Следуя описанным шагам, вы получите полностью готовый к работе чат‑бот, который можно масштабировать под любые объёмы запросов и легко адаптировать под новые услуги (астрология, нумерология, рейки и др․)․


Автор: Ваше имя, специалист по Azure AI
Дата публикации: 19 августа 2026 г․