短信rpc
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.4 KiB

  1. package smsrpc
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "log"
  6. )
  7. /**
  8. * 发送腾讯云短信
  9. * @secretId 腾讯云密钥id
  10. * @secretKey 腾讯云密钥key
  11. * @signname 签名
  12. * @templateId 模板id
  13. * @mobiles 手机号多个用逗号隔开
  14. * @params 参数值
  15. */
  16. func SendTencentSms(secretId, secretKey, smsAppId string, signname, templateId string, mobiles, params []string, url ...string) ([]map[string]interface{}, error) {
  17. if secretId == "" || secretKey == "" || signname == "" || templateId == "" {
  18. return nil, errors.New("参数错误")
  19. }
  20. if len(mobiles) < 1 || len(params) < 1 {
  21. return nil, errors.New("参数错误")
  22. }
  23. conn, err := rpc_server_conn(url...)
  24. if err != nil {
  25. return nil, err
  26. }
  27. defer conn.Close()
  28. mobile, err := json.Marshal(mobiles)
  29. if err != nil {
  30. return nil, err
  31. }
  32. param, err := json.Marshal(params)
  33. if err != nil {
  34. return nil, err
  35. }
  36. arg := TencentParam{secretId, secretKey, smsAppId, signname, string(mobile), templateId, string(param)}
  37. req, err := SetReqData(arg)
  38. if err != nil {
  39. return nil, err
  40. }
  41. res := &Response{}
  42. err = conn.SendTencentMsg(req, res)
  43. if err != nil {
  44. return nil, err
  45. }
  46. res_data_de, err := GetResData(res)
  47. log.Println(res_data_de, err)
  48. if err != nil {
  49. return nil, err
  50. }
  51. if res_data_de == "" {
  52. return nil, nil
  53. }
  54. var res_arr []map[string]interface{}
  55. err = json.Unmarshal([]byte(res_data_de), &res_arr)
  56. if err != nil {
  57. return nil, err
  58. }
  59. return res_arr, nil
  60. }