notify

package
v0.0.0-...-6a8978f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2022 License: MIT Imports: 11 Imported by: 0

README

用户通知管理模块

短信通知

资源准备:

登录腾讯云短信服务控制台: https://console.cloud.tencent.com/smsv2/csms-sign

  • 申请一个签名: 在发送短信内容里面 的签名, 需要腾讯云审核
  • 创建一个短信通知的模板: 您的动态验证码为:{1},{2}分钟内有效!,如非本人操作,请忽略本短信

使用GO发送短信的样例:

package main

import (
        "fmt"

        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
        sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20190711"
)

func main() {
        // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
        // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
        credential := common.NewCredential(
                "SecretId",
                "SecretKey",
        )
        // 实例化一个client选项,可选的,没有特殊需求可以跳过
        cpf := profile.NewClientProfile()
        cpf.HttpProfile.Endpoint = "sms.tencentcloudapi.com"
        // 实例化要请求产品的client对象,clientProfile是可选的
        client, _ := sms.NewClient(credential, "", cpf)

        // 实例化一个请求对象,每个接口都会对应一个request对象
        request := sms.NewSendSmsRequest()
        
        request.PhoneNumberSet = common.StringPtrs([]string{ "18108053819" })
        request.TemplateID = common.StringPtr("782796")
        request.Sign = common.StringPtr("喻茂峻技术文章分享	")
        // 您的动态验证码为:{1},{2}分钟内有效!,如非本人操作,请忽略本短信
        request.TemplateParamSet = common.StringPtrs([]string{ "660612", "30" })

        // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
        response, err := client.SendSms(request)
        if _, ok := err.(*errors.TencentCloudSDKError); ok {
                fmt.Printf("An API error has returned: %s", err)
                return
        }
        if err != nil {
                panic(err)
        }
        // 输出json格式的字符串回包
        fmt.Printf("%s", response.ToJsonString())
} 

封装成sender过后

// Send todo
func (s *Sender) Send(ctx context.Context, req *sms_provider.SendSMSRequest) error {
	// 补充默认+86
	req.InjectDefaultIsoCode()

	request := sms.NewSendSmsRequest()

	request.PhoneNumberSet = common.StringPtrs(req.PhoneNumbers)
	request.TemplateParamSet = common.StringPtrs(req.TemplateParams)
	request.TemplateID = common.StringPtr(req.TemplateId)
	request.SmsSdkAppid = common.StringPtr(s.conf.AppID)
	request.Sign = common.StringPtr(s.conf.Sign)

	response, err := s.sms.SendSmsWithContext(ctx, request)
	if err != nil {
		return err
	}

	for i := range response.Response.SendStatusSet {
		if strings.ToUpper(*(response.Response.SendStatusSet[i].Code)) != "OK" {
			return fmt.Errorf("send sms error, response is %s", response.ToJsonString())
		}
	}

	s.log.Debugf("send sms response success: %s", response.ToJsonString())
	return nil
}

Documentation

Index

Constants

View Source
const (
	AppName = "notify"
)

Variables

View Source
var (
	SMS_PROVIDER_name = map[int32]string{
		0: "TENCENT",
		1: "ALI",
	}
	SMS_PROVIDER_value = map[string]int32{
		"TENCENT": 0,
		"ALI":     1,
	}
)

Enum value maps for SMS_PROVIDER.

View Source
var (
	NOTIFY_TYPE_name = map[int32]string{
		0: "MAIL",
		1: "SMS",
		2: "VOICE",
		3: "IM",
	}
	NOTIFY_TYPE_value = map[string]int32{
		"MAIL":  0,
		"SMS":   1,
		"VOICE": 2,
		"IM":    3,
	}
)

Enum value maps for NOTIFY_TYPE.

View Source
var File_apps_notify_pb_notify_proto protoreflect.FileDescriptor
View Source
var File_apps_notify_pb_rpc_proto protoreflect.FileDescriptor
View Source
var RPC_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "go8.devcloud.mcenter.notify.RPC",
	HandlerType: (*RPCServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "SendSMS",
			Handler:    _RPC_SendSMS_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "apps/notify/pb/rpc.proto",
}

