点击查看 官方文档
go get github.com/dobyte/tencent-im
package main
import (
"fmt"
"github.com/dobyte/tencent-im"
"github.com/dobyte/tencent-im/account"
)
func main() {
tim := im.NewIM(&im.Options{
AppId: 1400579830, // 无效的AppId,请勿直接使用
AppSecret: "0d2a321b087fdb8fd5ed5ea14fe0489139086eb1b03541283fc9feeab8f2bfd3", // 无效的AppSecret,请勿直接使用
UserId: "administrator", // 管理员用户账号,请在腾讯云IM后台设置管理账号
})
// 导入账号
if err := tim.Account().ImportAccount(&account.Account{
UserId: "test1",
Nickname: "测试账号1",
FaceUrl: "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
}); err != nil {
if e, ok := err.(im.Error); ok {
fmt.Println(fmt.Sprintf("import accout failed, code:%d, message:%s.", e.Code(), e.Message()))
} else {
fmt.Println(fmt.Sprintf("import accout failed:%s.", err.Error()))
}
}
fmt.Println("import account success.")
// 注册回调事件
tim.Callback().Register(callback.EventAfterFriendAdd, func(ack callback.Ack, data interface{}) {
fmt.Printf("%+v", data.(callback.AfterFriendAdd))
_ = ack.AckSuccess(0)
})
// 注册回调事件
tim.Callback().Register(callback.EventAfterFriendDelete, func(ack callback.Ack, data interface{}) {
fmt.Printf("%+v", data.(callback.AfterFriendDelete))
_ = ack.AckSuccess(0)
})
// 开启监听
http.HandleFunc("/callback", func(writer http.ResponseWriter, request *http.Request) {
tim.Callback().Listen(writer, request)
})
// 启动服务器
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
模块 | 名称 | 方法 | 说明 | master |
账号管理 | 导入单个帐号 | Account.ImportAccount | 本接口用于将 App 自有帐号导入即时通信 IM 帐号系统,为该帐号创建一个对应的内部 ID,使该帐号能够使用即时通信 IM 服务。 | √ |
导入多个帐号 | Account.ImportAccounts | 本接口用于批量将 App 自有帐号导入即时通信 IM 帐号系统,为该帐号创建一个对应的内部 ID,使该帐号能够使用即时通信 IM 服务。 | √ | |
删除单个帐号 | Account.DeleteAccount |
|
√ | |
删除多个帐号 | Account.DeleteAccounts | 仅支持删除套餐包类型为 IM 体验版的帐号,其他类型的账号(如:TRTC、白板、专业版、旗舰版)无法删除。 | √ | |
查询单个帐号导入状态 | Account.CheckAccount |
|
√ | |
查询多个帐号导入状态 | Account.CheckAccounts | 用于查询自有帐号是否已导入即时通信 IM,支持批量查询。 | √ | |
失效帐号登录状态 | Account.KickAccount | 本接口适用于将 App 用户帐号的登录状态(例如 UserSig)失效。 | √ | |
查询单个帐号在线状态 | Account.GetAccountOnlineState |
|
√ | |
查询多个帐号在线状态 | Account.GetAccountsOnlineState | 获取用户当前的登录状态。 | √ | |
资料管理 | 设置资料 | Profile.SetProfile | 支持 标配资料字段 和 自定义资料字段 的设置。 | √ |
拉取资料 | Profile.GetProfiles | √ | ||
关系链管理 | 添加单个好友 | SNS.AddFriend |
|
√ |
添加多个好友 | SNS.AddFriends | 添加好友,支持批量添加好友。 | √ | |
导入单个好友 | SNS.ImportFriend | 本方法拓展于“添加多个好友(ImportFriends)”方法。 | √ | |
导入多个好友 | SNS.ImportFriends |
|
√ | |
更新单个好友 | SNS.UpdateFriend |
|
√ | |
更新多个好友 | SNS.UpdateFriends |
|
√ | |
删除单个好友 | SNS.DeleteFriend | 本方法拓展于“删除多个好友(DeleteFriends)”方法。 | √ | |
删除多个好友 | SNS.DeleteFriends | 删除好友,支持单向删除好友和双向删除好友。 | √ | |
删除所有好友 | SNS.DeleteAllFriends | 清除指定用户的标配好友数据和自定义好友数据。 | √ | |
校验单个好友 | SNS.CheckFriend | 本方法拓展于“校验多个好友(CheckFriends)”方法。 | √ | |
校验多个好友 | SNS.CheckFriends | 支持批量校验好友关系。 | √ | |
拉取好友 | SNS.FetchFriends |
|
√ | |
拉取好友 | SNS.PullFriends |
|
√ | |
拉取单个指定好友 | SNS.GetFriend |
|
√ | |
拉取多个指定好友 | SNS.GetFriends |
|
√ | |
添加黑名单 | SNS.AddBlacklist | 添加黑名单,支持批量添加黑名单。 | √ | |
删除黑名单 | SNS.DeleteBlacklist | 删除指定黑名单。 | √ | |
拉取黑名单 | SNS.FetchBlacklist | 支持分页拉取所有黑名单。 | √ | |
拉取黑名单 | SNS.PullBlacklist |
|
√ | |
校验黑名单 | SNS.CheckBlacklist | 支持批量校验黑名单。 | √ | |
添加分组 | SNS.AddGroups | 添加分组,支持批量添加分组,并将指定好友加入到新增分组中。 | √ | |
删除分组 | SNS.DeleteGroups | 删除指定分组。 | √ | |
拉取分组 | SNS.GetGroups | 拉取分组,支持指定分组以及拉取分组下的好友列表。 | √ | |
私聊消息 | 单发单聊消息 | Private.SendMessage |
|
√ |
批量发单聊消息 | Private.SendMessages |
|
√ | |
导入单聊消息 | Private.ImportMessage |
|
√ | |
查询单聊消息 | Private.FetchMessages |
|
√ | |
续拉取单聊消息 | Private.PullMessages |
|
√ | |
撤回单聊消息 | Private.RevokeMessage |
|
√ | |
设置单聊消息已读 | Private.SetMessageRead | 设置用户的某个单聊会话的消息全部已读。 | √ | |
查询单聊未读消息计数 | Private.GetUnreadMessageNum | App 后台可以通过该接口查询特定账号的单聊总未读数(包含所有的单聊会话)或者单个单聊会话的未读数。 | √ | |
全员推送 | 设置应用属性名称 | Push.PushMessage |
|
√ |
设置应用属性名称 | Push.SetAttrNames | 每个应用可以设置自定义的用户属性,最多可以有10个。通过本接口可以设置每个属性的名称,设置完成后,即可用于按用户属性推送等。 | √ | |
获取应用属性名称 | Push.GetAttrNames | 管理员获取应用属性名称。使用前请先 设置应用属性名称 。 | √ | |
获取用户属性 | Push.GetUserAttrs | 获取用户属性(必须以管理员帐号调用);每次最多只能获取100个用户的属性。使用前请先 设置应用属性名称 。 | √ | |
设置用户属性 | Push.SetUserAttrs | 管理员给用户设置属性。每次最多只能给100个用户设置属性。使用前请先 设置应用属性名称 。 | √ | |
删除用户属性 | Push.DeleteUserAttrs | 管理员给用户删除属性。注意每次最多只能给100个用户删除属性。使用前请先 设置应用属性名称。 | √ | |
获取用户标签 | Push.GetUserTags | 获取用户标签(必须以管理员帐号调用)。每次最多只能获取100个用户的标签。 | √ | |
添加用户标签 | Push.AddUserTags |
|
√ | |
删除用户标签 | Push.DeleteUserTags | 管理员给用户删除标签。注意每次最多只能给100个用户删除标签。 | √ | |
删除用户所有标签 | Push.DeleteUserAllTags | 管理员给用户删除所有标签。注意每次最多只能给100个用户删除所有标签。 | √ | |
全局禁言管理 | 设置全局禁言 | Mute.SetNoSpeaking |
|
√ |
查询全局禁言 | Mute.GetNoSpeaking |
|
√ | |
运营管理 | 拉取运营数据 | Operation.GetOperationData | App 管理员可以通过该接口拉取最近30天的运营数据,可拉取的字段见下文可拉取的运营字段。 | √ |
下载最近消息记录 | Operation.GetHistoryData | App 管理员可以通过该接口获取 App 中最近7天中某天某小时的所有单发或群组消息记录的下载地址。 | √ | |
获取服务器IP地址 | Operation.GetIPList | 基于安全等考虑,您可能需要获知服务器的 IP 地址列表,以便进行相关限制。App 管理员可以通过该接口获得 SDK、第三方回调所使用到的服务器 IP 地址列表或 IP 网段信息。 | √ | |
群组管理 | 拉取App中的所有群组ID | Group.FetchGroupIds | App 管理员可以通过该接口获取App中所有群组的ID。 | √ |
拉取App中的所有群组 | Group.FetchGroups | 本方法由“拉取App中的所有群组ID(FetchGroupIds)”拓展而来 | √ | |
续拉取App中的所有群组 | Group.PullGroups | 本方法由“拉取App中的所有群组(FetchGroups)”拓展而来 | √ | |
创建群组 | Group.CreateGroup | App 管理员可以通过该接口创建群组。 | √ | |
获取单个群详细资料 | Group.GetGroup | 本方法由“获取多个群详细资料(GetGroups)”拓展而来 | √ | |
获取多个群详细资料 | Group.GetGroups | App 管理员可以根据群组 ID 获取群组的详细信息。 | √ | |
拉取群成员详细资料 | Group.FetchMembers | App管理员可以根据群组ID获取群组成员的资料。 | √ | |
拉取群成员详细资料 | Group.PullMembers | 本方法由“拉取群成员详细资料(FetchMembers)”拓展而来 | √ | |
修改群基础资料 | Group.UpdateGroup | App管理员可以通过该接口修改指定群组的基础信息。 | √ | |
增加群成员 | Group.AddMembers | App管理员可以通过该接口向指定的群中添加新成员。 | √ | |
删除群成员 | Group.DeleteMembers | App管理员可以通过该接口删除群成员。 | √ | |
修改群成员资料 | Group.UpdateMember | App管理员可以通过该接口修改群成员资料。 | √ | |
解散群组 | Group.DestroyGroup | App管理员通过该接口解散群。 | √ | |
拉取用户所加入的群组 | Group.FetchMemberGroups | App管理员可以通过本接口获取某一用户加入的群信息。默认不获取用户已加入但未激活好友工作群(Work)以及直播群(AVChatRoom)群信息。 | √ | |
拉取用户所加入的群组 | Group.PullMemberGroups | 本方法由“拉取用户所加入的群组(FetchMemberGroups)”拓展而来 | √ | |
查询用户在群组中的身份 | Group.GetRolesInGroup | App管理员可以通过该接口获取一批用户在群内的身份,即“成员角色”。 | √ | |
批量禁言 | Group.ForbidSendMessage |
|
√ | |
取消禁言 | Group.AllowSendMessage | 本方法由“批量禁言(ForbidSendMessage)”拓展而来 | √ | |
获取被禁言群成员列表 | Group.GetShuttedUpMembers | App管理员可以根据群组ID获取群组中被禁言的用户列表。 | √ | |
在群组中发送普通消息 | Group.SendMessage | App管理员可以通过该接口在群组中发送普通消息。 | √ | |
在群组中发送系统通知 | Group.SendNotification | App 管理员可以通过该接口在群组中发送系统通知。 | √ | |
转让群主 | Group.ChangeGroupOwner |
|
√ | |
撤回单条群消息 | Group.RevokeMessage | 本方法由“撤回多条群消息(RevokeMessages)”拓展而来 | √ | |
撤回多条群消息 | Group.RevokeMessages | App 管理员通过该接口撤回指定群组的消息,消息需要在漫游有效期以内。 | √ | |
导入群基础资料 | Group.ImportGroup | App 管理员可以通过该接口导入群组,不会触发回调、不会下发通知;当 App 需要从其他即时通信系统迁移到即时通信 IM 时,使用该协议导入存量群组数据。 | √ | |
导入群消息 | Group.ImportMembers |
|
√ | |
导入多个群成员 | Group.ImportMembers |
|
√ | |
设置成员未读消息计数 | Group.SetMemberUnreadMsgNum |
|
√ | |
撤回指定用户发送的消息 | Group.RevokeMemberMessages | 该API接口的作用是撤回最近1000条消息中指定用户发送的消息。 | √ | |
拉取群历史消息 | Group.FetchMessages |
|
√ | |
续拉取群历史消息 | Group.PullMessages | 本方法由“拉取群历史消息(FetchMessages)”拓展而来 | √ | |
获取直播群在线人数 | Group.GetOnlineMemberNum | App 管理员可以根据群组 ID 获取直播群在线人数。 | √ | |
最近联系人 | 拉取会话列表 | RecentContact.FetchSessions | 支持分页拉取会话列表。 | √ |
拉取会话列表 | RecentContact.PullSessions |
|
√ | |
删除单个会话 | RecentContact.DeleteSession | 删除指定会话,支持同步清理漫游消息。 | √ |