附近小店
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.

updatable_message.go 3.9 KiB

3 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package weapp
  2. const (
  3. apiCreateActivityID = "/cgi-bin/message/wxopen/activityid/create"
  4. apiSetUpdatableMsg = "/cgi-bin/message/wxopen/updatablemsg/send"
  5. )
  6. // CreateActivityIDResponse 动态消息
  7. type CreateActivityIDResponse struct {
  8. CommonError
  9. ActivityID string `json:"activity_id"` // 动态消息的 ID
  10. ExpirationTime uint `json:"expiration_time"` // activity_id 的过期时间戳。默认24小时后过期。
  11. }
  12. // CreateActivityID 创建被分享动态消息的 activity_id。
  13. // token 接口调用凭证
  14. func CreateActivityID(token string) (*CreateActivityIDResponse, error) {
  15. api := baseURL + apiCreateActivityID
  16. return createActivityID(api, token)
  17. }
  18. func createActivityID(api, token string) (*CreateActivityIDResponse, error) {
  19. api, err := tokenAPI(api, token)
  20. if err != nil {
  21. return nil, err
  22. }
  23. res := new(CreateActivityIDResponse)
  24. if err := getJSON(api, res); err != nil {
  25. return nil, err
  26. }
  27. return res, nil
  28. }
  29. // UpdatableMsgTempInfo 动态消息对应的模板信息
  30. type UpdatableMsgTempInfo struct {
  31. ParameterList []UpdatableMsgParameter `json:"parameter_list"` // 模板中需要修改的参数列表
  32. }
  33. // UpdatableMsgParameter 参数
  34. // member_count target_state = 0 时必填,文字内容模板中 member_count 的值
  35. // room_limit target_state = 0 时必填,文字内容模板中 room_limit 的值
  36. // path target_state = 1 时必填,点击「进入」启动小程序时使用的路径。
  37. // 对于小游戏,没有页面的概念,可以用于传递查询字符串(query),如 "?foo=bar"
  38. // version_type target_state = 1 时必填,点击「进入」启动小程序时使用的版本。
  39. // 有效参数值为:develop(开发版),trial(体验版),release(正式版)
  40. type UpdatableMsgParameter struct {
  41. Name UpdatableMsgParamName `json:"name"` // 要修改的参数名
  42. Value string `json:"value"` // 修改后的参数值
  43. }
  44. // UpdatableMsgTargetState 动态消息修改后的状态
  45. type UpdatableMsgTargetState = uint8
  46. // 动态消息状态
  47. const (
  48. UpdatableMsgJoining UpdatableMsgTargetState = iota // 未开始
  49. UpdatableMsgStarted // 已开始
  50. )
  51. // UpdatableMsgParamName 参数 name 的合法值
  52. type UpdatableMsgParamName = string
  53. // 动态消息状态
  54. const (
  55. UpdatableMsgParamMemberCount UpdatableMsgParamName = "member_count" // target_state = 0 时必填,文字内容模板中 member_count 的值
  56. UpdatableMsgParamRoomLimit = "room_limit" // target_state = 0 时必填,文字内容模板中 room_limit 的值
  57. UpdatableMsgParamPath = "path" // target_state = 1 时必填,点击「进入」启动小程序时使用的路径。 对于小游戏,没有页面的概念,可以用于传递查询字符串(query),如 "?foo=bar"
  58. UpdatableMsgParamVersionType = "version_type" // target_state = 1 时必填,点击「进入」启动小程序时使用的版本。有效参数值为:develop(开发版),trial(体验版),release(正式版)
  59. )
  60. // UpdatableMsgSetter 动态消息
  61. type UpdatableMsgSetter struct {
  62. ActivityID string `json:"activity_id"` // 动态消息的 ID,通过 updatableMessage.createActivityId 接口获取
  63. TargetState UpdatableMsgTargetState `json:"target_state"` // 动态消息修改后的状态(具体含义见后文)
  64. TemplateInfo UpdatableMsgTempInfo `json:"template_info"` // 动态消息对应的模板信息
  65. }
  66. // Set 修改被分享的动态消息。
  67. // accessToken 接口调用凭证
  68. func (setter *UpdatableMsgSetter) Set(token string) (*CommonError, error) {
  69. api := baseURL + apiSetUpdatableMsg
  70. return setter.set(api, token)
  71. }
  72. func (setter *UpdatableMsgSetter) set(api, token string) (*CommonError, error) {
  73. api, err := tokenAPI(api, token)
  74. if err != nil {
  75. return nil, err
  76. }
  77. res := new(CommonError)
  78. if err := postJSON(api, setter, res); err != nil {
  79. return nil, err
  80. }
  81. return res, nil
  82. }