qqmeeting

package
v0.9.8 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2020 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DisableRegistered = iota
	EnableRegistered
)

企业用户管理

View Source
const (
	MeetingRoleCreator = "creator" // 创建者
	MeetingRoleHoster  = "hoster"  // 主持人
	MeetingRoleInvitee = "invitee" // 被邀请者
)

会议角色

View Source
const (
	MeetingTypeBookingMeeting = iota // 预约会议类型
	MeetingTypeQuickMeeting          // 快速会议类型
)

会议类型

View Source
const (
	InstancePC = iota + 1
	InstanceMac
	InstanceAndroid
	InstanceIOS
	InstanceWeb
	InstanceIPad
	InstanceAndroidPad
	InstanceMicroProgram
)

设备类型

View Source
const (
	ErrTinyIdOrMeetingId       = 9002
	ErrMeetingNotExists        = 9003
	ErrMeetingCreateExceed     = 9008
	ErrMeetingQueryExceed      = 9061
	ErrApiCallUnknownType      = 10000
	ErrApiCallBadParameter     = 10001
	ErrAppVersionForbidden     = 10005
	ErrUserAlreadyExists       = 20002
	ErrUserUnavailable         = 20003
	ErrInvalidPhone            = 40000
	ErrInvalidEmail            = 41001
	ErrEmailUsed               = 41002
	ErrPhoneUsed               = 41003
	ErrCorpID                  = 50000
	ErrCorpUnavailable         = 50001
	ErrXTcTimestamp            = 190300
	ErrRequestReplay           = 190301
	ErrUnauthenticatedSecret   = 190303
	ErrCallMinuteExceed        = 190310
	ErrCallDayExceed           = 190311
	ErrCallParticularDayExceed = 190312
	ErrApiRequiredInfoNotFound = 200001
	ErrApiReplay               = 200002
	ErrApiBadSignature         = 200003
	ErrApiNotSupportRequest    = 200004
	ErrJsonSchemeInvalid       = 200005
	ErrApiBadRequestParameter  = 200006
)

错误码

View Source
const (
	MeetingStateInvalid   = "MEETING_STATE_INVALID"   // 非法或未知的会议状态,错误状态
	MeetingStateInit      = "MEETING_STATE_INIT"      // 会议的初始状态,表示还没有人入会
	MeetingStateCancelled = "MEETING_STATE_CANCELLED" // 会议已取消
	MeetingStateStarted   = "MEETING_STATE_STARTED"   // 会议已开始,有人入会
	MeetingStateEnded     = "MEETING_STATE_ENDED"     // 会议已结束
	MeetingStateRecycled  = "MEETING_STATE_RECYCLED"  // 会议号已被回收
	MeetingStateNull      = "MEETING_STATE_NULL"      // 未知状态
)

会议状态

View Source
const (
	ApiHost = "https://api.meeting.qq.com/v1"
)

Entrance

Variables

View Source
var (
	RequestDescriptorMeetingCreate                = MeetingRequestDescriptor{"/meetings", "POST", "Create"}
	RequestDescriptorMeetingQueryByID             = MeetingRequestDescriptor{"/meetings/%s", "GET", "ID"}
	RequestDescriptorMeetingQueryByCode           = MeetingRequestDescriptor{"/meetings", "GET", "Code"}
	RequestDescriptorMeetingCancelByID            = MeetingRequestDescriptor{"/meetings/%s/cancel", "POST", "CANCEL"}
	RequestDescriptorMeetingUpdateByID            = MeetingRequestDescriptor{"/meetings/%s", "PUT", "UPDATE"}
	RequestDescriptorMeetingQueryParticipantsByID = MeetingRequestDescriptor{"/meetings/%s/participants", "GET", "QUERY"}
	RequestDescriptorMeetingQueryUserMeetingList  = MeetingRequestDescriptor{"/meetings", "GET", "QUERY_MEETING_LIST"}
	RequestDescriptorUserCreate                   = MeetingRequestDescriptor{"/users", "POST", "Create"}
	RequestDescriptorUserDetailQuery              = MeetingRequestDescriptor{"/users/%s", "GET", "QUERY"}
	RequestDescriptorUserUpdate                   = MeetingRequestDescriptor{"/users/%s", "PUT", "UPDATE"}
	RequestDescriptorUserDelete                   = MeetingRequestDescriptor{"/users/%s", "DELETE", "DELETE"}
	RequestDescriptorUserList                     = MeetingRequestDescriptor{"/users/list", "GET", "QUERY"}
)

