WebSocketへのスキルプロトコルの変更に続いて、以前はC#でのみ利用可能だった新しいStreamingExtensionsライブラリがTypescriptで利用可能になるのを待っていました。 これにより、Typescriptを使用する場合のVirtualAssistantのスキル呼び出しシナリオのブロックが解除されます。
として...開発者
スキルをVirtualAssistantのTypeScriptバージョンに接続できるようにしたい
そのため... C#とTypescriptの間に同等性があります
こんにちはダレンジ、
修正する問題に関するETAはありますか?
ありがとう、
クマール
今週のテストのためにエンドツーエンドで作業することを望んでいます。
更新してくれてありがとう@darrenj 。
この問題に関する更新はありますか@darrenj
こんにちはダレン、
@darrenjは、この作業項目の更新を提供して
あなたの助けに感謝。
ありがとう、
クマール
こんにちは@darrenj 、
ご迷惑をおかけして申し訳ありませんが、これに関する更新はありますか?
ライブラリがバージョン4.6.0(https://botbuilder.myget.org/feed/botbuilder-v4-js-daily/package/npm/botframework-streaming)でリリースされていることを確認しました。これは、Botframeworkと互換性があります。 4.5.0と仮想アシスタント?
ここで飛行中のいくつかのことがあります。1つはあなたが見つけたストリーミング拡張機能の可用性であり、もう1つはスキルライブラリの新しいGAバージョンのタイプスクリプトの可用性です。 来週、Skillsライブラリの最初のパッケージビルドを期待しています。その時点で、C#テンプレートとTypescriptテンプレートの両方の更新を開始して、(単純な)移行手順をテストおよび提供できます。
この作業を1月に使用できるようにすることを目標としており、デイリービルドが利用可能になる時期など、進捗状況に応じてこの問題を更新し続けます。
それまでの間、Javascript / Typescript VAボットはJavaScript / Typescriptで作成されたスキルを呼び出すことができます。これは、ストリーミング拡張機能の依存関係がないため、HTTPを使用するためです。 この問題は、上記の変更がすべての言語に対応するカレンダーのようなC#スキルを呼び出したい場合に発生します。
@darrenjはこれが修正されており、typescript VAからC#スキルを接続できますか? 私はあなたの最後のコメントについて混乱しています。
こんにちは@darrenj 、
これが解決したら、VAのTypeScriptバージョンからToDoのようなcSharpスキルを呼び出すことは可能でしょうか?
現在、C#スキルで使用されるWebSocketTransportに関連するエラーが発生しています。 しかし、私のVAはタイプスクリプトです。
はい。GAバージョンのスキルに移行すると、Websocketへの依存がなくなり、プラットフォーム間でスキルをシームレスに組み合わせることができます。 C#とJSの最新情報を入手し、初期統合に取り組んでいます。目標は、シナリオのブロックを解除するために、今後数週間以内にデイリービルドに変更を加えることです。
こんにちは@darrenj 、
TypescriptVAとTypescriptSkillという別のユースケースがあります。
私の問題は、updateActivityがVA全体でスキルに利用できないことです。これにはストリーミングライブラリが必要です(私が理解している限り)。 WebSocketの依存関係が最新のスキルライブラリ(4.4.9)から削除されていることに実際に気づきました。
理由がわかりません:)別の場所に移動する予定ですか? または?
OK、ボットフレームワークSDK内のスキル機能のGAに関する進捗状況についての最新情報があります。 これにより、VirtualAssistantによってインキュベートされた作業が正式なGAバージョンに移行しました。
ボットが別のボット(スキル)を呼び出す方法を示すサンプルが利用可能です。 主な変更点は、アダプターが統合されたことです。つまり、別のアダプターやストリーミング拡張機能を利用する必要はありません。 C#およびJS 。
私たちは、仮想アシスタント/スキルテンプレートの更新に取り組んでおり、箱から出して(小さな)変更を提供し、既存のスキルを更新するために必要ないくつかの手順に関するドキュメント
あなたがこれに先んじて進歩を遂げることに熱心であるならば、上記のサンプルはあなたにあなたが必要とするすべてを与えるはずです。 準備ができ次第、デイリービルド/変更へのポインターでこの問題を更新します。
@darrenjこの素晴らしいアップデートをありがとう。 本番のバーチャルアシスタントでユニファイドアダプターを活用する前に、
これは、Typescript VAで統合アダプターを使用でき、それでもc#スキルを呼び出すことができることを意味しますか?
待望のアップデート!
昨日0.8リリースを投稿しました。これには、新しいGAスキル機能をサポートし、プレビューを終了するために、すべてのサンプルスキルの更新が含まれています。 Websocketは廃止され、スキル間のWebサービス通信が優先されます。スキルは、「コールバック」HTTP接続を使用して非同期的にボットに通信します。
その結果、既存のバーチャルアシスタントとスキルにいくつかの簡単な更新が行われます。 C#VAの更新はここに記載さここに記載さ
同等のJS / Typescriptジェネレーターの変更は、2月14日までに、既存のVA /スキルの新しいジェネレーターとドキュメントの公開を目指して話し合うときに最終決定されます。 背景の参考として、呼び出しスキルをサポートするための高レベルの手順は、ここにあります。
これらの変更が完了すると、JS / typescript VAがC#スキルを呼び出すことができ、その逆も可能であり、実際にはPythonも呼び出すことができます。
@ darrenj 、typescriptプロジェクトに関する上記のコメントについて何か考えはありますか?
上記のように、はい、いくつかの移行手順があり、それに従って最終決定します
ありがとうございました。
@darrenjさん、JS / TSジェネレーターが変更されてドキュメントの更新がいつリリースされるかについてのニュースはありますか?
ねえ@ darrenj 、VA(C#)からタイプスクリプトスキル作業への通信が上記の新しいフレームワーク(SDK)で行われたかどうかをお知らせください。 あなたはそれが2月14日までに行われると言った。
あなたの助けに感謝
@darrenjこのチケットの更新はありますか?
@darrenj今日、VA / RootBot(Typescript)からC#スキルを呼び出すように移行または修正しようとしました。 typescript rootbot / VAの例がないスキルコンシューマーを
新しいタイプスクリプトVA /スキルが新しいGAスキルを使用できるようにする変更について、一連のプルリクエストが進行中です。 チケットがマージされ、デイリービルドが利用可能になったら、チケットを更新します。
それまでの間、既存のVAを移行する手順に関するドラフトドキュメントをご覧ください。フィードバックをお待ちしております。
https://github.com/microsoft/botframework-solutions/pull/3123
こんにちは@darrenj 、更新に感謝します。現時点で私が持っている唯一の質問は、「botbuilder-solutions」についてです。 ローカルバージョンを使用する必要がありますか? どこから? 将来のリリースのように見えるこのブランチをここで見つけました(https://github.com/microsoft/botframework-solutions/tree/feature/southworks/0.7/parity-botbuilder-solutions/sdk/typescript/libraries/botbuilder-solutions) 、そうですか?
前もって感謝します。
@ Batta32人々が命令をテストするために使用できるコードのブランチをすばやく確認できますか(新しいライブラリが公開される前に)
@ tommyJimmy87 - -TypeScriptのGAスキルSDKのソリューション。
ブランチ: feature / southworks / ga-skills-sdk / botbuilder-solutions
ライブラリをローカルで使用するには、次の手順に従ってください(前述のブランチを使用)。
npm install
を実行しますnpm run build
を実行しますnpm pack
を実行して、ライブラリの.tgzファイルを作成しますpackage.json
ファイルを開きますnpm install
を実行します現在、これらの変更を検証しています。そのPRでフィードバックを送信することを躊躇しないでください。できるだけ早く、それらを確認します。
この問題は30日間開いており、アクティビティがないため、古くなっています。 古いラベルやコメントを削除しないと、5日で閉鎖されます
@ darrenj -VA(C#)からノードjsであるスキルへの接続に対して以下に記載されている変更を行うことができるかどうかをお知らせください。
約束どおり、SDK全体で一連の変更を行ったので、しばらくお待ちいただきますようお願いいたします。
さらに、VAジェネレーターの
これは、現在Azureの変更ウィンドウを待機している1.0リリースを処理するときに、npmに公開されます。 私たちは月末までに期待しています。
上記に関するご質問/問題は、新たな問題を提起してください。私たちがお手伝いします。
移行のための@ Batta32 botbuilder-solutions 4.5.0-preview? 移行の新しいリリースは正しいと思いますか?
@ Batta32新しいSDK
こんにちは@ tommyJimmy87 & @ tomSauret847 、公開される前に、MyGetで公開されたパッケージをデイリービルドとして使用できます。
botbuilder-solutions
デイリービルドを統合するには、2つの異なるオプションがあります。最初のオプションが最も簡単なので、最初のオプションをお勧めします(ボットのpackage-lock
とnode_modules
を削除することを考慮してください) :
.npmrc
レジストリにファイルポインティングをhttps://botbuilder.myget.org/F/aitemplates/npm
、および更新package.json
指すようにbotbuilder-solutions
にバージョンを4.5.0-preview223
botbuilder-solutions
のtgzをダウンロードしますnpm pack [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm
generator-botbuilder-assistant
を使用する場合は、すでに持っている場合はアンインストールしてから、MyGetのいずれかをインストールする必要があります。
npm uninstall -g generator-botbuilder-assistant
npm install -g [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm
@ Batta32プレビュービルドで見つかった問題をどこに報告する必要がありますか? プレビュージェネレーターを使用して新しいVAを生成し、プレビューSDKを使用しましたが、カスタマイズせずにVAを実行しようとすると、無効なダイアログが追加されているというエラーが表示されます。
エラー:DialogSet.add():無効なダイアログが追加されています。
@ darrenj-デイリービルドの問題を報告するための最良のアプローチは何ですか?
@ tomSauret847-その間、このスレッドで問題を環境や再現手順と共有できます😊!
環境はWindows10コンピューターでローカルに実行されています
手順:プレビュージェネレーターを実行して、空白のVAを作成します
appsettings.jsonとcognitivemodels.jsonを更新します
https://botbuilder.myget.org/F/aitemplates/npmを指す.npmrcファイルを追加し
node_modulesとpackage-lock.jsonを削除します
npm [email protected]を実行します
npm installを実行して、他のすべてのパッケージをインストールします
NPMビルドを実行する
npm runstartを実行します
次に、次のエラーが表示されます
C:UsersuserDesktopBlankVAtestassistantnode_modulesapplicationinsightsoutAutoCollectionExceptions.js:34
THIS_IS_APPLICATION_INSIGHTS_RETHROWING_YOUR_EXCEPTIONをスローします。 //エラーはアプリのどこかで発生しました
^
エラー:DialogSet.add():無効なダイアログが追加されています。
DialogSet.addで(C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibdialogSet.js:87:19)
MainDialog.addDialog(C:UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-dialogslibcomponentDialog.js:148:22)
新しいMainDialogで(C:UsersuserDesktopBlankVAtestassistantlibdialogsmainDialog.js:34:14)
オブジェクトで。
Module._compileで(internal / modules / cjs / loader.js:778:30)
Object.Module._extensions..js(internal / modules / cjs / loader.js:789:10)で
Module.load(internal / modules / cjs / loader.js:653:32)で
tryModuleLoad(internal / modules / cjs / loader.js:593:12)で
Function.Module._load(internal / modules / cjs / loader.js:585:3)で
Function.Module.runMain(internal / modules / cjs / loader.js:831:12)で
ありがとう! 手順に従って問題を再現しましたが、依存関係のインストール方法にエラーがあり、 botbuilder-solutions
をインストールすると、残りの部分が分離されて競合が発生します。
次の手順に従ってください:( node_modules
とpackage-lock
削除します)
package.json
して4.5.0-preview223
でバージョンbotbuilder-solutions
npm install
実行するすべての依存関係をインストールしますnpm run build
実行するソリューションを構築するnpm run start
実行してバーチャルアシスタントを開始します@ tomSauret847他に問題が発生した場合は、お知らせください。 最終検証を完了しており、完了したら新しいビルドをnpmにプッシュします。
こんにちは@darrenj 、新しいテンプレートマネージャーでlgファイルを解決しようとするとエラーが発生しました。基本的には、MS Teamsからロケールen-USを受信していますが、en-us(小文字)と認識されません。 たぶんここで下部ケースを追加するif (this.templateEnginesPerLocale.has(locale))
問題を解決します(LocaleTemplateEngineManager.tsは、61行目)。 今のところこの問題を回避するために、これをindex.tsに追加する必要がありました。
const supportedLocales: string[] = ['en-us', 'en-US','de-de'];
supportedLocales.forEach((locale: string) => {
const localeTemplateFiles: string[] = [];
templateFiles.forEach(template => {
// LG template for en-us does not include locale in file extension.
if (locale === 'en-us' || locale === 'en-US') {
localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.lg`));
}
else {
localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.${ locale }.lg`));
}
});
localizedTemplates.set(locale, localeTemplateFiles);
});
これはうまくいきますが、もっと良い方法でできるかどうかはわかりません。
ありがとう。 @ Batta32-提供されたSDK MultiLanguageLG
を使用するソリューションLibでLocaleTemplateEngineに変更があるかどうかを確認できますか? これが混合ケースをエレガントに処理することを願っていますが、いくつかのテストは検証するのに適しています。
@ lzc850612 csharp GA RCを使用してクイック検証を実行し、アクティビティのボットに入る混合ケースロケールで期待どおりに機能することを再確認できますか?
確かに@darrenj 、その変更を確認します!
@darrenj進捗状況の更新をありがとう! tommyJimmyが指摘したのと同じロケールの問題がありましたが、localeTemplateManagerにlocale.toLowerCaseを追加することでそれを乗り越えました。 現在、カスタムスキルをVAにアタッチしていますが、追跡しようとしているエラーが発生します。 スキルはVAに501エラーを返していますが、defaultActitivityHandler.tsのonMessage関数でメッセージを処理しています。スキルが処理するために、アクティビティをメインダイアログに渡していないだけです。 appSettings.jsonファイルを更新してスキルを追加しましたが、スキルはアクティビティを受信しています。
@ Batta32転送パスにまだlocalTemplateEngineManagerが含まれているかどうかを確認したかったのです。 プレビュービルドから欠落していて、responseManagerのみが存在することに気付きました。 今後は、応答マネージャーを使用する必要がありますか、それともロケールテンプレートを追加し直しますか?
@ Batta32VAのスキルとの通信で受け取ったエラーを追跡することができました。 dialogExモジュールには、スキルが開始されたVAにトレースを送り返す送信トレースがあります。 このsendActivityは、呼び出されると次のエラーをスローします。
エラー:/ api / messages / v3 / conversations / 5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo / Activities / 5b61c920-841b-11ea-b148-8581dc55a9bb is not present
会話IDがSkillConversationIdFactoryに追加されると、スキルは新しい会話IDにポストバックできません。
アップデート:
この問題の原因となっているskillHostEndpointにタイプミスがありました。 修正したら、スキルを添付してVAと対話させることができるようになりました。
@ Batta32 @darrenj VAでチットチャットを使用しようとすると、予期しない動作が発生します。基本的に、ユーザーがボットに何かを要求するたびに、イントロステップで最初のメッセージが再表示されます。チットチャットの場合、UXほど優れていません。 。 これは予想されることですか、それとも何かが足りないのですか?
(メッセージを保持してくださいはカスタムメッセージですのでご安心ください
)
@ Batta32VAのスキルとの通信で受け取ったエラーを追跡することができました。 dialogExモジュールには、スキルが開始されたVAにトレースを送り返す送信トレースがあります。 このsendActivityは、呼び出されると次のエラーをスローします。
エラー:/ api / messages / v3 / conversations / 5659a380-841b-11ea-bed3-831b5a6aa1eb%7Clivechat-dlpskill-emulator-skillconvo / Activities / 5b61c920-841b-11ea-b148-8581dc55a9bb is not present
会話IDがSkillConversationIdFactoryに追加されると、スキルは新しい会話IDにポストバックできません。アップデート:
この問題の原因となっているskillHostEndpointにタイプミスがありました。 修正したら、スキルを添付してVAと対話させることができるようになりました。
@ tomSauret847あなたの問題は何でしたか? 同じエラーが発生していて、それが何であるかがわからないためです。 私の仮想アシスタントにはこれがあります:
"skillHostEndpoint": "https://1c34e472.ngrok.io/api/skills"
これはVAのエンドポイントです。
Error: /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588679971133 does not exist
at new RestError (/Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1397:28)
at /Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1849:37
at process._tickCallback (internal/process/next_tick.js:68:7)
@ Batta32VAと1つのスキルをAzureにデプロイできました。 Webチャットを使用すると、すべてが期待どおりに機能します。 チームチャネルを使用しようとすると、次のエラーが表示されます。 Webチャットが正しくルーティングされているため、これはTeamsチャネルに分離されているようです。
エラー:スキルIDの呼び出し中にエラーが発生しました:「https:// {appname} .azurewebsites.net / api / kill / messages」の「dlpskill」(ステータスは500)。
エラー:/ API /スキル/ V3 /会話/:1lFWWXG9CVtdrkA76VLFeS9CbYWzsHVr9mQ4S7BqDpL4K5WNIc0ND6mqaaj_QsSqH-qUU-Gb2vLX3HQ4CpG3ZDPCbR0XKLtJGOqW0kwKUbe2HKv5C9fs1sjLSO4EvoE5h-dlpskill-msteams-skillconvo /活動/ 1588712064379は存在しません。
SkillDialogで。
Generator.nextで(
達成時(D:homesitewwwrootnode_modulesbotbuilder-dialogslibskillDialog.js:11:58)
process._tickCallback(internal / process / next_tick.js:68:7)で
@ tommyJimmy87 VAからスキルにローカルで通信するためにngrokを使用していなかったため、skillHostEndpointにlocalhost:3979 / api / killsを使用して
こんにちは@ Batta32 、私は@ tomSauret847に同意します。おそらく、
少しデバッグした後、私が見つけたものを説明しようとするかもしれません:
1) ChannelServiceHandler
すべてのメソッドが実装されていません。つまり、 /api/skills
が呼び出されると、毎回エラーコードが返されます。
すなわちファイル:ChannelServiceHandler.ts(botbuilder)、行:219
protected async onGetActivityMembers(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string): Promise<ChannelAccount[]> {
throw new StatusCodeError(StatusCodes.NOT_IMPLEMENTED, `ChannelServiceHandler.onGetActivityMembers(): ${StatusCodes.NOT_IMPLEMENTED}: ${STATUS_CODES[StatusCodes.NOT_IMPLEMENTED]}`);
}
2) /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588761991793
この場合、代わりに会話IDの解析に問題があり、エラー結果は常にリソースが存在しないことですが、同じURLを呼び出そうとすると、より単純な文字列でconversationIdを変更しますそれは機能します(ただし、前のポイントのためにメソッドが実装されないという結果になります)。
こんにちは@ tommyJimmy87 、 @ tomSauret847-遅れてすみません。 GA Skills SDKの変更を使用して、Teams Channelのシナリオを確認し、後でこのスレッドに戻ります😊。
@ tommyJimmy87 -Microsoft 正常に再現しました。 問題が修正され次第、このスレッドに戻ります。
ありがとう!
こんにちは@ tommyJimmy87 、 @ tomSauret847 、問題の原因を見つけることに成功しました。
問題は、アクティビティがスキルから仮想アシスタントに返送されるときに_ ':' _文字が_ '%3A'_に
どうやら、この動作は、前述のように文字を置き換えるaxios依存関係で実行されます。
最後になりましたが、microsoft / botbuilder-js#2182に問題があり、botbuilderのaxiosが置き換えられ、_R10_の準備ができているというタグが付けられ
問題を説明する
最後に、皆さんのために新しいアップデートがあり次第、このスレッドに戻ります😊
_conversationIdsの不一致_
_axios依存関係は ':'を '%3A'_に置き換えます
@ Batta32間もなく修正されると思いますか、それとも少し時間がかかると思いますか?
@ tommyJimmy87、@ tomSauret847 -私たちは、問題がであることに気づいたMS-残り-jsの代わりにaxios 。
問題は、スキルとバーチャルアシスタントの間のconversationId
不一致です。 この問題は、Teamsの_conversationId_の_ ':' _文字が_ '%3A'_に置き換えられているために発生します。これ戻す必要があります。 最後の変換は、 _axios_のようにsendOperationRequestに実装されていません。
間違いでごめんなさい😊。
_encodeURIComponentは '%3A'を 'に置き換えません:' _
_axiosとms-rest-jsのエンコーディングの違い_
@ Batta32ms -rest-jsバージョン<2.0のデフォルトエージェントは://github.com/Azure/ms-rest-js/blob/1.x/lib/axiosHttpClient.ts
この問題を解決する1つの方法は、SkillConversationIdFactory実装内でencodeURIを使用することだと思います。 このように、基盤となるエージェントは、conversation.idをファクトリ内に保存されているものから変更しません。
@EricDahlvangに感謝します。 encodeURI
内でSkillConversationIdFactory
encodeURI
を使用する代替案を検討します。
@EricDahlvangは-追加encodeURI
でのSkillConversationIdFactory
スキルが既にエンコードされたとして、問題が解決しないconversationId
仮想アシスタントに戻って活動を送信する前に。
この問題は、MicrosoftTeamsから受信したときのconversationIdの長さに関連している可能性があることがわかりました。 元のconversationId
すると、VAのエンドポイントがヒットしないことに気付きましたが、 conversationId
から一部の文字をトリミングすると正しくヒットします。
最後になりましたが、この問題はC#には存在しません。
_エンドポイントは元のconversationIdでヒットしません_
_エンドポイントはトリミングされたconversationIdでヒットします_
_この問題はC#には存在しません_
@ Batta32 SkillConversationIdFactoryがencodeURIを使用している場合、スキルはそのconversation.idを受け取り、それに応じて応答します。 私はこれが必要であるとかなり確信しています。
また、はい、restifyの使用中に長い会話IDに問題があります。 このサンプルで問題を解決する方法について説明します: https :
//このキーにはデフォルトで100文字の制限があります。 index.jsの
restify.createServer({ maxParamLength: 1000 });
で増加します。
@EricDahlvangこの情報をありがとうございます。 VAとスキルの両方にアップデートを追加しました。 これで、VAがTeamsチャネルのスキルとエラーなしで通信できるようになりました。
提供された情報をありがとう@EricDahlvang ! 我々は改善するPR#3359を作成したmaxParamLength
とものバージョンに更新@types/restify@^8.4.2
。
@ tommyJimmy87 、 @ tomSauret847に感謝します。これらの変更がマージされるとすぐに、テストできるようになります😊。
@ Batta32もう一度ご迷惑を
@ Batta32私は実際にこれを試しました、実装は次のようになります:
protected async onUpdateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string, activity: Activity): Promise<ResourceResponse> {
return await this.updateActivity(claimsIdentity, conversationId, activityId, activity);
}
また、 updateActivity
関数は次のとおりです。
private async updateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, replyToActivityId: string, activity: Activity): Promise<ResourceResponse> {
let skillConversationReference: SkillConversationReference;
try {
skillConversationReference = await this.conversationIdFactory.getSkillConversationReference(conversationId);
} catch (err) {
// If the factory has overridden getSkillConversationReference, call the deprecated getConversationReference().
// In this scenario, the oAuthScope paired with the ConversationReference can only be used for talking with
// an official channel, not another bot.
if (err.message === 'Not Implemented') {
const conversationReference = await this.conversationIdFactory.getConversationReference(conversationId);
skillConversationReference = {
conversationReference,
oAuthScope: JwtTokenValidation.isGovernment(this.channelService) ?
GovernmentConstants.ToChannelFromBotOAuthScope :
AuthenticationConstants.ToChannelFromBotOAuthScope
};
} else {
// Re-throw all other errors.
throw err;
}
}
if (!skillConversationReference) {
throw new Error('skillConversationReference not found');
}
if (!skillConversationReference.conversationReference) {
throw new Error('conversationReference not found.');
}
const activityConversationReference = TurnContext.getConversationReference(activity);
/**
* Callback passed to the BotFrameworkAdapter.createConversation() call.
* This function does the following:
* - Caches the ClaimsIdentity on the TurnContext.turnState
* - Applies the correct ConversationReference to the Activity for sending to the user-router conversation.
* - For EndOfConversation Activities received from the Skill, removes the ConversationReference from the
* ConversationIdFactory
*/
const callback = async (context: TurnContext): Promise<void> => {
const adapter: BotFrameworkAdapter = (context.adapter as BotFrameworkAdapter);
// Cache the ClaimsIdentity and ConnectorClient on the context so that it's available inside of the bot's logic.
context.turnState.set(adapter.BotIdentityKey, claimsIdentity);
context.turnState.set(this.SkillConversationReferenceKey, activityConversationReference);
activity = TurnContext.applyConversationReference(activity, skillConversationReference.conversationReference) as Activity;
const client = adapter.createConnectorClient(activity.serviceUrl);
context.turnState.set(adapter.ConnectorClientKey, client);
context.activity.id = replyToActivityId;
await context.updateActivity(context.activity);
return;
};
// Add the channel service URL to the trusted services list so we can send messages back.
// the service URL for skills is trusted because it is applied based on the original request
// received by the root bot.
AppCredentials.trustServiceUrl(skillConversationReference.conversationReference.serviceUrl);
await (this.adapter as BotFrameworkAdapter).continueConversation(skillConversationReference.conversationReference, skillConversationReference.oAuthScope, callback);
return { id: uuid() };
}
これは基本的に、 SkillHandler
すでに実装されているprocessActivity
関数のコピーですが、最後にcontext.updateActivity(context.activity)
を呼び出します。
私はこのエラーが発生していると言いました:
(node:68325) UnhandledPromiseRejectionWarning: Error: Failed to decrypt conversation id
おそらく私が欠けているか、間違っていることがあります。
@ tommyJimmy87-私たちはあなたのシナリオを再現しようとします、そして私たちは後であなたに戻ります😊。
@ Batta32バーチャルアシスタントの「ヘルプカード」で、アクティブスキルのヘルプカードが表示されていないことに気づきました。 スキルダイアログで「ヘルプ」割り込みを押すと、スキルではなくVAのヘルプカードが表示されます。 アクティブなスキルでactiveSkillProperty状態を設定することを含む最後のリリースに更新しました。 この問題を修正する方法についてのアイデアはありますか? アクティブなダイアログがまだVAにあるダイアログとして登録されており、アクティブなスキルではない状態をログアウトします。
こんにちは@ tommyJimmy87 、 @ tomSauret847 、これらの問題を報告していただきありがとう
generator -bot-virtualassistant @ 1.0.0 、 bot -solutions @ 1.0.0 、および[email protected]がnpmjsで公開され、ブランチmaster
にマージされると、リポジトリに問題を作成して、問題をよりよく説明し、フォローアップします😊。
最も参考になるコメント
@ Batta32 SkillConversationIdFactoryがencodeURIを使用している場合、スキルはそのconversation.idを受け取り、それに応じて応答します。 私はこれが必要であるとかなり確信しています。
また、はい、restifyの使用中に長い会話IDに問題があります。 このサンプルで問題を解決する方法について説明します: https :