当前位置:首页 > Windows程序 > 正文

用c#快速实现的智能聊天机器人

2021-05-26 Windows程序

这是一个聊天机器人,很方便,直接调用图灵机器人api即可,对话方式一问一答!
图灵机器人官网上只有php和java的示例,于是自己写了个Windows的。

技术分享

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using Newtonsoft.Json;//程序需引用Newtonsoft.Json 下载地址 namespace TuLing { public partial class MainForm : Form { HttpWebResponse Response = null; public MainForm() { InitializeComponent(); } // /// <summary> /// 对话图灵机器人 /// </summary> /// <param></param> /// <returns></returns> public string ConnectTuLing(string p_strMessage) { string result = null; try { //注册码自己到网上注册去 String APIKEY = "c32ccaa805b6441be76bc18074f12e51"; String _strMessage = p_strMessage; String INFO = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(_strMessage)); String getURL = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + INFO; HttpWebRequest MyRequest = (HttpWebRequest)HttpWebRequest.Create(getURL); HttpWebResponse MyResponse = (HttpWebResponse)MyRequest.GetResponse(); Response = MyResponse; using (Stream MyStream = MyResponse.GetResponseStream()) { long ProgMaximum = MyResponse.ContentLength; long totalDownloadedByte = 0; byte[] by = new byte[1024]; int osize = MyStream.Read(by, 0, by.Length); Encoding encoding = Encoding.UTF8; while (osize > 0) { totalDownloadedByte = osize + totalDownloadedByte; result += encoding.GetString(by, 0, osize); long ProgValue = totalDownloadedByte; osize = MyStream.Read(by, 0, by.Length); } } //解析json JsonReader reader = new JsonTextReader(new StringReader(result)); while (reader.Read()) { //text中的内容才是你需要的 if (reader.Path=="text") { //结果赋值 result = reader.Value.ToString(); } Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value); } } catch (Exception) { throw; } return result; } private void btn_send_Click(object sender, EventArgs e) { string returnMess = ConnectTuLing(rtb_send.Text); rtb_mess.Text = returnMess; } private void btn_close_Click(object sender, EventArgs e) { this.this.FindForm().Close(); } /// <summary> /// 回车快捷键 /// </summary> /// <param></param> /// <param></param> private void rtb_send_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { rtb_mess.Text= ConnectTuLing(rtb_send.Text); } } } }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71567.html