2017-12-18 13 views
1

QnA Maker APIで、結果が見つからない場合、デフォルトのメッセージが返されるか、そのメッセージを変更できますが、関数/メソッド結果が得られないとき。以下はコードです。Azure Bot Framework、QnA Maker API、QnAダイアログのクエリテキストの取得方法

public QnaDialog(): base(
     new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnaSubscriptionKey"], 
     ConfigurationManager.AppSettings["QnaKnowledgebaseId"], "Hmm, I wasn't able to find any relevant content. Can you try asking in a different way? or try with typing help.", 0.5))) 
    { 
     //this is what i want to call, this is working but **i am not able to get query text here** 
     SendEmail email = new SendEmail(); 
     email.SendEmailtoAdmin("Query_Text", "Email ID"); 
    } 

答えて

3

GitHubのQnaMakerDialogの実装hereを見てください。

いくつかのオプションがあることがわかります.Qnaの検索後に呼び出されるDefaultWaitNextMessageAsyncメソッドをオーバーライドする方が簡単です。

protected virtual async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result) 
    { 
     if (result.Answers.Count == 0) 
     { 
      // Here you have the query text in message.Text so: 
      SendEmail email = new SendEmail(); 
      email.SendEmailtoAdmin(message.Text, "Email ID"); 
     } 

     context.Done(true); 
    } 

あなたはQNAが見つかりませに関する送信されたメッセージを避けたい場合は、あなたの代わりにMessageReceivedAsyncをオーバーライドして、ブロック内のコードを変更する必要があることに注意してくださいif (sendDefaultMessageAndWait)

関連する問題