Хотя шаблон генерирует код для графического API, нет простого примера или процедуры для проверки подлинности нового созданного виртуального помощника и последующего использования этого API.
Процедура, пример или конфигурация, позволяющая использовать клиент графа, запрашивающий активацию аутентификации, после создания исходного кода йомена для виртуального помощника в машинописном тексте и способ с примерами для развертывания локальных навыков в машинописном тексте.
развить новый навык машинописного текста и использовать инструмент botskills connect
, чтобы попытаться увидеть изменения в решении виртуального помощника и увидеть измененные части кода.
созданный новый навык имеет аналогичную и большую часть исходного кода исходного генератора виртуальной помощи. Для некоторых простых сценариев развертывания нецелесообразно создавать совершенно новое бот-решение только для фрагмента функциональности общего виртуального помощника (например, когда нагрузка запроса не имеет смысла). Таким образом, есть некоторые описания параметров инструмента botskills
для распознавания локального манифеста, но не существует реального примера машинописного текста, работающего с локальными навыками, и не существует примера навыков, запрашивающих учетные данные oauth в машинописном тексте.
@andhdo Достаточно ли страницы документации, показывающей, как вы можете использовать виртуального помощника и добавить шаг аутентификации перед вызовом Graph, для того, что вам нужно? Это также будет включать шаги ручной настройки, необходимые для создания аутентификационного соединения?
Да, это может быть отправной точкой, как это делают базовые примеры аутентификации. Тогда это может быть хорошим дополнением для развития навыков локального машинописи, включая и отключая аутентификацию.
ОК — имеет смысл — я обновлю этот рабочий элемент и обновлю документы на следующей неделе. Несколько раз вы говорили, что полезно выполнять аутентификацию исключительно в VA, а не полагаться на навыки в некоторых сценариях.
Основа описана здесь, и я сосредоточусь на ней для VA (и это будет намного проще, чем это)
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-authentication?view=azure-bot-service-4.0&tabs=aadv1%2Ccsharp%2Cbot-oauth
Да; Я сделал упражнение для запуска этих сценариев, но идея состоит в том, чтобы реализовать его наилучшим образом внутри виртуального помощника без дублирования кода, уже созданного Microsoft.
Спасибо за помощь, надеюсь увидеть результат.
Привет @andhdo , этот документ должен охватывать то, что вам нужно: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md
Откройте снова, если это необходимо.
Привет @andhdo , этот документ должен охватывать то, что вам нужно: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md
Откройте снова, если это необходимо.
Привет @ lauren-mills, не могли бы вы рассказать нам, как я могу снова открыть этот вопрос ?
что потому что:
Шаги для добавления аутентификации непосредственно в VA должны быть такими же, как шаги для добавления их в навык, как указано в документе (поэтому я указал вам на него).
Я хочу подтвердить, что вы вносите все эти изменения в регистрацию виртуального бота и регистрацию виртуального приложения, верно?
Можете ли вы зайти в регистрацию бота на вкладке настроек, затем выбрать свое соединение OAuth и нажать «проверить соединение» вверху и сообщить мне, что там написано? Спасибо.
Да; все по процедуре. см. ниже выполненные шаги:
установите все требования для запуска каркаса VA:
npm uninstall -g yo
npm install -g yo
npm install -g windows-build-tools
npm install -g npm
npm install -g botdispatch
npm install -g ludown luis-apis qnamaker [email protected]
npm install -g chatdown
npm install -g botskills
npm uninstall -g generator-botbuilder-assistant
# select the following line according release or development versions you want to run. see https://github.com/microsoft/botframework-solutions#user-content-js table for versions
npm install -g generator-botbuilder-assistant
yo botbuilder-assistant --assistantName "bot-1835" --assistantDesc "my assistant" --assistantLang "es,en" --assistantGenerationPath "." --noPrompt
затем началась генерация и сразу после нее процесс сборки.
затем исправляйте проблемы, если это необходимо для запуска приложений локально
-> index.ts: опустить параметр учетных данных return new MultiProviderAuthDialog(oauthConnections)
в разработке, основная версия;
-> index.ts: изменить skill.msaAppId
на skill.msAppId
в разработке, основная версия
-> добавить msAppId и атрибуты в файл skills.json.
-> игнорировать ресурсы, автоматически сгенерированные в процессе сборки инструментами для создания ботов (кто управляет когнитивными моделями)
Предоставьте компоненты в Azure:
позаботьтесь о том, чтобы у вас не было компонентов, которые вступают в конфликт с предоставленным кодом (удалите предыдущие группы ресурсов, модели azure-ad-registrations и luis.ai с одинаковым идентификатором с помощью инструментов консоли или командной строки).
сначала нужно установить соединение с azure, и выбрать подписку с деньгами (потому что в az все деньги)
az login
az account set --subscription <SUBSCRIPTION_TO_WORK>
а затем выполнение сгенерированного скрипта
cd bot-1835
.\deployment\scripts\deploy.ps1 -languages "es-es" -name "<VA_NAME>" -location "westus" -appPassword "<VA_PASS>" -luisAuthoringRegion "westus" -luisAuthoringKey "<LUIS_AUTHORING_KEY>" -parametersFile ".\deployment\resources\parameters.template.json" -debug
VA_NAME:
ВА_ПАСС:
LUIS_AUTHORING_KEY: от
после этого (и скрестив пальцы чтобы все получилось), то можно приступать к понижению уровня дорогих для подписки ресурсов
вывод выглядит так:
> Creating resource group ...
> Validating Azure deployment ...
> Deploying Azure services (this could take a while)...
> Updating appsettings.json ...
> Deploying cognitive models ...
> Initializing dispatch model ...
> Parsing general LU file ...
> Deploying general LUIS app ...
> Setting LUIS subscription key ...
> Adding general app to dispatch model ...
> Parsing chitchat LU file ...
> Deploying chitchat QnA kb ...
> Adding chitchat kb to dispatch model ...
> Parsing faq LU file ...
> Deploying faq QnA kb ...
> Adding faq kb to dispatch model ...
> Creating dispatch model...
> Setting LUIS subscription key ...
+ To publish your bot, run 'C:\MyPathToDir\bot-1835\deployment\scripts\publish.ps1 -name 1835-dev1 -resourceGroup 1835-dev1 -projFolder "C:\MyPathToDir\bot-1835\src '
> Done.
npm run start
$appReg2 = (az ad app create --display-name "<VA_AZADREG_NAME>" --password "<VA_AZADREG_PASS>" --available-to-other-tenants false --reply-urls "https://token.botframework.com/.auth/web/redirect")
$appReg2json = ($appReg2 | ConvertFrom-Json)
VA_AZADREG_NAME=
VA_AZADREG_PASS=
затем добавьте разрешения API графа
profile
Mail.Read
Mail.Send
User.Read
User.ReadBasic.All
а также
секрет клиента:
используйтеthinfo из предыдущего шага, чтобы обновить oauth в созданной регистрации botchannels-registration
затем проверьте соединение
(он запрашивает утверждения oauth), а затем показывает токен
Похоже, у вас есть настройка аутентификации в вашем проекте Virtual Assistant. Чего вам не хватает, с чем вам нужна наша помощь?
Несмотря на сделанную настройку, проект никогда не запрашивает аутентификацию у пользователя, использующего VA. Я уже добавил аутентификацию для проекта, но он никогда не активирует диалоги для аутентификации. Я уже добавил аутентификацию для проекта, но он никогда не активирует диалоги для аутентификации.
дополнительные шаги, сделанные в приложении в соответствии с документацией и ошибками, замеченными в kudu:
{
"oauthConnections": [
{
"name": "Outlook",
"provider": "Azure Active Directory v2"
}
], ...
"local:start": "npm run build && node ./lib/index.js NODE_ENV=development",
"start": "node ./lib/index.js",
npm run clean
npm run build
.\deployment\scripts\publish.ps1 -name <VA_NAME> -resourceGroup <VA_NAME>
Чтобы запросить аутентификацию, вам нужно будет добавить OAuthPrompt в диалоговое окно в нужном месте, предоставив информацию о подключении при его настройке.
Этот образец диалогового окна из репозитория Microsoft/botbuilder-samples должен помочь: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js
Это хорошее уточнение, потому что этот метод действительно не добавляет аутентификацию вашему боту, вы должны сделать несколько дополнительных шагов, чтобы обезопасить свои действия:
Некоторые дополнительные вопросы:
MultiProviderAuthDialog
, который работает с навыками в методе buildAuthDialog в index.ts, не используется ни для каких целей.OAuthPrompt автоматически извлечет токен для пользователя, если он уже вошел в систему в другом месте для этого соединения OAuth. Если вы добавите OAuthPrompt туда, где хотите, и пользователь уже вошел в систему, он просто перейдет к следующему шагу.
Я не уверен, что вы спрашиваете здесь. Для использования Cognitive Services (LUIS, QnA и т. д.) пользователь не должен проходить аутентификацию. Вам просто нужен ключ для этой службы. Пожалуйста, разъясните мне этот вопрос.
Регистрация MultiProviderAuthDialog при запуске создается только для настроенных навыков в вашей конфигурации skills.json. Если навыков нет, он не используется.
2: я имею в виду: если существует (не знаю, существует ли уже или планируется ли) промежуточное ПО для запроса учетных данных аутентификации у пользователя, прежде чем предоставить доступ для выполнения логики запросов основного диалога, поэтому вы можете оставить эту логику нетронутой
Я думаю, что нашел решение в соответствии с вашими комментариями:
создайте своего рода диалог CircuitBreaker: диалог водопада из 2 шагов: шаг аутентификации и основной шаг. первый шаг вызывает loginActivityDialog, а второй вызывает ранее сгенерированный главный диалог только в том случае, если oauthPrompt сгенерировал токен.
в index.ts сделайте что-то похожее на логику buildAuthDialog
, чтобы получить конфигурацию oauthConnection из настроек и обойти LoginActivityDialog
/* eslint-disable */
function buildAuthDialog2(settings: Partial<IBotSettings>): LoginActivityDialog|undefined {
const oauthConnections: IOAuthConnection[] | undefined = botSettings.oauthConnections;
if(oauthConnections!==undefined) {
const loginDialog = new LoginActivityDialog(oauthConnections);
console.log(`created`);
return loginDialog;
} else {
throw new Error(`You must configure at least one supported OAuth connection to use authentication`);
}
return undefined;
};
/* eslint-enable */
это менее инвазивный метод, который я нашел до сих пор; однако ему не хватает двух вещей: (1) он не может распространять токен для графа вызовов, если это необходимо. (2) я думал, что это не оригинальное промежуточное ПО
Рад слышать, что вы смогли заставить работать подсказку. Для доступа к токену он должен быть доступен на следующем шаге (после OAuthPrompt) в stepContext.Result.
Если вам нужен совет по созданию нужного промежуточного программного обеспечения, я бы посоветовал перейти к нашему Stack Overflow , так как он лучше подходит для общих советов по ботам, чем этот репозиторий.