API LIST

Functions

func GetHttpClient

func GetHttpClient() *http.Client

func NewRequest

func NewRequest(method, url, body string, meeting Meeting) (*http.Request, error)

func PrintResponseJsonString

func PrintResponseJsonString(response MeetingResponse) string

Types

type KeyValuePair

type KeyValuePair struct {
	Key   string
	Value string
}

type Meeting

type Meeting struct {
	SecretKey  string
	SecretID   string
	AppID      string
	SdkID      string
	Version    string // 软件版本,用于调试
	Registered int    // 企业用户管理,最好开,否则主持人的功能用不了
}

func (Meeting) Do

func (meeting Meeting) Do(req MeetingRequest) (MeetingResponse, error)

type MeetingCancelRequest

type MeetingCancelRequest struct {
	MeetingID    string `json:"-" param:"meeting_id"`    // 会议的唯一 ID。
	UserID       string `json:"userid"`                  // 调用方用于标示用户的唯一 ID
	InstanceID   int    `json:"instanceid"`              // 用户的终端设备类型
	ReasonCode   int    `json:"reason_code"`             // 原因代码,可为用户自定义
	ReasonDetail string `json:"reason_detail,omitempty"` // 详细取消原因描述。
}

取消会议

type MeetingCreateRequest

type MeetingCreateRequest struct {
	UserID     string     `json:"userid"`             // 调用方用于标示用户的唯一 ID
	InstanceID int        `json:"instanceid"`         // 用户的终端设备类型
	Subject    string     `json:"subject"`            // 会议主题
	Hosts      []*UserObj `json:"hosts,omitempty"`    // 会议主持人的用户 ID,如果没有指定,主持人被设定为参数 userid 的用户,即 API 调用者。
	Type       int        `json:"type"`               // 会议类型
	Invitees   []*UserObj `json:"invitees,omitempty"` // 会议邀请的参会者,可为空
	StartTime  string     `json:"start_time"`         // 会议开始时间戳(单位秒)。
	EndTime    string     `json:"end_time"`           // 会议结束时间戳(单位秒)。
	Password   string     `json:"password,omitempty"` // 会议密码,可不填
	Settings   *Settings  `json:"settings,omitempty"` // 会议设置
}

创建会议

type MeetingCreateResponse

type MeetingCreateResponse struct {
	NextPos             int            `json:"next_pos"`
	Remaining           int            `json:"remaining"`
	MeetingNumber       int            `json:"meeting_number"`    // 会议数量
	MeetingCreationInfo []*MeetingInfo `json:"meeting_info_list"` // 预约会议列表
}

type MeetingError

type MeetingError struct {
	Code    int    `json:"error_code"`
	Message string `json:"message"`
}

func (MeetingError) Error

func (e MeetingError) Error() string

type MeetingErrorResponse

type MeetingErrorResponse struct {
	StatusCode int           `json:"-"`
	ErrorInfo  *MeetingError `json:"error_info"`
}

type MeetingInfo

