Beispiel #1
0
        /// <summary>
        /// 【异步方法】发送简单消息(文本、图片、文件或语音)
        /// </summary>
        /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param>
        /// <param name="chatId">会话id</param>
        /// <param name="msgType">消息类型,text|image|file|voice</param>
        /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param>
        /// <param name="safe">表示是否是保密消息,0表示否,1表示是,默认0</param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <returns></returns>
        public static async Task <WorkJsonResult> SendChatSimpleMessageAsync(string accessTokenOrAppKey, string chatId, ChatMsgType msgType, string contentOrMediaId, int safe = 0, int timeOut = Config.TIME_OUT)
        {
            return(await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
            {
                BaseSendChatMessageData data;

                switch (msgType)
                {
                case ChatMsgType.text:
                    data = new SendTextMessageData(chatId, contentOrMediaId, safe);
                    break;

                case ChatMsgType.image:
                    data = new SendImageMessageData(chatId, contentOrMediaId, safe);
                    break;

                case ChatMsgType.voice:
                    data = new SendVoiceMessageData(chatId, contentOrMediaId, safe);
                    break;

                case ChatMsgType.file:
                    data = new SendFileMessageData(chatId, contentOrMediaId, safe);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("msgType");
                }
                return await CommonJsonSend.SendAsync <WorkJsonResult>(accessToken, _urlFormatSend, data, CommonJsonSendType.POST, timeOut);
            }, accessTokenOrAppKey));
        }
Beispiel #2
0
        /// <summary>
        /// 发消息
        /// </summary>
        /// <param name="accessTokenOrAppKey"></param>
        /// <param name="sender">发送人的userId</param>
        /// <param name="type">接收人类型:single|group,分别表示:群聊|单聊</param>
        /// <param name="msgType">消息类型,text|image|file</param>
        /// <param name="chatIdOrUserId">会话值,为userid|chatid,分别表示:成员id|会话id,单聊是userid,群聊是chatid</param>
        /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static WorkJsonResult SendChatMessage(string accessTokenOrAppKey, string sender, Chat_Type type, ChatMsgType msgType, string chatIdOrUserId, string contentOrMediaId, int timeOut = Config.TIME_OUT)
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", accessToken.AsUrlData());

                BaseSendChatMessageData data;

                switch (msgType)
                {
                case ChatMsgType.text:
                    data = new SendTextMessageData()
                    {
                        receiver = new Receiver()
                        {
                            type = type.ToString(),
                            id = chatIdOrUserId
                        },
                        sender = sender,
                        msgtype = msgType.ToString(),
                        text = new Chat_Content()
                        {
                            content = contentOrMediaId
                        }
                    };
                    break;

                case ChatMsgType.image:
                    data = new SendImageMessageData()
                    {
                        receiver = new Receiver()
                        {
                            type = type.ToString(),
                            id = chatIdOrUserId
                        },
                        sender = sender,
                        msgtype = msgType.ToString(),
                        image = new Chat_Image()
                        {
                            media_id = contentOrMediaId
                        }
                    };
                    break;

                case ChatMsgType.file:
                    data = new SendFileMessageData()
                    {
                        receiver = new Receiver()
                        {
                            type = type.ToString(),
                            id = chatIdOrUserId
                        },
                        sender = sender,
                        msgtype = msgType.ToString(),
                        file = new Chat_File()
                        {
                            media_id = contentOrMediaId
                        }
                    };
                    break;

                default:
                    throw new ArgumentOutOfRangeException("msgType");
                }

                return CommonJsonSend.Send <WorkJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut);
            }, accessTokenOrAppKey));
        }
Beispiel #3
0
        /// <summary>
        /// 【异步方法】发消息
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="sender">发送人的userId</param>
        /// <param name="type">接收人类型:single|group,分别表示:群聊|单聊</param>
        /// <param name="msgType">消息类型,text|image|file</param>
        /// <param name="chatIdOrUserId">会话值,为userid|chatid,分别表示:成员id|会话id,单聊是userid,群聊是chatid</param>
        /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static async Task <QyJsonResult> SendChatMessageAsync(string accessToken, string sender, Chat_Type type, ChatMsgType msgType, string chatIdOrUserId, string contentOrMediaId, int timeOut = Config.TIME_OUT)
        {
            var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", accessToken.AsUrlData());

            BaseSendChatMessageData data;

            switch (msgType)
            {
            case ChatMsgType.text:
                data = new SendTextMessageData
                {
                    receiver = new Receiver
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    text    = new Chat_Content
                    {
                        content = contentOrMediaId
                    }
                };
                break;

            case ChatMsgType.image:
                data = new SendImageMessageData
                {
                    receiver = new Receiver
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    image   = new Chat_Image
                    {
                        media_id = contentOrMediaId
                    }
                };
                break;

            case ChatMsgType.file:
                data = new SendFileMessageData
                {
                    receiver = new Receiver
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    file    = new Chat_File
                    {
                        media_id = contentOrMediaId
                    }
                };
                break;

            default:
                throw new ArgumentOutOfRangeException("msgType");
            }

            return(await Core.CommonAPIs.CommonJsonSend.SendAsync <QyJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut));
        }
Beispiel #4
0
        /// <summary>
        /// 发消息
        /// </summary>
        /// <param name="sender">发送人的userId</param>
        /// <param name="type">接收人类型:single|group,分别表示:群聊|单聊</param>
        /// <param name="msgType">消息类型,text|image|file</param>
        /// <param name="chatIdOrUserId">会话值,为userid|chatid,分别表示:成员id|会话id,单聊是userid,群聊是chatid</param>
        /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public QyJsonResult SendChatMessage(string sender, ChatTypeEnum type, ChatMsgTypeEnum msgType, string chatIdOrUserId, string contentOrMediaId)
        {
            BaseSendChatMessageData data;

            switch (msgType)
            {
            case ChatMsgTypeEnum.text:
                data = new SendTextMessageData()
                {
                    receiver = new Receiver()
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    text    = new Chat_Content()
                    {
                        content = contentOrMediaId
                    }
                };
                break;

            case ChatMsgTypeEnum.image:
                data = new SendImageMessageData()
                {
                    receiver = new Receiver()
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    image   = new ChatImage()
                    {
                        media_id = contentOrMediaId
                    }
                };
                break;

            case ChatMsgTypeEnum.file:
                data = new SendFileMessageData()
                {
                    receiver = new Receiver()
                    {
                        type = type.ToString(),
                        id   = chatIdOrUserId
                    },
                    sender  = sender,
                    msgtype = msgType.ToString(),
                    file    = new ChatFile()
                    {
                        media_id = contentOrMediaId
                    }
                };
                break;

            default:
                throw new ArgumentOutOfRangeException("msgType");
            }
            return(this.Post <QyJsonResult>(string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", AccessToken.access_token), data));
        }