/// <summary> /// 获取XML版的回复消息 /// </summary> /// <param name="domainContext"></param> /// <param name="toUserName"></param> /// <param name="autoReply"></param> /// <returns></returns> public static KFMessageBase GetKFMessage(ClientDomainContext domainContext, string toUserName, IAutoReply autoReply) { if (autoReply == null) { return(null); } KFMessageBase replyMessage = null; switch (autoReply.Type) { case EnumAutoReplyType.Text: //不能返回空白 Content 的XML给微信 API //否则它会在客户端提示该公众号暂时无法提供服务 if (String.IsNullOrEmpty(autoReply.Content) == false) { KFTextMessage textMessage = new KFTextMessage(); textMessage.Text.Content = autoReply.Content; replyMessage = textMessage; } break; case EnumAutoReplyType.Image: KFImageMessage imageMessage = new KFImageMessage(); imageMessage.Image.MediaId = autoReply.MediaId; replyMessage = imageMessage; break; case EnumAutoReplyType.Article: //微信的图文消息有几种不同的格式,此处专用于自动回复 //所以只考虑客服接口的内部文章页面格式 //图文素材可能会被删除 string mediaId = _materialManager.GetArticleMaterialMediaId(autoReply.ArticleId); if (String.IsNullOrEmpty(mediaId) == false) { KFMpArticleMessage articleMessage = new KFMpArticleMessage(); articleMessage.Mpnews.MediaId = mediaId; replyMessage = articleMessage; } break; default: Debug.Assert(false, "GetKFMessage 不支持的 AutoReplyOnKeyWordsRule.Type:" + autoReply.Type.ToString()); _log.Write("GetKFMessage 不支持的 AutoReplyOnKeyWordsRule.Type:" + autoReply.Type.ToString(), domainContext.AutoReplyOnSubscribe.Type.ToString(), TraceEventType.Error); break; } if (replyMessage != null) { replyMessage.ToUserName = toUserName; } return(replyMessage); }
private static void SendKFMessage(object state) { _timer.Change(-1, -1); KFTextMessage textMessage = new KFTextMessage(); textMessage.Text.Content = _query_auth_code + "_from_api"; textMessage.ToUserName = _fromUserName; KFApi.Send(_accessToken, textMessage); _log.Write("调用客服接口回复测试消息", JsonConvert.SerializeObject(textMessage), TraceEventType.Verbose); }