Example #1
0
 public void TestWX2()
 {
     var appAccount = ProviderGateway.AppAccountProvider.Get("9100cd6c-bf4b-4097-ad02-989adc9c31fb");
     var token      = ProviderGateway.TokenProvider.GetToken(appAccount);
     var picUrl     = MediaDataHelper.GetPicUrl("1", "14");
     var sendResult = WeChatSDK.Work.Message.SendNews(token, "LiuZhiWei", 1000002, "title", "dddddd", "http://www.baidu.com", picUrl);
 }
Example #2
0
        public MessageSendResult Send(AppAccountInfo appAccount, MessageInfo message)
        {
            var result = new MessageSendResult();

            if (appAccount == null)
            {
                appAccount = ProviderGateway.AppAccountProvider.Get(message.AppAccountId);
            }
            var token = ProviderGateway.TokenProvider.GetToken(appAccount);

            if (string.IsNullOrWhiteSpace(message.ToOpenId))
            {
                var appUsers  = ProviderGateway.AppUserAccountProvider.GetListByUserId(message.TenantId, message.ToUser.Split('|'), appAccount.AppId);
                var toOpenIds = new List <string>();
                foreach (var appUser in appUsers)
                {
                    toOpenIds.Add(appUser.OpenId);
                }
                message.ToOpenId = string.Join("|", toOpenIds);
            }

            var description = new StringBuilder();

            foreach (var detail in message.Content.Detail)
            {
                if (string.IsNullOrWhiteSpace(detail.Text))
                {
                    description.AppendFormat("{0}\n", detail.Value);
                }
                else
                {
                    description.AppendFormat("{0}:{1}\n", detail.Text, detail.Value);
                }
            }
            var picUrl = MediaDataHelper.GetPicUrl(message.ProductId, appAccount.Type.ToString());

            AppConnectLogHelper.DebugFormat("调用企业微信发送消息:Token{0};ToOpenId{1}; AgentId{2} ContentUrl{3}, ContentTitle{4}, description:{5}, pic:{6},tenantId:{7}", token, message.ToOpenId, appAccount.AgentId, message.Content.Url, message.Content.Title, description.ToString(), picUrl, appAccount.TenantId);

            if (string.IsNullOrEmpty(message.Content.Url))
            {
                message.Content.Url = AppConnectHostConfig.Cache[0] + string.Format("/Common/Error?title={0}&message={1}", HttpUtility.UrlEncode("友情提醒"), HttpUtility.UrlEncode("抱歉,此消息暂不支持在此查看,请在电脑浏览器中查看"));
            }
            WorkMessageSendResult sendResult = new WorkMessageSendResult();

            sendResult = WeChatSDK.Work.Message.SendNews(token, message.ToOpenId, Convert.ToInt32(appAccount.AgentId), message.Content.Title, description.ToString(), message.Content.Url, picUrl);
            if (sendResult.ErrCode == 0)
            {
                result.State = MessageState.Success;
                AppConnectLogHelper.DebugFormat("企业微信发送消息成功{0}", JsonConvert.SerializeObject(sendResult));
            }
            else
            {
                result.State = MessageState.Failed;
                AppConnectLogHelper.ErrorFormat("企业微信发送消息失败,errorCode:{0},errorMsg:{1},tenantId:{2},userId:{3}", sendResult.ErrCode, sendResult.ErrMsg, appAccount.TenantId, message.ToOpenId);
            }

            result.ErrMsg = SerializeHelper.Serialize(sendResult);
            return(result);
        }
Example #3
0
        public MessageSendResult Send(AppAccountInfo appAccount, MessageInfo message)
        {
            var result = new MessageSendResult();

            if (appAccount == null)
            {
                appAccount = ProviderGateway.AppAccountProvider.Get(message.AppAccountId);
            }

            var token = ProviderGateway.TokenProvider.GetToken(appAccount);

            if (string.IsNullOrWhiteSpace(message.TemplateId))
            {
                if (string.IsNullOrWhiteSpace(message.TemplateIdShort))
                {
                    result.State  = MessageState.Failed;
                    result.ErrMsg = "模板为空";
                    return(result);
                }
                //跟据数据库中对应关系获取id
                var templateId = ProviderGateway.TemplateMappingProvider.GetTemplateId(appAccount.AppId, message.TemplateIdShort);
                //不存在增加模板
                if (string.IsNullOrWhiteSpace(templateId))
                {
                    var template = Template.AddTemplate(token, message.TemplateIdShort);
                    if (template.ErrCode != 0)
                    {
                        result.State  = MessageState.Failed;
                        result.ErrMsg = SerializeHelper.Serialize(template);
                        return(result);
                    }
                    message.TemplateId = template.TemplateId;
                    ProviderGateway.TemplateMappingProvider.Add(
                        new TemplateMappingInfo
                    {
                        AppId           = appAccount.AppId,
                        TemplateIdShort = message.TemplateIdShort,
                        TemplateId      = template.TemplateId,
                        CreateBy        = message.FromUser
                    });
                }
                else
                {
                    message.TemplateId = templateId;
                }
            }

            if (string.IsNullOrWhiteSpace(message.ToOpenId))
            {
                var appUser = ProviderGateway.AppUserAccountProvider.GetByUserId(message.TenantId, Convert.ToInt32(message.ToUser), appAccount.AppId);
                if (appUser == null)
                {
                    result.State  = MessageState.Failed;
                    result.ErrMsg = "用户未绑定";
                    return(result);
                }
                message.ToOpenId = appUser.OpenId;
            }

            var jsondata = new StringBuilder();

            jsondata.Append("{");
            foreach (var detail in message.Content.Detail)
            {
                jsondata.Append("\"" + detail.Key + "\":{\"value\":\"" + detail.Value + "\"},");
            }
            jsondata.Remove(jsondata.Length - 1, 1);
            jsondata.Append("}");

            var picUrl = MediaDataHelper.GetPicUrl(message.ProductId, appAccount.Type.ToString());

            AppConnectLogHelper.DebugFormat("调用微信服务号发送消息:Token{0};ToOpenId{1}; AgentId{2} ContentUrl{3}, ContentTitle{4}, description:{5}, pic:{6}", token, message.ToOpenId, appAccount.AgentId, message.Content.Url, message.Content.Title, jsondata.ToString(), picUrl);
            if (string.IsNullOrEmpty(message.Content.Url))
            {
                message.Content.Url = AppConnectHostConfig.Cache[0] + string.Format("/Common/Error?title={0}&message={1}", HttpUtility.UrlEncode("友情提醒"), HttpUtility.UrlEncode("抱歉,此消息暂不支持在此查看,请在电脑浏览器中查看"));
            }
            var sendResult = Template.SendTemplateMessageForJson(token, message.ToOpenId, message.TemplateId, "", message.Content.Url, jsondata.ToString());

            if (sendResult.ErrCode != 0)
            {
                result.State  = MessageState.Failed;
                result.ErrMsg = SerializeHelper.Serialize(sendResult);
                AppConnectLogHelper.ErrorFormat("企业微信发送消息失败,errorCode:{0},errorMsg:{1}", sendResult.ErrCode, sendResult.ErrMsg);
                return(result);
            }

            result.State     = MessageState.Success;
            result.MessageId = sendResult.MsgId.ToString();
            result.ErrMsg    = SerializeHelper.Serialize(sendResult);
            return(result);
        }