拡張機能のための Node.js ボットの構成
2023 年 9 月 1 日から、ネットワークの分離に Azure サービス タグ メソッドを使用することを強くお勧めします。 DL-ASE の稼働率は、非常に具体的なシナリオに限定する必要があります。 運用環境でこのソリューションを実装する前に、サポート チームに相談してガイダンスを受けることをお勧めします。
この記事の対象: SDK v4
この記事では、名前付きパイプを使って機能するように Node.js ボットを更新する方法、およびボットがホストされている Azure App Service リソースで Direct Line App Service 拡張機能を有効にする方法について説明します。
前提条件
- Azure アカウント。 まだお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure にデプロイされた Node.js ボット。
- Node.js 4.7 以降用の Bot Framework SDK。
Direct Line App Service 拡張機能を有効にする
このセクションでは、ボットの Direct Line チャンネル構成から App Service 拡張キーを使用して、Direct Line App Service 拡張機能を有効にする方法を説明します。
ボット コードを更新する
アプリで Direct Line App Service 拡張機能の名前付きパイプ を使用できるようにするには:
ボットの
index.js
ファイルを編集する。ボットのアダプターを作成する行を見つけます。
アダプターが作成されたら、次のステートメントを追加します。これにより、App Service 名が環境からプルされ、適切な名前付きパイプに接続するようにアダプターに指示されます。
ボットが
CloudAdapter
を使用している場合 (推奨):adapter.connectNamedPipe( process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline', async (context) => { await myBot.run(context); }, process.env.MicrosoftAppId, AuthenticationConstants.ToChannelFromBotOAuthScope);
お使いのボットが非推奨
BotFrameworkAdapter
を使用している場合:adapter.useNamedPipe(async (context) => { await myBot.run(context); }, process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline' );
変更を保存します。
ボットの
web.config
ファイルを編集して、Direct Line App Service 拡張機能に必要なAspNetCore
ハンドラーおよびルールをサービス要求に追加します。ボットの
web.config
ファイルを編集する。webSocket
タグのenabled
属性をtrue
に変更します。<webSocket enabled="true" />
<handlers>
セクションで、次のハンドラーの登録を追加します。<add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<rewrite>
セクションで、ルールの一覧に次の規則を追加します。<!-- Do not interfere with Direct Line App Service extension requests. (This rule should be as high in the rules section as possible to avoid conflicts.) --> <rule name ="DLASE" stopProcessing="true"> <conditions> <add input="{REQUEST_URI}" pattern="^/.bot"/> </conditions> </rule>
変更を保存します。
Azure に自分の更新されたボットを Azure に再度デプロイする。
ボット Direct Line App Service 拡張機能を有効にする
Azure portal で Azure Bot リソースに移動します。
- [設定]で、ボットがメッセージを受け入れるチャンネルを構成する[チャンネル]を選択します。
- まだ有効になっていない場合は、[使用可能なチャンネル] の一覧から Direct Line チャンネルを選択してチャンネルを有効にします。
- [Direct Line] を有効にした後、[チャンネル] ページからもう一度選択します。
- [App Service 拡張機能] タブを選択します。
- [App Service 拡張機能キー] で、対応するキーの横にある目のアイコンを選択します。
ホーム ページに移動し、ページの上部にある [App Services] を選択します。 または、ポータル メニューを表示し、[App Services] メニュー項目を選択します。 Azure に 「App Services」ページが表示されます。
検索ボックスに、[Azure Bot] リソース名を入力します。 リソースが一覧表示されます。
アイコンまたはメニュー項目にカーソルを合わせると、最後に表示されたリソースの一覧が表示されます。 Azure Bot リソースが一覧表示される可能性があります。
リソース リンクを選択します。
[設定] セクションで、[構成] メニュー項目を選択します。
右のパネルで、次の設定を追加します。
名前 値 DirectLineExtensionKey 前にコピーした App Service 拡張キーの値。 DIRECTLINE_EXTENSION_VERSION latest パブリック ポータルを介して Azure にアクセスしない主権者または制限された Azure クラウドでボットがホストされている場合は、次の設定も追加する必要があります。
名前 値 DirectLineExtensionABSEndpoint ボットがホストされている Azure クラウドに固有のエンドポイント。 たとえば、USGov クラウドの場合、エンドポイントは https://directline.botframework.azure.us/v3/extension
です。[構成] セクション内から、[全般] 設定セクションをクリックし、[Web ソケット をオンにします。
[保存] を選択して設定を保存します。 これにより、Azure App Service が再起動されます。
Direct Line 拡張機能とボットが構成されていることを確認する
ブラウザーで https://<your_app_service>.azurewebsites.net/.bot
に移動します。 すべて正しければ、このページは次の JSON コンテンツを返します。
{"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
- v によって、Direct Line App Service 拡張機能のビルドバージョンが表示されます。
- k は、拡張機能がその構成から拡張キーを読み取ることができたかどうかを示します。
- initialized は、拡張機能が Azure AI Bot Service からボット メタデータをダウンロードできたかどうかを示します。
- ib は、拡張機能がボットへの受信接続を確立できたかどうかを示します。
- ob は、拡張機能がボットへの送信接続を確立できたかどうかを示します。
トラブルシューティング
.bot エンドポイント によって表示される ib と ob の値が false の場合、ボットと Direct Line App Service 拡張機能は相互に接続できません。
- 名前付きパイプを使用するためのコードチェックダブルがボットに追加されました。
- ボットが起動して実行できることを確認します。 便利なツールは、WebChat でのテスト、追加のチャネルの接続、リモート デバッグ、またはログ記録です。
- ボットがホストされている Azure App Service 全体を再起動して、すべてのプロセスのクリーンを確実に開始します。
.bot エンドポイントの初期化された値が false の場合、Direct Line App Service 拡張機能は、上記のボットのアプリケーション 設定に追加された App Service 拡張機能キーを検証できません。
- 値が正しく入力されたことを確認します。
- ボット の [Direct Line の構成] ページに表示されている代替拡張キーに切り替えます。