微信公众号开发客服接口实例代码
微信(小程序)  /  管理员 发布于 4年前   325
最近,开发微信公众号,负责开发客服功能,这里简单记录下: Kf_account.cs代码: SysVisitor.cs代码: INIFile.cs代码: 运行结果: 这里写图片描述 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! public partial class Kf_account : Form { private readonly DataTable adt_user = new DataTable(); private readonly string as_INIFile = Application.StartupPath + "\\user.ini"; public Kf_account() { BindUser(); } private void BindUser() { if (!File.Exists(as_INIFile)) { var str = new StringBuilder(); str.Append(";内容由程序自动生成,请不要修改此文件内容\r\n"); str.Append("[total]\r\n"); str.Append("total=\r\n"); str.Append("[count]\r\n"); str.Append("count=\r\n"); str.Append("[user]\r\n"); //StreamWriter sw = default(StreamWriter); //sw = File.CreateText(ls_INIFile); //sw.WriteLine(str.ToString()); //sw.Close(); File.WriteAllText(as_INIFile, str.ToString(), Encoding.Unicode); File.SetAttributes(as_INIFile, FileAttributes.Hidden); } CheckForIllegalCrossThreadCalls = false; InitializeComponent(); Icon = Resource1.ico; lkl_num.Text = INIFile.ContentValue("total", "total", as_INIFile); lkl_num_c.Text = INIFile.ContentValue("count", "count", as_INIFile); pictureBox1.Visible = true; var sr = new StreamReader(as_INIFile, Encoding.Unicode); String line; int li_count = 0; adt_user.Columns.Clear(); adt_user.Columns.Add("username", Type.GetType("System.String")); adt_user.Columns.Add("openid", Type.GetType("System.String")); while ((line = sr.ReadLine()) != null) { li_count++; if (li_count > 6) { line = SysVisitor.Current.GetFormatStr(line); DataRow newRow; newRow = adt_user.NewRow(); newRow["username"] = line.Substring(0, line.LastIndexOf('=')); newRow["openid"] = line.Substring(line.LastIndexOf('=') + 1); adt_user.Rows.Add(newRow); } } sr.Close(); dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = adt_user; //dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; lbl_count.Text = "共" + (li_count - 6) + "行"; pictureBox1.Visible = false; } private void btn_GetUser_Click(object sender, EventArgs e) { if (MessageBox.Show(@"拉取用户信息的速度取决于你的关注数与网络速度,可能需要几分钟甚至更长时间。使用此功能将消耗大量用户管理接口配额。要继续此操作吗?", "提示:", MessageBoxButtons.YesNo) == DialogResult.No) { return; } var thr = new Thread(Get_user_list); thr.Start(); } private void Get_user_list() { File.Delete(as_INIFile); var str = new StringBuilder(); str.Append(";内容由程序自动生成,请不要修改此文件内容\r\n"); str.Append("[total]\r\n"); str.Append("total=\r\n"); str.Append("[count]\r\n"); str.Append("count=\r\n"); str.Append("[user]\r\n"); File.WriteAllText(as_INIFile, str.ToString(), Encoding.Unicode); File.SetAttributes(as_INIFile, FileAttributes.Hidden); string ls_appid = INIFile.ContentValue("weixin", "Appid"); string ls_secret = INIFile.ContentValue("weixin", "AppSecret"); string access_token = ""; string menu = ""; if (ls_appid.Length != 18 || ls_secret.Length != 32) { MessageBox.Show("你的Appid或AppSecret不对,请检查后再操作"); return; } access_token = SysVisitor.Current.Get_Access_token(ls_appid, ls_secret); if (access_token == "") { MessageBox.Show("Appid或AppSecret不对,请检查后再操作"); return; } menu = SysVisitor.Current.GetPageInfo("https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + access_token); if (menu.Substring(2, 7) == "errcode") { MessageBox.Show("拉取失败,返回消息:\r\n" + menu); } JObject json = JObject.Parse(menu); lkl_num.Text = json["total"].ToString(); INIFile.SetINIString("total", "total", lkl_num.Text, as_INIFile); lkl_num_c.Text = json["count"].ToString(); INIFile.SetINIString("count", "count", lkl_num_c.Text, as_INIFile); int li_count = int.Parse(json["count"].ToString()); btn_GetUser.Enabled = false; pictureBox1.Visible = true; FileStream fs = null; Encoding encoder = Encoding.Unicode; for (int i = 0; i < li_count; i++) { string openid, username; openid = Get_UserName(json["data"]["openid"][i].ToString()); username = json["data"]["openid"][i].ToString(); //INIFile.SetINIString("user", openid, username, as_INIFile); byte[] bytes = encoder.GetBytes(openid + "=" + username + " \r\n"); fs = File.OpenWrite(as_INIFile); //设定书写的_始位置为文件的末尾 fs.Position = fs.Length; //将待写入内容追加到文件末尾 fs.Write(bytes, 0, bytes.Length); fs.Close(); lab_nums.Text = "已拉取" + i + "个,还剩" + (li_count - i) + "个,请耐心等待"; } lab_nums.Text = ""; //BindUser(); btn_GetUser.Enabled = true; pictureBox1.Visible = false; MessageBox.Show("已全部拉取完毕,请重新打开该窗口"); } ///
class SysVisitor { private static SysVisitor visit = null; public static SysVisitor Current { get { if (visit == null) visit = new SysVisitor(); return visit; } } ///
class INIFile { /////
您可能感兴趣的文章:
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号