問題タブ [botbuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
botframework - Microsoft Bot Framework でボットの登録を自動化するために使用できる REST スタイルの API はありますか?
MS Bot Framework ( https://dev.botframework.com/bots/new )でボットの登録を自動化したいのですが、そうするための REST エンドポイントまたはクライアント ライブラリが見つかりません。
ボットの登録を自動化することはできますか? それとも、Web ポータルから手動で行う必要がありますか?
node.js - ダイアログ フローからタップすると、Bot Builder Messenger ボタンのクリックが正しくルーティングされない
複数のカードとボタンを備えた HeroCard カルーセルがあります。カルーセルが表示された直後にこれらのボタンをタップすると、正しくルーティングされます。ただし、ダイアログの後の段階でタップされた場合、ルーティングは機能しません。
ボタンが順不同でタップされた場合 (つまり、カルーセルが表示された直後以外にタップされた場合)、ダイアログを正しくルーティングするボタンを取得するにはどうすればよいですか?
.net - Azure でボット V3 を公開した後、Bot Framework Emulator を使用中にエラーが発生する
バージョン 1.1.0 の Bot Builder を使用して非常に単純なボットを作成しましたが、ローカルでも、Azure で公開した後でも問題なく動作しました。ただし、バージョン 3 に変更 (およびそれぞれのコードを変更) すると、ボットはローカルで動作しますが、Azure で公開した後は (ボット エミュレーターでは) 動作しません。エミュレータを間違った方法で使用しているのか、それとも間違って公開しているのかわかりません。
Webconfig の BotId、MicrosoftAppId、および MicrosoftAppPassword タグを変更しました。
Azureページで「ボットへの接続をテストする」ボタンを使用すると、「受け入れられました」と応答します。
エミュレーターでは、ボットの URL を " https://XXXXXX.azurewebsites.net/api/messages " として、エミュレーターの URL を " http://localhost:9000/ " として、それぞれの AppId と AppPassword を使用しています。エミュレータのバージョンは 3.0.0.59 です
会話を開始しようとすると、500 InternalError {"エラーが発生しました"} が表示されます
何が間違っているかについてのアイデアはありますか?
ありがとう
node.js - Docker 上のボット フレームワーク エミュレーターと、Bot Builder for Node.js に関するその他の問題
bot-framework-emulatorと Bot Builder for Node.js Builder を Linux で動作させるのに苦労しています。
Linux 用の bot-framework-emulator には mono が必要なため、次の Dockerfile を使用して Docker で実行することにしました。
コマンドで開始しています(ポート9000も公開しています):
docker run -it --rm -p 9000:9000 bfemulator
それはうまく始まり、うまくいっているようです。そして、ここで最初の質問です。bot-framework-emulatorページは次のように宣言します。
Mac および Linux で開発している人々のために、mono を使用して動作するコンソールのみのバージョンを作成しました。
bot emu の Windows バリアントとして Web インターフェイスが含まれていないということですか? netstat -alは、BFEmulator.exe がポート 9000 でリッスンしていることを報告しますが、localhost:9000 にアクセスすると Docker ホストからアクセスできません。docker コンテナー内からもアクセスできません。
2 つ目の問題は、BFEmulator のコンソール モードを使用することさえできないことです。私のホストでは、「Microsoft Bot Framework」にデプロイすると正常に動作する nodejs docker bot example を実行しています。
コード例は次のとおりです。
しかし、BFEmulator で実行すると、上記のボット サーバーは次のように報告します。
ボットの例でパスv3/botstate/emulator/users
が宣言されていないことを理解しています。私の質問は、nodejsボットビルダーでエミュレーターを使用することは可能ですか?
c# - Microsoft Bot Framework で context.Call() または context.Forward() を使用して IDialog が呼び出されたかどうかを区別する
MSボットフレームワークを使用して構築されたボットに、次のように開始するサブダイアログがあります-標準的な方法:
このダイアログは、前の画面でユーザーが「フライト」というボタンをタップしたか、フライト番号をすぐに入力したかに応じて、2 つの異なる方法で呼び出されます。親ダイアログのコードは次のとおりです。
質問:FlightsDialog
そのダイアログが または を使用して呼び出されたかどうかを ( 内から) どうすれば知ることができますcontext.Call()
かcontext.Forward()
? これは、 の場合context.Forward()
、StartAsync()
ユーザーにフライト番号の入力を求めるプロンプトを出力してはならないためです。ユーザーは既にこれを行っています。
私が持っている最良のアイデアは、ConversationData
以下のようにまたはユーザーデータにフラグを保存し、IDialog からアクセスすることですが、もっと良い方法があると思いましたか?
c# - Bot Framework のエラー 500、InvalidOperationException: 非同期操作の保留中に非同期モジュールまたはハンドラーが完了しました
Azure で実行される C#/MS Bot Framework で構築されたボットがあります。正常に動作しますが、Azure の HTTP ログには、失敗した HTTP 要求が多数あり、全体の約 20% です。
失敗したリクエストのトレースを有効にすると、ログに次のように表示されました。
URL: /api/メッセージ
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、例外スタック トレースを使用して特定できます。
[InvalidOperationException: 非同期操作がまだ保留中に、非同期モジュールまたはハンドラーが完了しました。]
ログから、スタック トレースを含む詳細を抽出できませんでした (空です)。
ボットはエミュレーターでも正常に動作します。一見失敗したように見える要求にもかかわらず、ユーザーは通常どおりボットと対話できますが、Facebook を介してボットと通信すると、失敗した要求が表示されます。
コードのどの部分がこれを引き起こしているのかさえわかりません。私の他のボットにはこの問題はないようです。
context.Done(this)
ダイアログを終了するために使用している可能性があると思いますが、これを使用するのは通常の方法のようです。
コードのどの部分がこれを引き起こす可能性があるか、またはエラーに関する詳細を抽出する方法についてのポインタやアイデアをいただければ幸いです。ありがとう。
c# - BotBuilder で FormFlow 中にプロンプトを表示しない方法は?
フィールドの 1 つが処理が非常に難しいフリー テキストである FormFlow を設計しようとしています。ユーザーは 1 つの項目について説明するように求められますが、次のようになります。
- 説明は 200 語以上である必要があります
- 説明は、単一のメッセージとして送信する必要はありません
そこで、文字列フィールドを作成し、ユーザーに説明を求めました。説明が短すぎる場合は、前のフィールドに基づいてFieldReflector
withを使用して、追加のテキストを再度要求します。.SetActive
問題は、これを黙って作成する方法がわからないことです (最初にのみ最小量の単語を警告し、長さの要件を満たすまでコンテンツを取得し続けたいと思います)。
validate
また、すべての検証チェックで入力を別の場所に集約することを変更して、を使用しようとしました。しかし、この方法では、ボットは次の試行の前に (明らかに) 何らかのフィードバックを行う必要があります。
おそらく LUIS で停止する意図を検出して、このフィールドへの入力を停止する巧妙な方法を設計する必要がありますが、当面の目標は、このフィールドに複数のメッセージを簡単に入力でき、中断がないようにすることです。
c# - タスクを使用した BotBuilder 非同期カウンターの実装が機能しない
メッセージがまばらになるまで応答を保持することで、ボットをより流動的にしようとしています。
私のアイデアは単純でした。メッセージを受信するたびに、遅延タスクを生成して、最近のアクティビティに応答する必要があるかどうかを将来の私に通知します。
問題は、_patience
カウンターが増加するだけで、決して減少しないということです。理由はわかりません。フレームワークについて言及せずにこの質問を投稿しましたが、コンソール アプリケーションで MWE を見つけようとした後、すべてが機能しました。フレームワークが状態を保持する方法に関連する何かがあると思いますが、よくわかりません。
_patience
いくつかのメッセージを送信Ping
してから、ボット エミュレーターでいくつかのアクティビティを送信することで、増加しているだけであることを証明できます。