RPC_ServiceDesc is the grpc.ServiceDesc for RPC service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func RegisterRPCServer

func RegisterRPCServer(s grpc.ServiceRegistrar, srv RPCServer)

Types

type NOTIFY_TYPE

type NOTIFY_TYPE int32
const (
	// 邮件通知
	NOTIFY_TYPE_MAIL NOTIFY_TYPE = 0
	// 短信通知
	NOTIFY_TYPE_SMS NOTIFY_TYPE = 1
	// 语音通知
	NOTIFY_TYPE_VOICE NOTIFY_TYPE = 2
	// IM个人消息
	NOTIFY_TYPE_IM NOTIFY_TYPE = 3
)

func ParseNOTIFY_TYPEFromString

func ParseNOTIFY_TYPEFromString(str string) (NOTIFY_TYPE, error)

ParseNOTIFY_TYPEFromString Parse NOTIFY_TYPE from string

func (NOTIFY_TYPE) Descriptor

func (NOTIFY_TYPE) Enum

func (x NOTIFY_TYPE) Enum() *NOTIFY_TYPE

func (NOTIFY_TYPE) EnumDescriptor deprecated

func (NOTIFY_TYPE) EnumDescriptor() ([]byte, []int)

Deprecated: Use NOTIFY_TYPE.Descriptor instead.

func (NOTIFY_TYPE) Equal

func (t NOTIFY_TYPE) Equal(target NOTIFY_TYPE) bool

Equal type compare

func (NOTIFY_TYPE) IsIn

func (t NOTIFY_TYPE) IsIn(targets ...NOTIFY_TYPE) bool

IsIn todo

func (NOTIFY_TYPE) MarshalJSON

func (t NOTIFY_TYPE) MarshalJSON() ([]byte, error)

MarshalJSON todo

func (NOTIFY_TYPE) Number

func (x NOTIFY_TYPE) Number() protoreflect.EnumNumber

func (NOTIFY_TYPE) String

func (x NOTIFY_TYPE) String() string

func (NOTIFY_TYPE) Type

func (*NOTIFY_TYPE) UnmarshalJSON

func (t *NOTIFY_TYPE) UnmarshalJSON(b []byte) error

UnmarshalJSON todo

type RPCClient

type RPCClient interface {
	// 短信通知
	SendSMS(ctx context.Context, in *SendSMSRequest, opts ...grpc.CallOption) (*SendSmsResponse, error)
}

RPCClient is the client API for RPC service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewRPCClient

func NewRPCClient(cc grpc.ClientConnInterface) RPCClient

type RPCServer

type RPCServer interface {
	// 短信通知
	SendSMS(context.Context, *SendSMSRequest) (*SendSmsResponse, error)
	// contains filtered or unexported methods
}

RPCServer is the server API for RPC service. All implementations must embed UnimplementedRPCServer for forward compatibility

type SMS_PROVIDER

type SMS_PROVIDER int32
const (
	// 腾讯短信服务
	SMS_PROVIDER_TENCENT SMS_PROVIDER = 0
	// 阿里短信服务
	SMS_PROVIDER_ALI SMS_PROVIDER = 1
)

func ParseSMS_PROVIDERFromString

func ParseSMS_PROVIDERFromString(str string) (SMS_PROVIDER, error)

ParseSMS_PROVIDERFromString Parse SMS_PROVIDER from string

func (SMS_PROVIDER) Descriptor

func (SMS_PROVIDER) Enum

func (x SMS_PROVIDER) Enum() *SMS_PROVIDER

func (SMS_PROVIDER) EnumDescriptor deprecated

func (SMS_PROVIDER) EnumDescriptor() ([]byte, []int)

Deprecated: Use SMS_PROVIDER.Descriptor instead.

func (SMS_PROVIDER) Equal

