腾讯云小程序云直播解决方案-直播带货 IM 接入指引-同尘科技

直播带货组件是对直播带货场景中使用即时通信 IM 能力的二次封装,在封装基本的收发消息能力的同时,针对直播带货场景封装了点赞、送礼、商品推送和优惠券领取等相关能力。相关 SDK 下载,请参见 SDK 下载。

前置条件

创建即时通信 IM 应用创建群成员自定义字段attent:记录自己关注了哪些主播创建群自定义字段add_goods :后台上架新的直播间商品列表room_status:控制直播间状态

引入直播带货 SDK

npm i im-live-sells --save

组件参数

SDKAppID
即时通信应用 ID,SDKAppID 可在 即时通信 IM 控制台 上创建应用,SDKAppID 可在应用基本信息模块获取,开始创建的应用为体验版,可永久免费试用,但配置有限,不适合正式环境试用。正式环境可购买旗舰版或专业版。userSig
即时通信 IM 用户签名,UserSig 为登录腾讯云即时通信 IM SDK 的必要参数,可在业务后台生成后返回给前端使用,生成文档与代码可参考 生成 UserSig。roomID
直播间群聊房间 ID,此 ID 为即时通信 IM 所创建的实时音视频(AVCHATROOM)房间 ID,该房间无加入人数限制可通过 即时通信 IM 的 群组管理 创建,或通过 restapi 创建。TIM
即时通信 IM SDK,如是在小程序环境,请使用 tim-wx-sdk;web 环境则使用 tim-js-sdkuserName
与生成 userSig 的 userName 一致。

初始化示例

import TSL from 'im-live-sells'import TIM from 'tim-js-sdk' //web 环境// import TIM from 'tim-wx-sdk' 小程序环境const tls = new TIMLiveSell({      SDKAppID: 1400***803,      roomID: '@TGS#E****NVLGE',      userSig: 'eJwtzM9****-reWMQw_',      userName: 'Ho***st',      TIM: TIM})

组件回调

TSL.EVENT.SDK_READY

组件已初始化,对应于 im sdk 的 TIM.EVENT.SDK_READY,此时才可以调用 sdk 的方法。

tls.on(TSL.EVENT.SDK_READY, async() => {
})

TSL.EVENT.ROOM_STATUS_CHANGE

房间状态改变,如主播上/下线、暂停等

tls.on(TSL.EVENT.ROOM_STATUS_CHANGE, async(data) => {
})

TSL.EVENT.JOIN_GROUP

有人加入群聊时触发

tls.on(TSL.EVENT.JOIN_GROUP, async(data) => {  const {nick,avatar,userID} = data})

TSL.EVENT.EXIT_GROUP

有人退出群聊时触发

tls.on(TSL.EVENT.EXIT_GROUP, async(data) => {  const {nick,avatar,userID} = data})

TSL.EVENT.NOTIFACATION

公告发生修改时触发

tls.on(TSL.EVENT.NOTIFACATION, async(data) => {  const { notification } = data})

TSL.EVENT.MESSAGE

有人发送群消息时触发说明自己发送的消息不会在这个回调中,自己发送的消息上屏请使用 sendMessage 方法返回的数据,这里与 im sdk 保持一致。

tls.on(TSL.EVENT.MESSAGE, async(data) => {  const { nick,avatar,message,userID } = data})

TSL.EVENT.LIKE

有人给主播点赞时触发

tls.on(TSL.EVENT.LIKE, async(data) => {  const { nick,avatar,value,userID } = data})

TSL.EVENT.SEND_GIFT

有人给主播送礼时触发

tls.on(TSL.EVENT.SEND_GIFT, async(data) => {  const { nick,avatar,value,userID } = data})

TSL.EVENT.ATTENT

有人关注主播时触发

tls.on(TSL.EVENT.ATTENT, async(data) => {  const { nick,avatar,value,userID } = data})

TSL.EVENT.BUY_GOODS

有人购买商品时触发

tls.on(TSL.EVENT.BUY_GOODS, async(data) => {  const { nick,avatar,value,userID } = data})

onUseCoupon
有人领取优惠券时触发

tls.on(TSL.EVENT.USE_COUPON, async(data) => {  const { nick,avatar,value,userID } = data})

TSL.EVENT.ADD_GOODS

该直播中所推荐的商品发生改变时触发

tls.on(TSL.EVENT.ADD_GOODS, async(data) => {  const { nick,avatar,value } = data})

