質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

0回答

702閲覧

azure webchatでマルチターン(follow-up prompt)に対応する方法

nao0201

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2020/08/26 14:25

QnA Makerの回答にfollow-up promptを追加しています。
webチャットから回答は表示できますが、回答のfollow-up promptを表示させる方法がわかりません。
js版のサンプルは見つけましたが、これをc#で実現するにはどうしたらよいでしょうか?

js

1qnaResultHelper.js 2const { MessageFactory } = require('botbuilder'); 3 4/** 5 * QnA Maker から返ってきた答えを適切な形にしてクライアントへ返す 6 * 7 * @param {string} qnaResult QnA Maker から返ってきたanswer 8 * @returns Activity 9 */ 10module.exports.createAnswer = function(context, qnaResult) { 11 12 if (qnaResult.context && qnaResult.context.prompts && qnaResult.context.prompts.length > 0) { 13 // answerにfollow-up promptが付いている 14 return createPrompt(qnaResult); 15 } else { 16 return qnaResult.answer; 17 } 18} 19 20/** 21 * follow-up prompt をクライアントへ返す 22 * 23 * @param {QnAMakerResult} qnaResult 24 * @returns Activity 25 */ 26function createPrompt(qnaResult) { 27 let title = qnaResult.answer; 28 let prompts = qnaResult.context.prompts; 29 let buttons = []; 30 31 // DisplayOrderで並べ替え 32 prompts.sort(function(a, b) { 33 if (a.displayOrder == b.displayOrder) { 34 return 0; 35 } else if (a.displayOrder < b.displayOrder) { 36 return -1; 37 } 38 return 1; 39 }); 40 41 // follow-up promptのボタンを作る 42 for (let prompt of prompts) { 43 buttons.push(prompt.displayText); 44 } 45 46 return MessageFactory.suggestedActions(buttons, title); 47}

js

1qnaBot.js 2this.onMessage(async (context, next) => { 3 this.logger.log('Calling QnA Maker'); 4 5 const qnaResults = await this.qnaMaker.getAnswers(context); 6 7 // If an answer was received from QnA Maker, send the answer back to the user. 8 if (qnaResults[0]) { 9 // 自作したHelperのメソッドを呼び出す 10 let answer = QnAResultHelper.createAnswer(context, qnaResults[0]); 11 await context.sendActivity(answer); 12 13 // If no answers were returned from QnA Maker, reply with help. 14 } else { 15 await context.sendActivity('お答えできません。他の言い方で質問してみてください。'); 16 } 17 18 // By calling next() you ensure that the next BotHandler is run. 19 await next(); 20});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問