type MeetingInfo struct {
	MeetingID    string     `json:"meeting_id"`             // 会议的唯一标示
	MeetingCode  string     `json:"meeting_code"`           // 会议 App 的呼入号码
	Subject      string     `json:"subject"`                // 会议主题
	Hosts        []*UserObj `json:"hosts,omitempty"`        // 会议主持人的用户 ID,如果没有指定,主持人被设定为参数 userid 的用户,即 API 调用者。
	Participants []*UserObj `json:"participants,omitempty"` // 会议邀请的参会者,可为空
	StartTime    string     `json:"start_time"`             // 会议开始时间戳(单位秒)。
	EndTime      string     `json:"end_time"`               // 会议结束时间戳(单位秒)。
	Password     *string    `json:"password,omitempty"`     // 会议密码,可不填
	JoinUrl      string     `json:"join_url"`               // 加入会议 URL(点击链接直接加入会议)
	Settings     *Settings  `json:"settings,omitempty"`     // 会议设置
}

会议信息

type MeetingParticipants

type MeetingParticipants struct {
	UserID                string `json:"userid"`    // 参会者用户 ID。
	Base64EncodedUsername string `json:"user_name"` // 入会用户名(base64)
	SHA256HashedPhone     string `json:"phone"`     // 参会者手机号 hash 值 SHA256(手机号/secretid)。
	JoinTime              string `json:"join_time"` // 参会者加入会议时间戳(单位秒)。
	LeftTime              string `json:"left_time"` // 参会者离开会议时间戳(单位秒)。
}

参会人员信息

type MeetingQueryByCodeRequest

type MeetingQueryByCodeRequest struct {
	MeetingCode string `json:"-" query:"meeting_code"`
	UserID      string `json:"-" query:"userid"`
	InstanceID  int    `json:"-" query:"instanceid"`
}

通过Code获取会议信息

BUG(hafrans) 腾讯会议API接口报错,不知道什么问题,本地HTTP抓包未发现异常。

type MeetingQueryByIDRequest

type MeetingQueryByIDRequest struct {
	MeetingID  string `param:"meeting_id"`
	UserID     string `query:"userid"`
	InstanceID int    `query:"instanceid"`
}

通过会议ID获取会议信息

type MeetingQueryInfo

type MeetingQueryInfo struct {
	MeetingInfo
	Status string `json:"status"` // 当前会议状态
}

带状态的会议信息

type MeetingQueryParticipantsRequest

type MeetingQueryParticipantsRequest struct {
	MeetingID string `param:"meeting_id"`
	UserID    string `query:"userid"`
}

MeetingQueryParticipantsRequest 会议拥有者获取某指定会议的参与人员列表。只有会议的拥有者即创建者可以查询参会成员的列表。其他用 户的调用会被拒绝。如果会议还未开始,调用此接口查询会返回空列表。

type MeetingQueryParticipantsResponse

type MeetingQueryParticipantsResponse struct {
	MeetingID         string                 `json:"meeting_id"`          // 会议的唯一 ID
	MeetingCode       string                 `json:"meeting_code"`        // 会议号码
	Subject           string                 `json:"subject"`             // 会议主题
	ScheduleStartTime string                 `json:"schedule_start_time"` // 预定会议开始时间戳(单位秒)
	ScheduleEndTime   string                 `json:"schedule_end_time"`   // 预定会议结束时间戳(单位秒)
	Participants      []*MeetingParticipants `json:"participants"`        // 参会人员对象数组。
	HasRemaining      bool                   `json:"has_remaining"`
}

type MeetingQueryResponse

type MeetingQueryResponse struct {
	NextPos         int                 `json:"next_pos"`
	Remaining       int                 `json:"remaining"`
	MeetingNumber   int                 `json:"meeting_number"`    // 会议数量
	MeetingInfoList []*MeetingQueryInfo `json:"meeting_info_list"` // 会议列表
}

type MeetingQueryUserListMeetingInfo

type MeetingQueryUserListMeetingInfo struct {
	MeetingID       string     `json:"meeting_id"`        // 会议的唯一标示
	MeetingCode     string     `json:"meeting_code"`      // 会议 App 的呼入号码
	Subject         string     `json:"subject"`           // 会议主题
	Hosts           []*UserObj `json:"hosts,omitempty"`   // 会议主持人的用户 ID,如果没有指定,主持人被设定为参数 userid 的用户,即 API 调用者。
	StartTime       string     `json:"start_time"`        // 会议开始时间戳(单位秒)。
	EndTime         string     `json:"end_time"`          // 会议结束时间戳(单位秒)。
	JoinMeetingRole string     `json:"join_meeting_role"` // 查询者在会议中的角色
}

