Ejemplo n.º 1
0
        /// <summary>
        /// 订阅(关注)事件
        /// </summary>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            Task.Run(() =>
            {
                string openId = requestMessage.FromUserName;
                var replyItem = MpEventBll.GetByKey("ych_subscribe");
                if (replyItem != null)
                {
                    switch (replyItem.ReplyType)
                    {
                    case "text":
                        CustomApi.SendText(BaseClass.AppId, openId, EConvert.ConvertEmojiHtml(Senparc.Weixin.HttpUtility.RequestUtility.UrlDecode(replyItem.ReplyContent)));
                        break;

                    case "img":
                        CustomApi.SendImage(BaseClass.AppId, openId, replyItem.ReplyContent);
                        break;
                    }
                }
            });
            //将消息转发到客服
            var responseMessage = new SuccessResponseMessage();

            return(responseMessage);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 发送纯图片
        /// </summary>
        /// <param name="openId">OPENID</param>
        /// <param name="mediaId">上传在公众平台的资源ID</param>
        public static void SendImage(string openId, string mediaId)
        {
            var accessToken = GetAccessToken();
            var result      = CustomApi.SendImage(accessToken, openId, mediaId);

            LogErrorInfo(result, openId, "SendImage");
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 处理小视频请求
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnShortVideoRequest(RequestMessageShortVideo requestMessage)
        {
            Task.Run(() =>
            {
                try
                {
                    string openId = requestMessage.FromUserName;
                    var replyItem = MpEventBll.GetByKey("ych_automsg");
                    if (replyItem != null)
                    {
                        switch (replyItem.ReplyType)
                        {
                        case "text":
                            CustomApi.SendText(BaseClass.AppId, openId, EConvert.ConvertEmojiHtml(Senparc.Weixin.HttpUtility.RequestUtility.UrlDecode(replyItem.ReplyContent)));
                            break;

                        case "img":
                            CustomApi.SendImage(BaseClass.AppId, openId, replyItem.ReplyContent);
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHandler.Error($"错误位置:微信图片消息回复\n请求数据:{JsonConvert.SerializeObject(requestMessage)}\n错误信息:{e.StackTrace}");
                }
            });
            //将消息转发到客服
            var responseMessage = CreateResponseMessage <ResponseMessageTransfer_Customer_Service>();

            return(responseMessage);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 发送微信消息
 /// </summary>
 /// <param name="openid"></param>
 /// <param name="mediaid"></param>
 private void SendWxImg(string openid, string mediaid)
 {
     if (!string.IsNullOrEmpty(mediaid))
     {
         try
         {
             CustomApi.SendImage(accesstoken, openid, mediaid);
         }
         catch (Exception ex)
         {
             LogWriter.Error(ex, string.Format("openid为{0}的用户第一次发送登录图片出错", openid));
             UpdateAccessToken();
             try
             {
                 CustomApi.SendText(accesstoken, openid, mediaid);
             }
             catch (Exception ex2)
             {
                 LogWriter.Error(ex2, string.Format("openid为{0}的用户第二次发送登录图片出错", openid));
                 UpdateNewAccessToken();
                 try
                 {
                     CustomApi.SendText(accesstoken, openid, mediaid);
                 }
                 catch (Exception ex3)
                 {
                     LogWriter.Error(ex3, string.Format("openid为{0}的用户第三次发送登录图片出错", openid));
                 }
             }
         }
     }
 }
Ejemplo n.º 5
0
        public void SendImageTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var result = CustomApi.SendImage(accessToken, openId, "10001037");

            Assert.IsNotNull(result);
            Assert.AreEqual("ok", result.errmsg);
        }
Ejemplo n.º 6
0
        public void AfterDeleteImgTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = @"..\..\AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);

            CustomApi.SendImage(accessToken, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", result.media_id);

            MediaApi.DeleteForeverMedia(accessToken, result.media_id);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 发送客服消息
        /// </summary>
        /// <param name="strMsgType"></param>
        /// <param name="wechat"></param>
        /// <param name="strOpenids"></param>
        /// <param name="obj"></param>
        /// <param name="strTitle"></param>
        /// <param name="strComment"></param>
        /// <returns></returns>
        private static WxJsonResult SendMsgKF(Weixin.MP.GroupMessageType MsgType, SysWechatConfig wechat, string[] strOpenids, object obj, string strTitle = null, string strComment = null)
        {
            WxJsonResult Ret = null;

            foreach (var openId in strOpenids)
            {
                WxJsonResult returnResult = null;

                switch (MsgType)
                {
                case GroupMessageType.text:

                    returnResult = CustomApi.SendText(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (string)obj);
                    break;
                //case GroupMessageType.mpnews:

                //    returnResult = CustomApi.SendNews(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (List<Article>)obj);
                //    break;
                case GroupMessageType.mpnews:
                    returnResult = CustomApi.SendMpNews(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (string)obj);
                    break;

                case GroupMessageType.image:
                    returnResult = CustomApi.SendImage(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (string)obj);
                    break;

                case GroupMessageType.video:
                    returnResult = CustomApi.SendVideo(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (string)obj, strTitle, strComment);
                    break;

                case GroupMessageType.voice:
                    returnResult = CustomApi.SendVoice(wechat.WeixinAppId, wechat.WeixinCorpSecret, openId, (string)obj);
                    break;
                }

                if (returnResult.errcode != ReturnCode.请求成功)
                {
                    Ret = returnResult;
                }
                else if (Ret == null)
                {
                    Ret = returnResult;
                }
            }

            return(Ret);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Click事件接收
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage)
        {
            Task.Run(() =>
            {
                try
                {
                    string key    = requestMessage.EventKey;
                    string openId = requestMessage.FromUserName;
                    var replyItem = MpEventBll.GetByKey(key);
                    if (replyItem != null)
                    {
                        switch (replyItem.ReplyType)
                        {
                        case "text":
                            CustomApi.SendText(BaseClass.AppId, openId, replyItem.ReplyContent);
                            break;

                        case "img":
                            CustomApi.SendImage(BaseClass.AppId, openId, replyItem.ReplyContent);
                            break;

                        case "news":
                            CustomApi.SendMpNews(BaseClass.AppId, openId, replyItem.ReplyContent);
                            break;
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHandler.Error($"错误位置:微信CLIKC事件回复\n请求数据:{JsonConvert.SerializeObject(requestMessage)}\n错误信息:{e.StackTrace}");
                }
            });
            var responseMessage = new SuccessResponseMessage();

            return(responseMessage);
        }
Ejemplo n.º 9
0
 public static void SendImage(List <Guid?> userIds, string text)
 {
     QueryOpenId(userIds).ForEach(openId => CustomApi.SendImage(AppId, openId, text));
 }
Ejemplo n.º 10
0
        /// <summary>
        /// 处理文字请求
        /// </summary>
        /// <returns></returns>
        public override Senparc.Weixin.MP.Entities.IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
        {
            Task.Run(() =>
            {
                try
                {
                    string openId = requestMessage.FromUserName;
                    string replyMode;
                    LogHandler.Info(JsonConvert.SerializeObject(requestMessage));
                    var contentList = MsgReplyBll.GetReplyInfo(requestMessage.Content, out replyMode);
                    LogHandler.Info(JsonConvert.SerializeObject(contentList));
                    LogHandler.Info("replyMode" + replyMode);
                    if (contentList != null && contentList.Count > 0)
                    {
                        if (replyMode == AutoReplyMode.random_one.ToString())
                        {
                            contentList = new List <mpmsgreplycontent>()
                            {
                                contentList[0]
                            };
                        }
                        foreach (var replyContent in contentList)
                        {
                            switch (replyContent.ReplyType)
                            {
                            //类型枚举参照 Senparc.Weixin.MP.AutoReplyType 枚举
                            case "text":
                                CustomApi.SendText(BaseClass.AppId, openId, EConvert.ConvertEmojiHtml(Senparc.Weixin.HttpUtility.RequestUtility.UrlDecode(replyContent.ReplyContent)));
                                break;

                            case "img":
                                CustomApi.SendImage(BaseClass.AppId, openId, replyContent.ReplyContent);
                                break;

                            case "news":
                                CustomApi.SendMpNews(BaseClass.AppId, openId, replyContent.ReplyContent);
                                break;
                            }
                        }
                    }
                    else
                    {
                        var replyItem = MpEventBll.GetByKey("ych_automsg");
                        if (replyItem != null)
                        {
                            switch (replyItem.ReplyType)
                            {
                            case "text":
                                CustomApi.SendText(BaseClass.AppId, openId, EConvert.ConvertEmojiHtml(Senparc.Weixin.HttpUtility.RequestUtility.UrlDecode(replyItem.ReplyContent)));
                                break;

                            case "img":
                                CustomApi.SendImage(BaseClass.AppId, openId, replyItem.ReplyContent);
                                break;
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHandler.Error($"错误位置:微信文字请求回复\n请求数据:{JsonConvert.SerializeObject(requestMessage)}\n错误信息:{e.StackTrace}");
                }
            });
            //将消息转发到客服
            var responseMessage = CreateResponseMessage <ResponseMessageTransfer_Customer_Service>();

            return(responseMessage);
        }