TSL.EVENT.KICKED

账号其他地方登录时触发

tls.on(TSL.EVENT.KICKED, async() => {
})

TSL.EVENT.NETWORK_CHANGE

网络发生改变时触发

tls.on(TSL.EVENT.NETWORK_CHANGE, async() => {
})

TSL.EVENT.SDK_NOT_READY

sdk 不可用时触发

tls.on(TSL.EVENT.SDK_NOT_READY, async() => {
})

TSL.EVENT.PROFILE_UPDATE

个人资料发生修改时触发

tls.on(TSL.EVENT.PROFILE_UPDATE, async() => {
})

TSL.EVENT.ERROR

sdk 发生错误时触发

tls.on(TSL.EVENT.ERROR, async(error) => {
})

${type}

在调用自定义消息时触发的同名事件

tls.on(`${type}`, async(error) => {
})

组件方法

sendMessage(message:string)

方法说明:发送弹幕消息

/** * 发送弹幕消息,调用此方法时,群类所有人都可收到该文本消息 * @method sendMessage * @for TSL * @param msg 必填 弹幕消息 * @returns Promise */const {nick,avatar,message} = await tls.sendMessage(msg);

like(extension?:string)

方法说明:给主播点赞extension:点赞时的附加信息,如用户等级

/** * 发送点赞消息,调用此方法时,群内所有人都可收到该点赞消息 * @method like * @for TSL * @param extension 非必填 点赞时附加信息 * @returns Promise */const {nick,avatar} = await tls.like(extension);

gift(extension?:string)

方法说明:给主播送礼extension:送礼时的附加信息,如礼物信息等

/** * 发送送礼消息,调用此方法时,群内所有人都可收到该送礼消息 * @method gift * @for TSL * @param msg 非必填 送礼时附加信息 * @returns Promise */const {nick,avatar} = await tls.gift(extension);

exitRoom()

方法说明:退出直播间

/** * 退出房间,主播(群主)不可退出房间 * @method exitRoom * @for TSL * @param  * @returns Promise */const {status} = await tls.exitRoom();

joinRoom()

方法说明:加入直播间

/** * 加入房间 * @method joinRoom * @for TSL * @param  * @returns Promise */const {userInfo,groupInfo} = await tls.joinRoom();const { ownerInfo } = groupInfo;//获取主播信息const { userID,nick,avatar } = ownerInfo

getRoomInfo()

方法说明:获取当前房间信息

/** * 获取该聊天室的基本信息 * @method getRoomInfo * @for TSL * @param  * @returns Promise */const {...ownerInfo} = await tls.getRoomInfo();//ownerInfo 为主播相关信息const { userID,nick,avatar } = ownerInfo

attention()

方法说明:关注主播

/** * 关注主播 * @method attention * @for TSL * @param  * @returns Promise */const {nick,avatar} = await tls.attention();

cancelAttention()

方法说明:取消关注主播

/** * 取消关注 * @method cancelAttention * @for TSL * @param  * @returns Promise */const {nick,avatar} = await tls.cancelAttention();

destroy()

方法说明:销毁组件

/** * 销毁组件 * @method destroy * @for TSL * @param  * @returns Promise */tls.destroy(); 

sendCustomMsgAndEmitEvent(eventName: string, extension?: string)

方法说明:发送自定义消息,并触发和 type 类型的回调事件eventName:事件名extension:自定义消息发送者附带信息

/** * 发送自定义消息,并触发同名事件 * @method destroy * @for TSL * @param eventName:事件名,someExtension:附加信息 * @returns Promise */await tsl.sendCustomMsgAndEmitEvent('eventName','someExtension')

内置对象

TIM 通过 TIM.create 创建的对象,可使用 TIM 所有的方法。

事件

EVENTTLS.EVENT.SDK_READYTLS.EVENT.JOIN_GROUPTLS.EVENT.EXIT_GROUPTLS.EVENT.NOTIFACATIONTLS.EVENT.MESSAGETLS.EVENT.PROFILE_UPDATETLS.EVENT.ERRORTLS.EVENT.KICKEDTLS.EVENT.NETWORK_CHANGETLS.EVENT.SDK_NOT_READYTLS.EVENT.LIKETLS.EVENT.BUY_GOODSTLS.EVENT.USE_COUPONTLS.EVENT.SEND_GIFTTLS.EVENT.ATTENTTLS.EVENT.ADD_GOODS

对解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案