查询用户的会议列表中会议对象

type MeetingQueryUserMeetingListRequest

type MeetingQueryUserMeetingListRequest struct {
	UserID     string `query:"userid"`
	InstanceID int    `query:"instanceid"`
}

获取某指定用户的会议列表

type MeetingQueryUserMeetingListResponse

type MeetingQueryUserMeetingListResponse struct {
	NextPos         int                                `json:"next_pos"`
	Remaining       int                                `json:"remaining"`
	MeetingNumber   int                                `json:"meeting_number"`
	MeetingInfoList []*MeetingQueryUserListMeetingInfo `json:"meeting_info_list"`
}

type MeetingRequest

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

MeetingRequest interface

type MeetingRequestDescriptor

type MeetingRequestDescriptor struct {
	Url    string
	Method string
	Tag    string
}

Describe A Request

type MeetingResponse

type MeetingResponse interface {
}

type MeetingUpdateRequest

type MeetingUpdateRequest struct {
	MeetingID  string     `json:"-" param:"meeting_id"`
	UserID     string     `json:"userid"`               // 调用方用于标示用户的唯一 ID
	InstanceID int        `json:"instanceid"`           // 用户的终端设备类型
	Subject    string     `json:"subject"`              // 会议主题
	Hosts      []*UserObj `json:"hosts,omitempty"`      // 会议主持人的用户 ID,如果没有指定,主持人被设定为参数 userid 的用户,即 API 调用者。
	Invitees   []*UserObj `json:"invitees,omitempty"`   // 会议邀请的参会者,可为空
	StartTime  string     `json:"start_time,omitempty"` // 会议开始时间戳(单位秒)。
	EndTime    string     `json:"end_time,omitempty"`   // 会议结束时间戳(单位秒)。
	Password   string     `json:"password,omitempty"`   // 会议密码,可不填,修改会议接口只支持对有密码会议的密码修改,暂不支持取消会议密码。
	Settings   *Settings  `json:"settings,omitempty"`   // 会议设置,不修改就不填写
}

MeetingUpdateRequest 修改某指定会议的会议信息

type MeetingUpdateResponse

type MeetingUpdateResponse struct {
	NextPos         int                      `json:"next_pos"`
	Remaining       int                      `json:"remaining"`
	MeetingNumber   int                      `json:"meeting_number"`    // 会议数量
	MeetingInfoList []*SimplifiedMeetingInfo `json:"meeting_info_list"` // 会议列表
}

type Pager

type Pager struct {
	TotalCount  int `json:"total_count"`  // 总数
	CurrentSize int `json:"current_size"` // 当前页实际大小
	CurrentPage int `json:"current_page"` // 当前页数
	PageSize    int `json:"page_size"`    // 分页大小
}

type QueryValues

type QueryValues []*KeyValuePair

func NewQueryValues

func NewQueryValues() QueryValues

func (*QueryValues) Add

func (v *QueryValues) Add(key, value string)

func (*QueryValues) Encode

func (v *QueryValues) Encode() string

type Request

type Request struct {
	Method        string
	URL           *url.URL
	Secret        string
	Body          string
	Key           string `json:"X-TC-Key"`
	Timestamp     int64  `json:"X-TC-Timestamp"`
	Nonce         int    `json:"X-TC-Nonce"`
	Signature     string `json:"X-TC-Signature"`
	AppID         string `json:"AppId"`
	SdkID         string `json:"SdkId"`
	Version       string `json:"X-TC-Version"`
	Registered    int    `json:"X-TC-Registered"`
	ContentType   string `json:"Content-Type"`
	ContentLength string `json:"Content-Length"`
}

