TypeScript仮想アシスタントとスキル
TypeScript
認証を試みると、次のエラーがスローされます
エラー:DialogContext.beginDialog():IDが「AuthPrompt」のダイアログが見つかりませんでした。
WaterfallStepContextで。
Generator.nextで(
D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:7:71にあります
新しい約束で(
__awaiter(D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:3:12)
WaterfallStepContext.beginDialog(D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:119:16)
MultiProviderAuthDialog.firstStep(D:\ home \ site \ wwwroot \ node_modules \ bot-solutions \ lib \ authentication \ multiProviderAuthDialog.js:75:34)
WaterfallDialogで。
Generator.nextで(
D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ waterfallDialog.js:7:71
仮想アシスタントとスキルを展開します。 スキルでMultiProviderAuthDialogを有効にする
認証ダイアログを使用して、Azure Active Directoryv2で認証します
サインインするためのログインカードを受け取る
エラー:DialogContext.beginDialog():IDが「AuthPrompt」のダイアログが見つかりませんでした。
WaterfallStepContextで。
Generator.nextで(
D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:7:71にあります
新しい約束で(
__awaiter(D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:3:12)
WaterfallStepContext.beginDialog(D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ dialogContext.js:119:16)
MultiProviderAuthDialog.firstStep(D:\ home \ site \ wwwroot \ node_modules \ bot-solutions \ lib \ authentication \ multiProviderAuthDialog.js:75:34)
WaterfallDialogで。
Generator.nextで(
D:\ home \ site \ wwwroot \ node_modules \ botbuilder-dialogs \ lib \ waterfallDialog.js:7:71
この問題を報告してくれた@ tomSauret847に感謝します! 更新があり次第、折り返しご連絡いたします😊。
こんにちは@ tomSauret847-遅延について申し訳ありません。 次の手順に従って、TypeScriptスキルを使用して問題を正常に再現しました。
OAuthPromptSettings
配列をMultiProviderAuthDialog
コンストラクターに渡しますbotSettings
プロパティにappsettings.oauthConnections
を追加しますAADv2
接続を追加しますAADv2
接続をセットアップします更新があり次第、折り返しご連絡いたします😊。
こんにちは@ tomSauret847-このコミットでこの問題を修正しました。
これは実際にはbot-solutions
ライブラリの問題であり、ライブラリのバージョン1.0で修正がリリースされる予定です。
それまでの間、自分で修正をテストする方法が必要な場合は、次の手順に従ってください。
npm install
を実行して、依存関係をインストールします。npm run build
を実行して、ソリューションを構築します。npm pack
を実行して、 .tgz
ファイルを生成します。 同じ場所にbot-solutions-version.tgzという名前のファイルを作成する必要があります"bot-solutions": "^1.0.0"
から"bot-solutions": "<PATH_TO_TGZ>"
に置き換えます。私たちはあなたの返事に気を配ります😊。
この@ Batta32を調べていただき、ありがとうございます。このプロセスでまだエラーが発生しています。 エラーは
エラー:{接続名}という名前の接続設定が見つかりませんでした
スキルのSSOを設定するために、ここで概説するように接続を設定しています。
タイプスクリプトスキルを使用して、各スキルで認証接続を確立する必要がありますか?
または、C#スキルで概説されているように単一のSSOを使用できますか?
スキルに接続を追加すると、サインインプロンプトが表示されますが、ログインが完了してもトークンは返されません。VAで単一の接続をセットアップする必要があるかどうか、または認証が必要な各スキルで接続を設定する必要があります。
返信ありがとうございます@ tomSauret847 。 更新があり次第、折り返しご連絡いたします😊!
こんにちは@ tomSauret847-問題を正常に再現しました。 それは理由ですname
でプロパティoauthConnections
のappsettings.json
異なっにconnectionName
でプロパティOAuthPromptSettings
を使用しています。
これを引き続き確認し、上記の質問を分析します。 更新があり次第、折り返しご連絡いたします😊。
問題を再現するために実行した手順は次のとおりです。
name
でプロパティoauthConnections
のappsettings.json
に異なっconnectionName
でプロパティOAuthPromptSettings
を使用しています_connectionNameとnameが異なる場合、問題が再現されます_
_問題の再現_
こんにちは@ tomSauret847
タイプスクリプトスキルを使用して、各スキルで認証接続を確立する必要がありますか?
TypeScriptスキルのバージョン1.0がリリースされるまで、各TypeScriptスキルに認証接続が必要です。
または、C#スキルで概説されているように単一のSSOを使用できますか?
TypeScriptのバージョン1.0はまだリリースされていないため、C#スキルで概説されているTypeScriptのSSOは使用できません。
これらがあなたに役立つかどうか私たちに知らせてください😊。
@ tomSauret847 -エラーError: Could not find Connection Setting with name {connection name}
あるので、 name
でプロパティoauthConnections
のappsettings
異なっへconnectionName
でプロパティOAuthPromptSettings
。
これを解決するには、両方のプロパティが等しいことを確認する必要があります。
詳細については、上記のコメントを確認してください。
これを調べてくれてありがとう@ Batta32 。 スキルに接続プロパティを作成すると、ログインプロンプトが表示されることを確認できます。 あなたのコメントは別の質問を提起しました。 新しいVAを使用したテストに移行し、その後本番環境に移行する準備をしています。 私が持っている質問は、
認証のこの修正は、1.0リリースの前にNPMに公開される予定ですか?
本番環境では、公開されたNPMパッケージが必要になるため、このVAを本番環境に移行する前に、この修正を公開する必要があります。 私はあなたの答えに気を配ります。
@ tomSauret847-返信ありがとうございます! TypeScriptバージョン1.0のPRに次の修正を追加しています。
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
これに関する更新があり次第、お知らせします。 その間、TypeScriptでの認証プロセスの検証に取り組んでいます。
@ tomSauret847-認証プロセス中にスキル状態変数が_未定義_であるという別の問題を特定しました。
このコミットに組み込んだスキル状態アクセサーのデフォルト値を設定するPR#3561をガイドとして使用しました。
これらの変更を適用した後、認証プロセスは正しく機能します。 この問題は、TypeScriptv1.0がマージされるとすぐに修正されます。
これは、このブランチを使用する環境です: feature/southworks/test-fix-auth-skill
:
それまでの間、自分で修正をテストする方法が必要な場合は、次の手順に従ってください。
npm install
を実行して、依存関係をインストールします。npm run build
を実行して、ソリューションを構築します。npm pack
を実行して、.tgzファイルを生成します。 同じ場所にbot-solutions-version.tgzという名前のファイルを作成する必要があります"bot-solutions": "^1.0.0"
から"bot-solutions": "<PATH_TO_TGZ>"
に置き換えます。npm install
を実行して、依存関係をインストールします。npm run build
を実行して、ソリューションを構築します。私たちはあなたの答えに気を配っています。 😊
_SkillState変数が未定義の値を取得しています_
_認証プロセスが正しく機能している_
もう一度ありがとう@ Batta32! テストには1.0パッケージを使用しました。 スキルで接続設定を維持する必要がありますが、認証を機能させることができます。 VAがトークン応答を受信し、それを処理するスキルに転送している場所を確認できました。
@ Batta32 2つのスキルで認証を設定しており、Teamsチャネルで
@ tomSauret847に感謝します。そのシナリオをできるだけ早くご連絡いたします。
シナリオの確認を開始するだけです。
どうもありがとう
こんにちは@ tomSauret847 、認証シナリオが正しく機能しているため、この問題を再現できませんでした。
私たちはあなたのためにいくつかの質問を思いついた:
これは私たちが使用しているセットアップです:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"BotName": "skillbot-name",
"DirectLineSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"EnableDirectLineEnhancedAuthentication": true,
"SpeechServiceRegionIdentifier": "",
"SpeechServiceSubscriptionKey": ""
}
実行した手順は次のとおりです。
私たちはあなたの答えに気を配ります。
これを調べてくれてありがとう@ matiasroldan6 。 あなたの質問に答えるために
ダイレクトラインクライアントでは、ユーザーIDが「dl_xxxx」に設定されています。
スキルとVAの接続にAzureADv2認証があります
ダイレクトラインクライアントのappsettings.jsonは、上記と同じように設定されています
スキルで直接回線チャネルを使用することはできず、VAでのみ使用できます
Teamsチャネルで認証を使用できますが、唯一の問題はダイアログメッセージの順序が正しくないことです。 変換の1分後まで、最初のstepContext.context.sendActivity( 'message')の送信に失敗しています。 これは、認証が含まれているダイアログとTeamsチャネルでのみ発生します。
ここにあるbot-solutions1.0を使用しています
スキルとVAについてさらに情報が必要な場合はお知らせください
こんにちは@ tomSauret847 、この問題の発生を再現できます。
このシナリオでは、問題はDirectlineチャネルで設定された信頼できる発信元アドレスでした。 たとえば、Directlineポップアップには、信頼できるオリジンは_https_、または_localhost_の必要があることが示されます。 これは、Directlineがあなたにとって失敗している唯一のチャネルであることを説明します。
これも問題であるかどうかを確認するために、信頼できるオリジンとして設定してみてください。
ボットアドレス(ローカルでデバッグしている場合は、https://xxxxx.azurewebsites.netまたはhttps://xxxx.ngrok.ioのいずれか)
http:// localhostのように、必要に応じて
これを再現するための設定は次のとおりです。
私たちの再現手順は次のとおりです。
これが役に立ったらお知らせください。 私たちはあなたの応答に気を配ります。
これを調べてくれてありがとう@ matiasroldan6 。 上に表示されている設定は、私たちが使用しているものと同じです。 ローカルホストルートを削除し、直接回線チャネル(https://xxxxx.azurewebsites.net)の信頼できるオリジンにボットアドレスを設定しました。 サインインプロンプトの後もスキルは応答しません。会話をキャンセルしてスキルを再度呼び出すと、トークンが取得され、ダイアログが続行されます。 ユーザーがサインインした後も、トークンを受け取るスキルを取得することはできません。
返信ありがとうございます@ tomSauret847-私たちはこの問題の修正を見つけるためにこれに取り組んでいきます😊。
ボットソリューションのバージョン1.0(PR#3583)を考慮して、 azurewebsites.net
エンドポイントをどのように使用しているかを理解するために質問があります。
Messaging endpoint
を使用していますか?.tgz
パッケージを使用されたとのことですが。 これは正しいです?ありがとう@ Batta32
@ tomSauret847に感謝します。ご提供いただいたこの新しい情報を使用して、この問題を引き続き確認します。 更新があり次第、折り返しご連絡いたします😊。
こんにちは@ tomSauret847 、この問題の発生を正常に再現しました。
以前の回答から気づいたことの1つは、ボットのURLを信頼できるオリジンとして使用していることです。
このコメントとこのドキュメントによると、チャットクライアントのURLが必要です。
セットアップは次のとおりです。
手順:
Microsoft TeamsとEmulatorでこれが機能していることを確認し、ご指摘のとおり、この問題を引き続き確認します。
こんにちは@ tomSauret847 、拡張認証を使用して認証プロセスを正常に実行しました。
あなたが私たちの側でチェックできるように、私たちはいくつかの質問を思いついた:
<WEB_APP_BOT_NAME>
をボットリソースの名前に置き換えますか? node_modules
、 lib
、および残りのフォルダーがあるかどうかを確認します。これが私たちの環境です:
次の手順に従いました。
.tgz
ファイルを保存するフォルダーを作成します"bot-solutions": ".//TGZ//bot-solutions-1.0.0.tgz"
など、ローカルtgzへのボットソリューション参照をポイントしますdeploy.ps1
を使用してボットをデプロイしますpublish.ps1
スクリプトを使用して両方のサンプルを公開しますrun sample dialog
を使用して認証をトリガーします最後になりましたが、C#ボットを使用して同じ手順を確認し、それが正しく機能していることを確認しました。
私たちはあなたの返事に気を配ります😊
_拡張認証の構成_
_拡張認証とTypeScriptボットを使用した通信の成功_
_拡張認証とC#ボットを使用した通信の成功_
@VictorGrycukありがとうございます。 応答が遅れて申し訳ありませんが、修正を確認するためにテストインスタンスをセットアップする必要がありました。 テストインスタンスで認証を機能させることができ、問題のある場所を絞り込みました。
VA / Skillsのインスタンスでは、ファイアウォールを備えたアプリゲートウェイの背後にあります。 これが、拡張認証が機能しない理由のようです。 これをVAとその構成外のスキルに実装すると、正しく機能します。 アプリゲートウェイは別のホストをミックスに配置し、これがトークンをブロックしていると考えています。 したがって、次の質問があります。
強化された認証をAppGatewayの背後にあるボットと連携させる方法はありますか?
素晴らしい@ tomSauret847! App Gatewayの背後にあるボットで拡張認証を機能させる方法を確認するために、調査といくつかのテストを行います。
これに関する更新があり次第、ここでお知らせします😊。
こんにちは@ tomSauret847 、私たちは少し調査をしました、そして私たちはいくつかの質問を思いつきました。
私たちはあなたの答えに気を配ります🙂
@VictorGrycukに返信していただき、ありがとうございます。質問への回答は次の
Azureにデプロイされたボットを使用してテストしています。 ローカルでテストするトンネルを作成できません。
はい、リンクに概説されているように、WAFを備えたAzureアプリケーションゲートウェイを使用しています
これらはTypeScriptボット(VAと認証付きの2つのスキル)であり、同期ループの問題を回避するために1つのC#スキルのみを使用しており、認証はありません。
こんにちは@ tomSauret847 、遅れて申し訳ありません-ボットが背後にあるAzure できるはずです。
いくつかの追加の質問:
コンポーネント:
構成:
このシナリオの複製に取り組んでいきます。
ありがとう@VictorGrycukあなたの質問への答えは
ゲートウェイのパブリックIPを使用してエミュレーターで仮想アシスタントに接続できますか? 私たちのテストでは、これが可能であることを確認しました
コミュニケーションを強化せずに、VAを介してスキルと接続してコミュニケーションをとることができますか?
こんにちは@ tomSauret847 、拡張認証がAzure ApplicationGatewayの背後にあるボットですることを
デプロイされたボットを使用してAzureApplicationGatewayを構成する方法に関する新しいドキュメントを含むPR #3694を作成しました。
次の手順に従ってテストを行いました。
これはAzureApplication Gatewayの構成の問題のように思われるため、 https://stackoverflow.com/questions/tagged/botframeworkで提案を求めることをお勧めします。 あなたは大丈夫であればと、私たちはこの問題を🙂閉じることができ
ありがとう@VictorGrycuk私たちはあなたが投稿した情報を処理します。 このリンクが壊れていることにすでに気づきました。
@ tomSauret847に感謝します。ドキュメントが{{site.baseurl}}
を使用しているため、ドキュメントがmaster
ブランチにマージされると、そのリンクはTypeScriptボット(およびこの画像)を使用したゲートウェイのヘルスプローブの構成につながります。 URLを生成します。
@ peterinnesmsft-非アクティブであるため、問題をクローズできます。 @ tomSauret847それでも問題がアクティブ化してください。再度問題を解決するか、新しい問題を作成できます。
また、ご不明な点がございましたら、 https://stackoverflow.com/questions/tagged/botframeworkでお問い合わせ
TypeScriptバージョン1.0で次のPRがマージされるとすぐに、認証プロセス全体が解決されます。
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
これについてご協力いただきありがとうございます@ Batta32 。 現時点ではこのセクションを保留にする必要があるため、この問題を閉じて、問題が発生した場合は再度開くようにします。
@ Batta32この問題について簡単な質問があります。 typescriptのSSOはまだ利用できますか? 問題は、スキルがファイアウォールの背後にあり、トークン応答を受信できないことであることがわかりました。 VAのクレデンシャルを渡すと、トークンはスキルに転送されず、会話が再開されるだけです。 typescriptのSSOが利用できない場合、いつ利用できると思いますか? この問題についてご協力いただきありがとうございます。
こんにちは@ tomSauret847 、SSOは1.0バージョンで導入されているため、現在TypeScriptでは使用できません。 TypeScriptバージョン1.0のPRは、その機能を備えた新しいバージョンをリリースするために承認され、マージされる必要があります。
更新があり次第お知らせします😊。
最も参考になるコメント
もう一度ありがとう@ Batta32! テストには1.0パッケージを使用しました。 スキルで接続設定を維持する必要がありますが、認証を機能させることができます。 VAがトークン応答を受信し、それを処理するスキルに転送している場所を確認できました。