Цель статьи – показать, как с помощью сервисов 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 – каналы, где клиент может сразу увидеть подтверждение записи․
Предварительные требования
- Учётная запись Azure (можно использовать бесплатный пробный период)․
- Подписка Microsoft 365 (для интеграции с Teams и Outlook)․
- Базовые навыки разработки на Node․js или C# (в примерах будет Node․js)․
- Доступ к Azure OpenAI (запрос доступа через портал Azure)․
- Созданный ресурс 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)– базовый шаблон, который будем дорабатывать․
- Bot name:
- Нажмите Create․ После создания откройте ресурс и запомните Microsoft App ID и App password (секрет)․
Подключение QnA Maker
- В Azure Portal создайте ресурс QnA Maker → Create;
- Загрузите FAQ‑файл (например,
faq_extrasyen․txt) со списком вопросов:Как подготовиться к сеансу? ⎻ Рекомендуется расслабиться, подготовить вопросы и обеспечить тишину․ Сколько стоит первая консультация? ⎼ Стоимость первой 30‑минутной сессии – 1500 ₽․
- Опубликуйте Knowledge Base и скопируйте Endpoint URL и Subscription key․
- В коде бота добавьте обработчик, который будет обращаться к QnA Maker, если распознан
Intent = "FAQ"․
Настройка LUIS для распознавания намерений
- Создайте ресурс Language Understanding (LUIS) → Create․
- В LUIS portal создайте приложение
PsychicPreConsultAppи добавьте интенты:- BookAppointment – «Записаться», «записаться на чтение», «записать сеанс»․
- AskFAQ – «Как подготовиться», «Сколько стоит», «Что нужно принести»․
- CancelAppointment – «Отменить запись»․
- Для каждого интента добавьте примеры фраз и сущности:
Intent: BookAppointment ⎼ Записаться на чтение Таро на 12 мая в 19:00 ⎻ Хочу сеанс кристального шара завтра Entity: datetime (12 мая, 19:00) Entity: service (Таро, кристальный шар)
- Опубликуйте приложение и сохраните Endpoint URL и Prediction key․
Интеграция Azure OpenAI (GPT‑4) для «мягкой» беседы
- Запросите доступ к Azure OpenAI․ После одобрения создайте ресурс Azure OpenAI․
- В настройках выберите модель
gpt-4(илиgpt-35-turboдля экономии)․ - Сохраните Endpoint и API key․ В коде бота реализуйте функцию
generateResponse(prompt), которая будет отправлять запросы к OpenAI, добавляя контекст диалога․
Реализация бизнес‑логики в Azure Functions
Для записи в календарь и отправки уведомлений используем сервер‑лесс функции․
- Создайте ресурс Function App → Runtime stack: Node․js․
- Добавьте функцию
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 } }; }; - Разрешите 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
- В Azure Portal → ваш Bot → Channels → добавить Microsoft Teams․
- В 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"] } - Загрузите пакет в 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)․
Монетизация и аналитика
- Платные планы – в боте можно реализовать проверку подписки через Stripe API и предлагать «премиум‑консультацию»․
- Отчёты – с помощью Application Insights и Power BI создайте дашборд: количество записей, среднее время диалога, конверсия в живую сессию․
- Сбор обратной связи – после каждой записи бот отправляет короткую форму (Microsoft Forms) и сохраняет результаты в Cosmos DB․
Тестирование и деплой
Локальное тестирование
- Установите Bot Framework Emulator и подключитесь к
http://localhost:3978/api/messages․ - Проверьте каждый интент:
BookAppointment,AskFAQ,CancelAppointment․
CI/CD через Azure DevOps
- Создайте репозиторий в Azure Repos․
- Добавьте 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'
- После коммита в ветку
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 г․