RequestBody Descriptor

type Settings

type Settings struct {
	MuteEnableJoin   bool `json:"mute_enable_join"`            // 入会时静音
	AllowUnmuteSelf  bool `json:"allow_unmute_self"`           // 允许参会者取消静音
	MuteAll          bool `json:"mute_all,omitempty"`          // 全体静音
	HostVideo        bool `json:"host_video,omitempty"`        // 入会时主持人视频是否开启,暂时不支持。
	ParticipantVideo bool `json:"participant_video,omitempty"` // 入会时参会者视频是否开启,暂时不支持。
	EnableRecord     bool `json:"enable_record,omitempty"`     // 开启录播,暂时不支持。
	PlayIVROnLeave   bool `json:"play_ivr_on_leave,omitempty"` // 参会者离开时播放提示音。
	PlayIVROnJoin    bool `json:"play_ivr_on_join,omitempty"`  // 有新的入会者加入时播放提示音。
	LiveUrl          bool `json:"live_url,omitempty"`          // 开启直播, 暂时不支持。
}

会议设置

type SimplifiedMeetingInfo

type SimplifiedMeetingInfo struct {
	MeetingID   string `json:"meeting_id"`
	MeetingCode string `json:"meeting_code"`
}

简要会议信息

type UserCreateRequest

type UserCreateRequest struct {
	UserInfo
}

创建用户

type UserDeleteRequest

type UserDeleteRequest struct {
	UserID string `json:"-" param:"userid"` // 调用方用于标示用户的唯一 ID
}

删除用户

type UserDetail

type UserDetail struct {
	Username   string `json:"username"`    // 用户昵称
	UpdateTime string `json:"update_time"` // 更新时间
	Status     string `json:"status"`      // 用户状态,1:正常;2:删除
	Email      string `json:"email"`       // 邮箱地址
	Phone      string `json:"phone"`       // 手机号码
	UserID     string `json:"userid"`      // 调用方用于标示用户的唯一 ID
	AreaCode   string `json:"area"`        // 地区编码(国内默认86)
	AvatarUrl  string `json:"avatar_url"`  // 头像
}

用户详情

type UserDetailQueryRequest

type UserDetailQueryRequest struct {
	UserID string `json:"userid" param:"userid"`
}

获取用户信息

type UserDetailQueryResponse

type UserDetailQueryResponse struct {
	UserDetail
}

type UserDetailUpdateRequest

type UserDetailUpdateRequest struct {
	UserID   string `json:"-" param:"userid"` // 调用方用于标示用户的唯一 ID
	Email    string `json:"email"`            // 新的邮箱地址
	Username string `json:"username"`         // 新的用户昵称
}

更新用户信息

type UserInfo

type UserInfo struct {
	Email    string `json:"email" binding:"required"`    // 邮箱地址
	Phone    string `json:"phone" binding:"required"`    // 手机号码
	Username string `json:"username" binding:"required"` // 用户昵称
	UserID   string `json:"userid" binding:"required"`   // 调用方用于表示用户的唯一ID
}

用户信息

type UserListRequest

type UserListRequest struct {
	Page     int `json:"page" query:"page"`           // 当前页
	PageSize int `json:"page_size" query:"page_size"` // 分页大小
}

获取用户列表

type UserListResponse

type UserListResponse struct {
	Pager
	Users []*UserDetail `json:"users"`
}

type UserObj

type UserObj struct {
	UserID      string `json:"userid"`              // 调用方用于标示用户的唯一 ID
	IsAnonymous bool   `json:"is_anonymous"`        // 匿名入会
	NickName    string `json:"nick_name,omitempty"` // 用户匿名字符串
}

UserObj 用户对象 https://cloud.tencent.com/document/product/1095/42417

Notes

Bugs

  • 腾讯会议API接口报错,不知道什么问题,本地HTTP抓包未发现异常。

Jump to

Keyboard shortcuts

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