Exemple #1
0
        /// <summary>
        /// 詢問問題的動作
        /// </summary>
        /// <param name="value"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public KBModel.GenerateAnswerResultModel GenerateAnswer(string strKbId, KBModel.GenerateAnswerModel value, out HttpStatusCode code)
        {
            KBModel.GenerateAnswerResultModel result = null;
            string strUrl    = $"/{strKbId}/generateAnswer";
            string strResult = Utility.CallQnAMaker(strUrl, "POST", JsonConvert.SerializeObject(value), this.SubscriptionKey, out code);

            if (code == HttpStatusCode.OK)
            {
                result = JsonConvert.DeserializeObject <KBModel.GenerateAnswerResultModel>(strResult);
            }

            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 將取得的回答資料放入到控制項之中
        /// </summary>
        private void BindData(KBModel.GenerateAnswerResultModel value)
        {
            // 取出最相似的回覆,並放在文字方塊中
            if (value.answers.Count > 0)
            {
                txtAnswer.Text = value.answers[0].answer;

                gvAnswerList.DataSource = null;
                gvAnswerList.Refresh();
                gvAnswerList.DataSource = value.answers;
            }
            else
            {
                MessageBox.Show("found not any answer");
            }
        }
        /// <summary>
        /// 處理送出 Question 取回 Answer
        /// </summary>
        /// <param name="pquestion"></param>
        private void QNAMakerGenerateAnswer(string pquestion)
        {
            KBModel.GenerateAnswerModel objQuery = new KBModel.GenerateAnswerModel()
            {
                question = pquestion,
                top      = 1,
            };
            maduka_QnAMakerLibrary.API.QnAMaker QNAMaker = new maduka_QnAMakerLibrary.API.QnAMaker();
            QNAMaker.SubscriptionKey = SubscriptionKey;
            HttpStatusCode code = HttpStatusCode.OK;

            KBModel.GenerateAnswerResultModel result = QNAMaker.GenerateAnswer(strKbId, objQuery, out code);
            string remsg = string.Empty;

            if (code == HttpStatusCode.OK)
            {
                // 取出最相似的回覆,並放在文字方塊中==> 以下程式碼取消,因為就算 match 不到,系統也會回覆:No good match found in the KB (Count = 1)
                //if (result.answers.Count > 0)
                //{
                //    remsg = string.Format("{0},{1}({2})", username, result.answers[0].answer, result.answers[0].score);
                //}
                //else
                //{
                //    remsg = string.Format("{0},{1}", username, "哩哄啥,哇聽某!");
                //}

                // 取出回覆的分數是 >= 50 ==> 改採用分數來判斷,如果不到規定的分數就完全不理會
                if (result.answers[0].score >= 50)
                {
                    //處理回覆內容中是否已含了自己的名稱,如果有,就不再加稱呼,
                    if (result.answers[0].answer.Contains(username))
                    {
                        remsg = string.Format("{0}(Score={1})", result.answers[0].answer, result.answers[0].score);
                    }
                    else
                    {
                        remsg = string.Format("{0},{1}(Score={2})", username, result.answers[0].answer, result.answers[0].score);
                    }

                    LintBot.ReplyMessage(ReceivedMessage.events[0].replyToken, remsg);
                }
            }
            else
            {
                LintBot.ReplyMessage(ReceivedMessage.events[0].replyToken, "Generate Answer Fail:" + code.ToString());
            }
        }
Exemple #4
0
        /// <summary>
        /// 開始進行問答的動作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnQuery_Click(object sender, EventArgs e)
        {
            KBModel.GenerateAnswerModel objQuery = new KBModel.GenerateAnswerModel()
            {
                question = txtQuery.Text,
                top      = int.Parse(txtTop.Text),
            };

            HttpStatusCode code    = HttpStatusCode.OK;
            string         strKbId = base.KBList[cbxKbId.SelectedIndex].kbId;

            KBModel.GenerateAnswerResultModel result = base.iQnAMaker.GenerateAnswer(strKbId, objQuery, out code);

            if (code == HttpStatusCode.OK)
            {
                this.BindData(result);
            }
            else
            {
                MessageBox.Show("Generate Answer Fail:" + code.ToString());
            }
        }