- 制作新的通道模板
该主题是针对SendGateway模块,如果需要接入新的第三方通道,则需要开发一套相应的模板。并注册到系统中,才能正常使用。Hx.SmsPlatform.Common.dll该程序集文件中,包含了开始模板时所需的相关类型与接口。
本软件是基于.net 4.5 开发,所以开发模板也需要基于.net 4.5。
注:详细代码可以参考开发模板示例文件夹下的
Hx.SmsPlatform.GatewaySms.MyTemplate通道模板
- 开发模板步骤
- 打开vs2019,创建类库项目,并输入项目名称。(选择.Net Framework4.5框架,语言:C#)
2.添加对Hx.SmsPlatform.Common.dll程序集的引用
3.将Class1文件更名为SendSms。
4.再添加一个Class 命名为ProptryObject并继承Http2Property(该类在Commom中定义)。
并添加运行时所需的每个属性,
其中,
DefaultValue标记,表示该属性的默认值。
DisplayName标记,表示该属性的中文名称。
Description标记,用于该属性的说明描述。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YY.SmsPlatform.Common.Gateway;
namespace Hx.SmsPlatform.GatewaySms.MyTemplate
{
/// <summary>
/// 通道模板属性
/// </summary>
public class ProptryObject: Http2Property
{
[DefaultValue("http://IP:PORT/sms.aspx?action=send")]
public override string Url { get; set; }
[DisplayName("企业id")]
public string userid { get; set; }
[DisplayName("用户账号")]
public string account { get; set; }
[DisplayName("用户密码")]
public string password { get; set; }
[DisplayName("状态报告地址")]
[DefaultValue("http://IP:PORT/statusApi.aspx?action=query")]
public string statuUrl { get; set; }
[DisplayName("余额查询地址")]
[DefaultValue("http://IP:PORT/sms.aspx?action=overage")]
public string overageUrl { get; set; }
[DisplayName("上行地址")]
public string callUrl { get; set; }
[DisplayName("去扩展")]
[Description("下发时是否去掉扩展,选中去除扩展,不选,表示下发时,默认带扩展")]
public bool isExt { get; set; }
}
}
5.修改SendSms类,继承自Http2SendSms<>,泛型参数中传入刚才定义的ProptryObject,给SendSms类加上ChannelTemplate标记(指明该类是一个模板类),ChannelTemplate有三个参数分别表示,模板编号(对应数据库channel_templateinfo表templateid字段,唯一键),模板名称,模板类型,短信或彩信。如下图。
6.重写父类SendSms的 OnInit方法,并执行父类的初始化操作,然后为事件附加相应的方法,用于余额,状态和上行的获取,如图:
/// <summary>
/// 初始化操作,为事件附加方法(余额,状态,上行获取方法)
/// </summary>
protected override void OnInit()
{
base.OnInit(); //执行父类的初始化操作
if (string.IsNullOrWhiteSpace(this.Property.overageUrl) == false)///余额查询
{
this.Elapsed += new Action(Overage_Elapsed);
}
if (string.IsNullOrWhiteSpace(this.Property.statuUrl) == false)///状态查询(主动获取)
{
this.Elapsed += new Action(ReportTimer_Elapsed);
}
if (string.IsNullOrWhiteSpace(this.Property.callUrl) == false)///上行(主动获取)
{
this.Elapsed += new Action(moTimer_Elapsed);
}
}
7. 重写父类Http2SendSms<>的OnSend