Пример #1
0
        /**
         * <h1>发送语音通知</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * mobile String 是 接收的手机号、固话(需加区号) 15205201314 01088880000
         * </p>
         * <p>
         * tpl_id Long 是 审核通过的模版ID 1136
         * </p>
         * <p>
         * tpl_value String 是 模版的变量值
         * 如模版内容&quot;课程#name#在#time#开始&quot;,那么这里的值为&quot;name=计算机&amp;time=17点&quot;,注意若出现特殊字符(如&#39;=&#39;,&#39;&amp;&#39;)则需要URLEncode内容
         * </p>
         * <p>
         * callback_url String 否 本条语音验证码状态报告推送地址 http://your_receive_url_address
         * </p>
         *
         * @param param
         * @return
         */
        public Result <VoiceSend> TplNotify(Dictionary <string, string> param)
        {
            var r = new Result <VoiceSend>();

            r = CheckParam(ref param, r, Const.Apikey, Const.Mobile, Const.TplId, Const.TplValue);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <VoiceSend>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        return(rsp.ToObject <VoiceSend>());
                    }
                }

                return(null);
            });

            try
            {
                Path = "tpl_notify.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #2
0
        /**
         * <h1>添加语音通知模版</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * tpl_content String 是 模板内容,必须以带符号【】的签名开头 【云片网】您的验证码是#code#
         * </p>
         * <p>
         * notify_type Integer 否 审核结果短信通知的方式: 0表示需要通知,默认; 1表示仅审核不通过时通知; 2表示仅审核通过时通知;
         * 3表示不需要通知 1
         * </p>
         *
         * @param param
         * @return
         */
        public Result <Template> AddVoiceNotify(Dictionary <string, string> param)
        {
            var r = new Result <Template>();

            r = CheckParam(ref param, r, Const.Apikey, Const.TplContent);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <Template>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        return(rsp.ToObject <Template>());
                    }
                }

                return(null);
            });

            try
            {
                Path = "add_voice_notify.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #3
0
        /**
         * <h1>修改账户信息</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * emergency_contact String 否 紧急联系人 zhangshan
         * </p>
         * <p>
         * emergency_mobile String 否 紧急联系人手机号 13012345678
         * </p>
         * <p>
         * alarm_balance Long 否 短信余额提醒阈值。 一天只提示一次 100
         * </p>
         *
         * @param param
         *            emergency_contact emergency_mobile alarm_balance
         * @return
         */
        public Result <User> Set(Dictionary <string, string> param)
        {
            var r = new Result <User>();

            r = CheckParam(ref param, r, Const.Apikey);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <User>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        return(rsp.ToObject <User>());
                    }
                }

                return(null);
            });

            try
            {
                Path = "set.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #4
0
        /**
         * <h1>添加签名API</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * sign String 是 签名内容 云片网
         * </p>
         * <p>
         * notify Boolean 否 是否短信通知结果,默认true true
         * </p>
         * <p>
         * apply_vip Boolean 否 是否申请专用通道,默认false false
         * </p>
         * <p>
         * is_only_global Boolean 否 是否仅发国际短信,默认false false
         * </p>
         * <p>
         * industry_type String 否 所属行业,默认“其它” 物联网 其他值例如:1. 游戏 2. 移动应用 3. 视频 4. 教育 5.
         * IT/通信/电子服务 6. 电子商务 7. 金融 8. 网站 9. 商业服务 10. 房地产/建筑 11. 零售/租赁/贸易 12.
         * 生产/加工/制造 13. 交通/物流 14. 文化传媒 15. 能源/电气 16. 政府企业 17. 农业 18. 物联网 19. 其它
         * </p>
         *
         * @param param
         *            sign notify apply_vip is_only_global industry_type
         * @return
         */
        public Result <Sign> Add(Dictionary <string, string> param)
        {
            var r = new Result <Sign>();

            r = CheckParam(ref param, r, Const.Apikey, Const.Sign);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <Sign>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    return(rsp[Const.Sign].ToObject <Sign>());

                default: return(null);
                }
            });

            try
            {
                Path = "add.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #5
0
        /**
         * <h1>单条发送</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * mobile String 是
         * 接收的手机号;仅支持单号码发送;国际号码需包含国际地区前缀号码,格式必须是"+"号开头("+"号需要urlencode处理,否则会出现格式错误),国际号码不以"+"开头将被认为是中国地区的号码
         * (针对国际短信,mobile参数会自动格式化到E.164格式,可能会造成传入mobile参数跟后续的状态报告中的号码不一致。E.164格式说明,参见:
         * https://en.wikipedia.org/wiki/E.164) 国内号码:15205201314
         * 国际号码:urlencode("+93701234567");
         * </p>
         * <p>
         * text String 是 短信内容 【云片网】您的验证码是1234
         * </p>
         * <p>
         * extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
         * </p>
         * <p>
         * uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
         * 默认不开放,如有需要请联系客服申请 10001
         * </p>
         * <p>
         * callback_url String 否
         * 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
         * http://your_receive_url_address
         * </p>
         * <p>
         * register Boolean 否 是否为注册验证码短信,如果传入true,则该条短信作为注册验证码短信统计注册成功率。
         * 默认不开放,如有需要请联系客服申请 true
         * </p>
         * <p>
         * mobile_stat Boolean 否 按手机号统计短链接点击量,为手机号生成专属短链接,并自动替换短信中的短链接(限yp2.cn)。 true
         * </p>
         *
         * @param param
         * @return
         */
        public Result <SmsSingleSend> SingleSend(Dictionary <string, string> param)
        {
            var r = new Result <SmsSingleSend>();

            r = CheckParam(ref param, r, Const.Apikey, Const.Mobile, Const.Text);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <SmsSingleSend>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        return(rsp.ToObject <SmsSingleSend>());
                    }

                default: return(null);
                }
            });

            try
            {
                Path = "single_send.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #6
0
        /**
         * <h1>个性化发送</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * mobile String 是
         * 接收的手机号;多个手机号请以逗号分隔,一次不要超过1000个且手机号个数必须与短信内容条数相等;不支持国际号码发送;
         * 多号码:15205201314,15205201315
         * </p>
         * <p>
         * text String 是
         * 短信内容,多个短信内容请使用UTF-8做urlencode后,使用逗号分隔,一次不要超过1000条且短信内容条数必须与手机号个数相等
         * 内容示意:UrlEncode("【云片网】您的验证码是1234", "UTF-8") + "," +
         * UrlEncode("【云片网】您的验证码是5678", "UTF-8")
         * </p>
         * <p>
         * extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
         * </p>
         * <p>
         * uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
         * 默认不开放,如有需要请联系客服申请 10001
         * </p>
         * <p>
         * callback_url String 否
         * 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
         * http://your_receive_url_address
         * </p>
         *
         * @param param
         * @return
         */
        public Result <SmsBatchSend> MultiSend(Dictionary <string, string> param)
        {
            var r = new Result <SmsBatchSend>();

            r = CheckParam(ref param, r, Const.Apikey, Const.Mobile, Const.Text);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <SmsBatchSend>(Version, rsp =>
            {
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        var batch = new SmsBatchSend
                        {
                            TotalCount = rsp[Const.TotalCount].ToObject <int>(),
                            TotalFee   = rsp[Const.TotalFee].ToObject <double>(),
                            Data       = rsp[Const.Data].ToObject <List <SmsSingleSend> >()
                        };
                        return(batch);
                    }

                default: return(null);
                }
            });

            try
            {
                Path = "multi_send.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #7
0
        /**
         * <h1>获取签名API</h1>
         *
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * id Long 否 签名id,暂未开放,如果传入此参数将会指定获取某个签名 9527
         * </p>
         * <p>
         * sign String 否 签名内容 云片网
         * </p>
         * <p>
         * page_num Integer 否 页码,1开始,不带或者格式错误返回全部 1
         * </p>
         * <p>
         * page_size Integer 否 返回条数,必须大于0,不带或者格式错误返回全部 20
         * </p>
         *
         * @param param
         *            sign notify page_num page_size
         * @return
         */
        public Result <SignList> Get(Dictionary <string, string> param)
        {
            var r = new Result <SignList>();

            r = CheckParam(ref param, r, Const.Apikey);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <SignList>(Version, rsp =>
            {
                var list = new SignList();
                switch (Version)
                {
                case Const.VersionV2:
                    {
                        list.Total = rsp[Const.Total].ToObject <int>();
                        list.Sign  = rsp[Const.Sign].ToObject <List <Sign> >();
                        return(list);
                    }

                default: return(null);
                }
            });

            try
            {
                Path = "get.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }
Пример #8
0
        /**
         * <h1>注册成功回调 only v2</h1>
         * <p>
         * <p>
         * 参数名 类型 是否必须 描述 示例
         * </p>
         * <p>
         * apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
         * </p>
         * <p>
         * mobile String 是
         * 注册成功的手机号,请和调用接口的手机号一致 15205201314
         * </p>
         * <p>
         * time String 否 注册成功的时间,格式yyyy-MM-dd HH:mm:ss,可以是一天前,超过时间无法记录,默认当前时间 2017-03-15 18:30:00
         * </p>
         * <p>
         * 如果需要更准确的注册成功数据(排除找回密码等类型验证码产生的数据),
         * 在注册页调用 single_send.json 接口时带上参数“register”(布尔类型),值为“true”,
         * 则该条短信会被认定为注册验证码短信。
         * 此功能需联系客服开通。
         * </p>
         *
         * @param param
         * @return
         * @see SmsApi#single_send(Map)
         */
        public Result <object> RegComplete(Dictionary <string, string> param)
        {
            var r = new Result <object>();

            r = CheckParam(ref param, r, Const.Apikey, Const.Mobile);

            if (!r.IsSucc())
            {
                return(r);
            }
            var data = UrlEncode(ref param);

            var h = new MapResultHandler <object>(Version, rsp => null);

            try
            {
                Path = "reg_complete.json";
                return(Post(ref data, h, r));
            }
            catch (Exception e)
            {
                return(h.CatchExceptoin(e, r));
            }
        }