PowerTalkBox和飞信结合搞定在线客户端(.net)

PowerTalkBox和飞信结合搞定在线客户端(.net)
2010年11月20日
  一个礼拜了,都在搞这个在线客户端,差点没崩溃,最终还是搞定了,嘿嘿,在此感谢一下那些帮助我的同学、朋友、老师、网友,嘿嘿,要不还不知道啥时候才能搞定呢.......
  这玩意其实说通了也就两个飞信号在那对发信息,即Web(用PowerTalkBox)--服务端(使用飞信的sdk,这里用一个飞信号)--飞信客户端(这是我们的客服号),基本思路是:用户在Web端发送一条消息,通过socket发送给服务端,服务端接收完成到信息后,将该信息通过飞信的sdk转发给客服,客服回复信息,发送到服务端,服务端利用飞信sdk收到消息,调用一个根据PowerTalkBox写的服务,将消息加入到PowerTalkBox的对话列表中,这样web端就直接将这条消息调出来,客户就可以看到了,哈
  客户端那边是用web实现的,以前有看过那个PowerTalkBox,带源码,觉得还不错,这次决定还是用这个进行二次开发,改改,哈哈
  首先要搞定的就是服务端调用飞信sdk和飞信客户端通讯,刚开始不懂飞信的sdk怎么用,后面网上找了一下,结果找到的都是php的,哎!看来不行,得自己写,呵呵,找了一些帮助文档,恩,相对来说还是比较简单的,玩了一下,服务端可以和飞信的客户端通讯了......,把飞信的sdk一些基本的东西贴出来....,嘿嘿
  ///
  /// 登陆飞信
  ///
  private bool FetionLogin(string userName,string pwd)
  {
  sdk.AccountManager.FillUserIdAndPassword(userName, pwd, false);//第三个参数为是否自动登陆
  bool isOk=sdk.AccountManager.Login();//登陆
  return isOk;
  }
  ///
  /// 发送消息
  ///
  private void SendFetionMsg(string userName, string msg)
  {
  //userName为对方的飞信号,msg为要发送的信息
  sdk.ContactControl.SendIM.SendIM(userName, msg);
  }
  ///
  /// 发送手机消息
  ///
  private void SendFetionMobileMsg(string userName, string msg)
  {
  //userName为对方的飞信号,msg为要发送的信息
  sdk.ContactControl.SendSMS.SendSMS(userName, msg);
  }
  ///
  /// 加载好友列表
  ///
  /// 飞信sdk对象
  /// 返回飞信好友信息集合
  private List GetFetionFriendList(FetionSDK psSdk)
  {
  List fetionFriends = new List();
  try
  {
  List list = psSdk.ContactControl.getAllContactList();
  for (int i = 0; i (); }
  return fetionFriends;
  }
  ///
  /// 飞信sdk出现错误
  ///
  private void Sdk_SDK_Error(object sender, NullStudio.Fetion_SDK.Event.SDK_ErrorEventArgs fe)
  {
  }
  ///
  /// 当前飞信号状态
  ///
  private void Sdk_SDK_UserSatusChange(object sender, Imps.Client.Core.UserSatusChangedEventArgs e)
  {
  switch (e.NewStatus.ToString())
  {
  case "Disconnected"://断开了网络
  FetionLogin(userName, userPwd);//重新登陆
  break;
  case "Initialized"://已初始化
  break;
  case "Loginning"://登陆中
  break;
  case "Logon"://已登陆
  sdk.AccountManager.CurrentUser.Presence.AsyncChang eMainPresence(Imps.Common.MainPresence.Online, Imps.Common.MainPresence.Online.ToString());//设置PC在线
  break;
  case "Logoff"://离开网络
  break;
  case "Logouting"://注销中
  break;
  case "None"://无状态
  break;
  case "OfflineLogon"://离线
  break;
  case "StandBy"://待机
  break;
  case "WaitReconnect"://等待
  break;
  }
  }
  ///
  /// 接收到的消息
  ///
  private void sdk_SDK_ReceiveMessage(object sender, NullStudio.Fetion_SDK.Event.SDK_ReceiveMessageEven tArgs fe)
  {
  //fe.Message为接收到的消息
  }
  恩,单这些就可以实现服务器跟客户端通讯的功能了.....
  接下去就要搞定web和服务端之间的通讯了,这块比较变态点....,在Powertalkbox有接收消息和发送消息的事件刚开始看到的时候,高兴得要死,结果进去一看,只有接收消息的时候,在事件里能获取消息,发送消息获取不到....,悲剧了....,哎!没办法,只能去研究一下PowerTalkBox的发送事件怎么写了,后面看着看着实在不知道该怎么在那发送事件里重写sendevent,火大,直接在事件中弄一个全局静态变量,嘿嘿,这样在外面就可以调用了....,哈,这样就可以从web通过socket发送消息给服务端了。
  服务端发送消息给web这个刚开始有点晕,后面干脆就直接去看PowerTalkBox是怎么发送消息的,结果发现那边消息都是全部存到一个list中,嘿嘿,这样就好办了,在PowerTalkBox那边做一个将消息添加到list中的服务,然后在服务端接收飞信消息的那事件中调用一下这个服务,将消息传入list中,嘿嘿,web那边就直接自动将消息显示出来了.....这样就搞定了,哈
  感觉web这边用socket发送消息给服务端好像不太好.....,具体怎么个不好法说不大清楚....,嘿嘿,有什么好思路大家共享一下哈,嘿嘿
  后记:在服务端这边还有一个小的问题,就是服务端这边飞信登录成功后差不多10分钟,就会掉线,我现在是做一个线程,每隔三分钟重新登录一下飞信,原本是做成改变一下状态的,不过还是不行,这样有时消息会丢失。后面发现好像可以使用一个什么移动的心跳包,在服务端每隔一段时间给移动那边发送一个包,这样就不会掉线了,嘿嘿,这个还值得研究研究
  后面早上又做了一个监控网站的,如果网站不能浏览就发送短信给站长......,嘿嘿,上面的那些搞定了,其实这个也没什么了,哈,最主要是这里发送短信是直接发送到自己的手机上,嘿嘿,就是在发送消息的时候使用下面这方法:
  //第一个参数直接这个,是给自己发送手机消息的意思,msg是要发送的内容
  sdk.ContactControl.SendSMS.SendSMS(sdk.ContactCont rol.getMyself().Uri.Id,msg);
PowerTalkBox控件源码(教程版) powertalkbox免费开源的asp.net,即时通讯控件与大家分享 这是一款免费开源的控件,作者的初衷是为了让来到网站上的人流资源更好的被把握住. 传统方式的弊端: 1、靠网站联系方式:有时来客会考虑到电话费的问题,如果长途的话,就会更使其考虑是否需要联系了. 2、QQ/MSN等在线客服,如果客户电脑并没有安装QQ或受到病毒干扰,或本身就没有QQ号,会使这类人群错过. 3、使用其他网站的收费IM系统,如果其他网站的IM连接字符串形式,会收到其他网站的带宽,流量,等不稳定因素干扰,并且每年的服务费用并不低. PowerTalk控件的好处: 1、免费开源,使用者可以放心大胆的使用,控件源代码提供丰富的中文注释,可以使使用者看到内核原理. 2、二次开发性强,控件提供很多属性,接口,以及事件,开发者可以根据自己的需要,任意改装,包括外观,内部存储信息方式,比如数据库或txt等. 3、系统跑在自己的服务器上,这就不用担心使用其他网站IM带来的干扰影响,并且还是免费的. 4、现成示例多,开发者可以根据需要改程序,而不要花很长时间去重新设计,省时省力 源码附视频教程(swf) 概括 http://bbs.51aspx.com/showtopic-13084.html 属性介绍 http://bbs.51aspx.com/showtopic-13085.html S1一对一聊天模式 http://bbs.51aspx.com/showtopic-13086.html S2一对多模式轮询事件体验 http://bbs.51aspx.com/showtopic-13087.html S3传文件功能演示 http://bbs.51aspx.com/showtopic-13088.html S4广告设置 http://bbs.51aspx.com/showtopic-13089.html S5人员列表以及对话设置 http://bbs.51aspx.com/showtopic-13090.html S6事件(一) http://bbs.51aspx.com/showtopic-13091.html S6事件(二) http://bbs.51aspx.com/showtopic-13092.html S7方法 http://bbs.51aspx.com/showtopic-13094.html S8JS调用 http://bbs.51aspx.com/showtopic-13095.html 结束 http://bbs.51aspx.com/showtopic-13086.html
powertalkbox免费开源的asp.net,即时通讯控件与大家分享 这是一款免费开源的控件,作者的初衷是为了让来到网站上的人流资源更好的被把握住. 传统方式的弊端: 靠网站联系方式:有时来客会考虑到电话费的问题,如果长途的话,就会更使其考虑是否需要联系了. QQ/MSN等在线客服,如果客户电脑并没有安装QQ或受到病毒干扰,或本身就没有QQ号,会使这类人群错过. 使用其他网站的收费IM系统,如果其他网站的IM连接字符串形式,会收到其他网站的带宽,流量,等不稳定因素干扰,并且每年的服务费用并不低. PowerTalk控件的好处: 免费开源,使用者可以放心大胆的使用,控件源代码提供丰富的中文注释,可以使使用者看到内核原理. 二次开发性强,控件提供很多属性,接口,以及事件,开发者可以根据自己的需要,任意改装,包括外观,内部存储信息方式,比如数据库或txt等. 系统跑在自己的服务器上,这就不用担心使用其他网站IM带来的干扰影响,并且还是免费的. 现成示例多,开发者可以根据需要改程序,而不要花很长时间去重新设计,省时省力 程序里有精灵的提示程序,如果想使精灵发声说话,请在系统里安装Microsoft Speech SDK 5.1.msi, 在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码->Chat->PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与多个客户之间的聊天,如果想更改成多个客服,只要注意两个地方即可。 WinForm下PowerTalkClient客户端LoginFrm.cs的登录框this.textBox1.Text = "在线客服";,上面默认是 "在线客服" WebForm下Web端PowerTalk/IM/Chat.aspx.cs的string WebServiceAnser = "在线客服", 上面默认是 "在线客服"        "在线客服"这两个对应上即可多一个客服 比如,你的数据库里的名是 客服1,客服2,.....等等,利用程序把上面的"在线客服"替换即可利用客服1进行交谈。 客户端文件夹中含客户端管理系统 带IP智能库,具体解析登陆者的地址 飞信功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值