func (t SMS_PROVIDER) Equal(target SMS_PROVIDER) bool

Equal type compare

func (SMS_PROVIDER) IsIn

func (t SMS_PROVIDER) IsIn(targets ...SMS_PROVIDER) bool

IsIn todo

func (SMS_PROVIDER) MarshalJSON

func (t SMS_PROVIDER) MarshalJSON() ([]byte, error)

MarshalJSON todo

func (SMS_PROVIDER) Number

func (SMS_PROVIDER) String

func (x SMS_PROVIDER) String() string

func (SMS_PROVIDER) Type

func (*SMS_PROVIDER) UnmarshalJSON

func (t *SMS_PROVIDER) UnmarshalJSON(b []byte) error

UnmarshalJSON todo

type SendSMSRequest

type SendSMSRequest struct {

	// 短信模版的Id
	// @gotags: bson:"template_id" json:"template_id"
	TemplateId string `protobuf:"bytes,1,opt,name=template_id,json=templateId,proto3" json:"template_id" bson:"template_id"`
	// 模版参数
	// @gotags: bson:"template_params" json:"template_params"
	TemplateParams []string `protobuf:"bytes,2,rep,name=template_params,json=templateParams,proto3" json:"template_params" bson:"template_params"`
	// 用户名称(由于具体的电话号码, 是由用户模块管理)
	// @gotags: bson:"users" json:"users"
	Users []string `protobuf:"bytes,3,rep,name=users,proto3" json:"users" bson:"users"`
	// contains filtered or unexported fields
}

func (*SendSMSRequest) Descriptor deprecated

func (*SendSMSRequest) Descriptor() ([]byte, []int)

Deprecated: Use SendSMSRequest.ProtoReflect.Descriptor instead.

func (*SendSMSRequest) GetTemplateId

func (x *SendSMSRequest) GetTemplateId() string

func (*SendSMSRequest) GetTemplateParams

func (x *SendSMSRequest) GetTemplateParams() []string

func (*SendSMSRequest) GetUsers

func (x *SendSMSRequest) GetUsers() []string

func (*SendSMSRequest) ProtoMessage

func (*SendSMSRequest) ProtoMessage()

func (*SendSMSRequest) ProtoReflect

func (x *SendSMSRequest) ProtoReflect() protoreflect.Message

func (*SendSMSRequest) Reset

func (x *SendSMSRequest) Reset()

func (*SendSMSRequest) String

func (x *SendSMSRequest) String() string

type SendSmsResponse

type SendSmsResponse struct {

	// 发送成功的电话列表
	// @gotags: json:"successed_numbers"
	SuccessedNumbers []string `protobuf:"bytes,1,rep,name=successed_numbers,json=successedNumbers,proto3" json:"successed_numbers"`
	// contains filtered or unexported fields
}

func (*SendSmsResponse) Descriptor deprecated

func (*SendSmsResponse) Descriptor() ([]byte, []int)

Deprecated: Use SendSmsResponse.ProtoReflect.Descriptor instead.

func (*SendSmsResponse) GetSuccessedNumbers

func (x *SendSmsResponse) GetSuccessedNumbers() []string

func (*SendSmsResponse) ProtoMessage

func (*SendSmsResponse) ProtoMessage()

func (*SendSmsResponse) ProtoReflect

func (x *SendSmsResponse) ProtoReflect() protoreflect.Message

func (*SendSmsResponse) Reset

func (x *SendSmsResponse) Reset()

func (*SendSmsResponse) String

func (x *SendSmsResponse) String() string

type Service

type Service interface {
	RPCServer
}

type UnimplementedRPCServer

type UnimplementedRPCServer struct {
}

UnimplementedRPCServer must be embedded to have forward compatible implementations.

func (UnimplementedRPCServer) SendSMS

type UnsafeRPCServer

type UnsafeRPCServer interface {
	// contains filtered or unexported methods
}

UnsafeRPCServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to RPCServer will result in compilation errors.

Directories

Path Synopsis
provider
sms

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL